Chatwork Creator's Note

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

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

読者になる

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
続きを読む

Chatwork のプロダクトフェーズと技術選定の流れ

こんにちは!
Chatwork 株式会社のプロダクトマネージャー (PM)、宮下 (@ryugoo_) です。
2013 年にモバイルアプリエンジニアとして入社し、 2014 年に Android 専任になり、 2019 年からは PM に転向してそろそろ 2 年になろうとしています。

さて、今回はエンジニアから PM になった私から見た、 Chatwork の技術選定の流れの変化について話してみようと思います。

f:id:cw-miyashita:20201129204458p:plain
技術選定の歴史

  • 2013 年 - PMF を目指すために
  • 2014 〜 2016 年 - 技術的課題を解決するために
  • 2017 〜 2020 年 - ユーザー影響を最小化するために
  • これから - 攻めた技術選定を、ユーザーのために
続きを読む

PHPのレジェンドシステムをEC2からKubernetesに移行する話 その4 〜Kubernetesクラスタの更新戦略に合わせたアプリケーションの移行戦術〜

こんにちは!SRE部のcw-ozakiです。

creators-note.chatwork.com creators-note.chatwork.com creators-note.chatwork.com

今回はその3の続きで、Kubernetesクラスタの更新戦略に合わせてアプリケーションをどのようにして、クラスタを移行していくのか戦術を考えていきます。

続きを読む

品質管理担当者としてSonarCloudさんがジョインしました!

こんにちは。都志(@louvre2489)です。

突然ですが、みなさんの開発/保守しているシステムのソースコードは読みやすいですか?それとも読みにくいですか?

自信を持って「読みやすいです!」と答えたいところですが、「う〜ん・・・」となってしまう方は多いのではないでしょうか?

私たちも同様の悩みを抱えています。ソースコードはどれだけ責務分割を意識して丁寧に書いても、長年の開発/保守の中で徐々に複雑化し、読みにくくなっていってしまうと思います。

そのような悩みを抱える中で、Chatworkでは全社的にSonarCloudを導入することにしました。まだ導入したばかりなので手探りで運用している点もありますが、本ブログではChatworkでのSonarCloud運用事例をご紹介したいと思います。

「SonarCloud(または後述するSonarQube)」は日本語の情報も少なく、決して馴染みのあるツールではないと思いますので、本ブログを通してSonarCloudのメリットを知っていただいて導入検討のきっかけになれば、と思います。

続きを読む