James Roperさん
- モノリシックなアプリをマイクロサービスに置き換える
- 気をつけるべき点を考慮できてないと元より悪くなってしまう
- lagomを1つの例としてどういった考慮が必要か話す
- サンプルをマイクロサービス化してみる
- model部分をサービス化してREST連携
- 一番シンプルなマイクロサービス化のしかた
- 可動部分が増えるので障害が増え一貫性が崩れやすくなる
- コンポーネント間のやりとりが同期的
- 一箇所が遅延すると全体が遅くなる
- model部分をサービス化してREST連携
- サーキットブレーカーを使う
- 障害が起きたサービスを切り離す
- 障害が起きている時にすぐにレスポンスを返せる
- 遅延してる処理をさばける時間を与える
- failure recoverry
- サービスの品質を落として障害を復旧させる
- graceful degration
- 生き残っている所だけでも使えるようにしておく
- サービスによって持っている状態が異なってしまう問題
- 非同期メッセージ
- イベントを永続化したシステムに合う
- メッセージとして送る
- kafkaのキューに入れる
- 復旧後に気づいて自己修復でいる
- kafkaを使う
- Akka Streamで処理する
- Denormalize
- 他サービスにとって必要な情報を重複保存
- あえて非正規化する
- scalabilityのため
- システムにとって重要な情報
- ビジネスにとって重要な情報
- まとめ
- マイクロサービスではそれぞれのサービスがなくなること前提に考えておかないと
- あるサービスが落ちた時にどうなるか考えておく
どんなフローになってるかも考慮しておく
https://jroper.github.io/microservices-architecture-scala-jp
Eugeneさん
developmentそのものをスケールさせる
- 10人が同時に開発しているならみんなでコンパイルしてデプロイしてで大丈夫
- でも1000人だとできない
- そこでマイクロサービス
- Bezos mandate
- http://homepages.dcc.ufmg.br/~mtov/pmcc/modularization.pdf