Chatwork Creator's Note

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

Chatwork の Scala プロダクトとそれを支えるチーム その弐

これは Chatwork Advent Calendar 2020 / Scala Advent Calendar 2020 11日目の記事になります。

こんにちは。サーバーサイド開発部の Scala プロダクトを開発運用する部署でマネージャーをしている、 hayasshi です。

前回は、Chatwork で実際に稼働している Scala プロダクトを紹介しました。

creators-note.chatwork.com

今回は、それらをどのように開発し、運用しているのかについて、ご紹介したいと思います。

続きを読む

Chatwork の Scala プロダクトとそれを支えるチーム その壱

これは Chatwork Advent Calendar 2020 / Scala Advent Calendar 2020 10日目 の記事になります。

こんにちは。サーバーサイド開発部の Scala プロダクトを開発運用する部署でマネージャーをしている、 hayasshi です。

Chatwork は Scala を採用すると決めてから、約 6 年経ちました。
その中で、失敗もしながら、少しずつ Scala のシステム領域を広げてきました。

今回と次回の二記事にて、この 6 年で開発し、いま実際に稼働運用されている、 Chatwork の Scala プロダクトの紹介と、それを普段どのように開発運用しているかについて、書きたいと思います。

続きを読む

開発者全員が集まるイベント企画をした裏方の話

こんにちは。門田 ( @nottegra ) です。

この記事は Chatwork Advent Calendar 2020 の 9 日目の記事です。

先日、Chatwork のプロダクト開発メンバー全員が集まるイベントが開催されました。イベントの様子については Wantedly で記事を書きましたので是非ご覧になって下さい。

今回は、イベント開催の裏側、裏方の仕事についての話をしたいと思います。

  • はじまりの話
  • ヒアリングして見えた課題
  • よしイベント準備だ
  • 個人的な振り返り
  • 最後に
続きを読む

Akka HTTP で複数エンドポイントに共通するログを Routing DSL で実装

f:id:exoego:20201202215157p:plain

9月に入社しました、サーバーサイド開発部 Scala チームの立野(@exoego)です。
ふだんは長野県の古民家から週5で在宅勤務しています。

弊社 Chatwork では現在、HTTP ベースの製品開発に Scala を用いるときは Akka HTTP というモジュールを採用しています。
最近、担当製品にログを追加するにあたり、この Akka HTTP でのログ出力の仕組みを初めて使いました。

従来のログ出力に不満に思っていた点をいくつか解消できて、なかなかおもしろく感じました。
ただ、使うにあたって社内でもノウハウとしてまとまっておらず、国内外でもどう使ってるかを書いたブログ記事が見当たらず、少し困りました。
そんなわけで、社内外の役に立てばと書きたいと思います。

続きを読む

あなたの知らないScalaの世界~Scalaでコードゴルフ~

挨拶

初めまして、2020年6月に大学院を中退し*1新卒として入社した田尻(@lmdexpr)です。

人生は色々ですね。

今はサーバーサイド開発部(Scala)で元気に毎日Scalaを書いています。

その辺の経緯にも軽く*2触れているインタビュー記事はこちら ↓

compass.labbase.jp

さて、今回は「あなたの知らないScalaの世界」と銘打ちまして、Chatwork Advent Calendar 2020 / Scala Advent Calendar 2020 四日目の記事としたいと思います。

全く堅くない、業務とは無関係どころかしばらくチームメンバーに口を聞いてもらえないかもしれないような*3テクニックのお話です。

*1:不思議な歪みで実際に中退したのは9月の末日

*2:本当に軽く

*3:業務でそんなコードを書いていたらクビになってもおかしくないでしょうからこんなことを言っている場合ではありません

続きを読む

pt-online-schema-changeを用いたスキーマ変更 on Amazon Aurora MySQL

こんにちわ。id:cw-tomitaです。
この記事は、Chatwork Advent Calendar 2020 - Qiita の3日目の記事です。

早速ですが、皆さんはauto incrementなRDBのtableのidにはどのような型を利用されていますか? Chatworkでは多くのテーブルでint型が指定されているのですが、9年前にサービスを開始した時には想像もつかないくらいに多くのお客様に使っていただけるサービスへと成長した結果、int型なauto incrementのidを利用しているテーブルで、レコード数がintの上限を迎えそうなテーブルが複数現れ、どかっとまとめてALTER TABLEを実施するという2020年を代表する一大イベント(?)がありました。

今回は、その時に利用したpt-online-schema-changeというツールを使ってのALTER TABLEの実施に関して、記事を書きたいと思います。

  • tl;dr
  • pt-online-schema-change とは?
  • このツールにたどり着いた理由
    • 理由その1:Auroraをbinlog_format =off で運用するようになり、計3回の停止メンテナンスが必要
    • 理由その2:binlogでのレプリケーションのAuroraのバグを踏んだ
  • gh-ostとの比較
  • Chatworkでの実行例
    • step1. データ同期の開始 (オンライン)
    • step2. テーブルがっちゃんこ 〜 逆向きトリガーの作成 (停止メンテナンス中)
    • step3. 逆向きtriggerの削除 & 旧テーブルの削除 (オンライン)
    • おまけ. 本番実行時に発生した問題
      • step1のコマンド実行後、--critical-load に引っかかってデータ同期が停止
      • triggerの作成タイミングで処理が詰まった
  • まとめ
続きを読む