Chatwork Creator's Note

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

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

読者になる

あなたの知らない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
続きを読む

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クラスタの更新戦略に合わせてアプリケーションをどのようにして、クラスタを移行していくのか戦術を考えていきます。

続きを読む