Mar
5
第6回Reactive System Meetup in 西新宿
Chatwork×TIS のリアクティブシステム
Organizing : Chatwork株式会社、TIS株式会社
Registration info |
一般 Free
FCFS
LT Free
FCFS
|
---|---|
参加者への情報 |
(参加者と発表者のみに公開されます)
|
Description
Chatwork × TIS のリアクティブシステム
リアクティブシステムをテーマにした勉強会、今回はAkkaを中核にしたリアクティブシステムの実装を実戦投入しているChatworkとTISがそれぞれのリアクティブ事情についてお話します。
TISでは、リアクティブシステムのアーキテクチャを羅針盤として『 Lerna 』という高可用性と高スループットが求められるシステムを構築するためのソフトウェアスタックを開発しました。Lernaは既にミッションクリティカルなサービスに適用しており、そのアーキテクチャはOSSとして Github と Fintan(TISのノウハウ公開サイト) に公開しています。 今回はそのアーキテクチャの全体像と、より高い可用性を求め TIS が開発している akka-entity-replication というライブラリについてご紹介します。
Chatworkでは2016年末にメッセージングシステムを刷新しました。(詳しくはHistory of Falcon, the way to production releaseを参照)
その際に注目したアーキテクチャは高い非機能要件に対応できるCQRS+Event Sourcingシステムでした。具体的にはAkkaを中心としてKafka, HBase, Kubernetesなどをリアクティブシステムを実現しています。(詳しくはChatWorkの新メッセージングシステムを支える技術を参照)
2021年以降は今後スケーラビリティを担保していくために、Akka Clusterを使ったCQRS+Event Sourcingシステムへの移行を計画しています。今回ChatworkがAkkaに注目した理由と、Akka Clusterでどう変わるのかについて解説したいと思います。
リアクティブ・システムとは
リアクティブ・システムは、メッセージ駆動のアーキテクチャによりユーザーの要求に可能な限り迅速にレスポンスするシステムです。高負荷状況や問題が検出された時でも応答時間を一定水準に保ち、部分的な障害が発生した時にもシステム全体を危険にさらすことなく回復させます。(リアクティブ宣言もご参照下さい。)
開催概要
- 日時
- 2021年3月5日(金) 19:00 〜 22:30
- 18:30 オープン、21:20 より交流会
- 会場
- Zoom ※参加者にID/PWをご連絡致します。
- 主催
- Chatwork株式会社、TIS株式会社
- 参加費
- 無料
- その他
- 交流会は本編終了後にZoomにて行います。講演者や他の参加者との交流をお楽しみください
タイムテーブル
時間 | 内容 |
---|---|
18:30~ | Zoomオープン |
19:00~ | オープニング |
19:05~ | 可用性を突き詰めたリアクティブシステム『Lerna』 TIS 前出 祐吾(@yugolf) |
19:35~ | ステートフルなアプリケーションのダウンタイムを 10 秒以下にすることを目指して TIS 根来 和輝(@negokaz) |
20:05~ | 休憩 |
20:15~ | Chatwork で Akka をどうつかっているのか、なぜつかっているのか Chatwork 林 大介(hayasshi_) |
20:45~ | リアクティブシステムとCQRS/ESで実現するChatwork新アーキテクチャについて Chatwork 加藤 潤一(j5ik2o) |
21:15~ | クロージング |
21:20~ | 交流会(ネットワーキング)、LT |
22:30 | 撤収 |
※現在調整中につき内容が変更になる可能性がございますので、ご了承下さい。
講演内容
可用性を突き詰めたリアクティブシステム『Lerna』 (TIS 前出 祐吾)
リアクティブシステムってどう作ればいいの?という方へ向け、1つのリファレンスアーキテクチャとして「Lerna」を公開しました。
アプリケーションはCQRS+イベントソーシングのモデルを適用し、コマンドサイドの可用性にこだわり、Akka Clusterでスケーラブルかつ障害に強いアーキテクチャ採用しています。アプリケーションのみならず、WEB層/DB層も含めすべてのレイヤがサーバーはダウンすることを前提に如何に早く復旧させるかを追求したアーキテクチャとなっています。
本セッションでは、リアクティブ宣言 を羅針盤として構築した「Lerna」の全体像をご紹介します。
ステートフルなアプリケーションのダウンタイムを 10 秒以下にすることを目指して (TIS 根来 和輝)
Lerna では Akka という並行・分散処理の実装をサポートするツールキットを用いてアプリケーションを構築します。Akka で強い一貫性・耐障害性・スケーラビリティが求められるステートフルなアプリケーションを構築する場合は Akka Persistence、Akka Cluster Sharding といった機能を用います。 これらの機能を用いて決済などの書き込みが主となるアプリケーションを構築すると、一部サーバーがクラッシュしたりネットワークに問題が生じた際、通常数十秒程度のダウンタイム(ユーザーの一部がサービスを利用できない状態)が発生します。
私たちはこのダウンタイムによるユーザー影響を極小化するため、ステートフルなアプリケーションを構築する機能を備えながらも、障害からの復旧をより高速に行う akka-entity-replication という Akka の拡張機能を開発しています。
このセッションでは、Akka Persistence や Akka Cluster Sharding ではなぜ障害時に数十秒のダウンタイムが発生するのか、そのダウンタイムを解決するために akka-entity-replication ではどういうアプローチをとったのかをご紹介します。
Chatwork で Akka をどうつかっているのか、なぜつかっているのか (Chatwork 林 大介)
Akka には、Cluster や Cluster Sharding 以外にも、アプリケーションの信頼性を高める様々なツールがあります。
Chatwork において、それらのツールを、どこで、どのような目的で利用しているか、実際のケースをもとにご紹介します。
リアクティブシステムとCQRS/ESで実現するChatwork新アーキテクチャについて (Chatwork 加藤 潤一)
ChatworkではリアクティブシステムとCQRS/ESを反映した次期アーキテクチャを構想しています。まだ構想段階ではありますが、なぜそれらを採用するのかメリット・デメリットも含めてご説明します。
LT
交流会LTも予定していますので、LT枠での登録もお待ちしております。 テーマはリアクティブに関連すればなんでもOKです。
発表者 | テーマ |
---|---|
スタンバイ株式会社 池田 健虎(@taket0ra1) | Classic ActorからTyped Actor への移行について |
TIS株式会社 小山淳也(KO_YAmajun) | Karate-Gatlingによる負荷テストをsbt経由でお手軽に利用しよう Qiita |
連絡先
ご質問等は、「イベントへのお問い合わせ」から、または、Twitterにて @yugolf もしくは @negokaz までご連絡ください。
ハッシュタグ
このイベントのハッシュタグは #reactive_shinjuku です。