Chatwork Creator's Note

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

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

読者になる

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

こんにちは。門田 ( @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の作成タイミングで処理が詰まった
  • まとめ
続きを読む

検証中の新しいアーキテクチャをご紹介します!!

この記事は Chatwork Advent Calendar 2020 2日目の記事です。
前日はプロダクトマネージャー宮下の「SaaS エンジニアのキャリアパスとしてのプロダクトマネージャー」でした。


全国のエンジニアの皆さん、こんにちは。
コアテクノロジー開発部 Scalaエンジニア の 辻( @crossroad0201 ) です。

2020年5月にChatworkに入社して気がつけばはや半年... Creator's Note には初投稿となります!!

この記事では、私も参加しているChatworkのアーキテクチャ刷新プロジェクトで現在検討している内容についてご紹介したいと思います。

  • なぜ今、アーキテクチャを刷新するのか
  • 検討している主要技術
    • モジュラモノリスとマイクロサービスアーキテクチャ
    • リアクティブシステム
    • ドメイン駆動設計
    • イベントソーシング+CQRS
  • これからの取り組み
  • まとめ

なお、ここでご紹介する内容はまだ検討、設計、プロトタイピング、テスト、検証...を繰り返している段階ですので、まだ実際のプロダクトで採用されているわけではないことをご了承ください。

続きを読む

Migrating our PHP Legend System from EC2 to Kubernetes, Part 4: Application Migration Tactics Matched to Kubernetes Cluster Update Strategy

Hello! I’m cw-ozaki, and I work in the SRE department.

Continuing on from part three, I’d like to consider how to migrate applications to new clusters in line with the Kubernetes cluster update strategy in this installment.

creators-note.chatwork.com

creators-note.chatwork.com

creators-note.chatwork.com

  • Simple summary of the last article
  • Current framework at Chatwork
  • 1. Route53 -> CloudFront
  • 2. CloudFront -> ALB
  • 3. ALB Target Group
  • 4. Kubernetes
  • How do you create ALB and Route53 weighted records?
  • Summary
続きを読む