マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
2017年月31日開催されたAWS Dev Day Tokyo 2017で「〜マイクロサービスを設計する全ての開発者に送る〜クラウド時代のマイクロサービス設計徹底解説!」という講演をしました。
諸般の事情でタイトルは煽り気味ですが、40分しかないのに徹底解説というのもあれなので僕としては「マイクロサービス化設計入門 」ぐらいの雰囲気です。マイクロサービス化にむけて設計をする場合に気にすべき点について整理をしています。資料はこちら。
巨大なシステムであってもマイクロサービス化によって柔軟な変更が可能になります。ただし、既存のモノリシックなシステムから品質方針の変更が必要になります。
モノリシック
- 単一システム内で不整合を発生させない
- 障害を発生させない
マイクロサービス
- 複数サービス間で不整合が発生する前提で頻度やリカバリ方式を検討する
- 障害が発生しても影響を一部に抑えてシステム全体をダウンさせない
講演後のQAでも、ここらへんの進め方について「ビジネス部門に不整合発生をどうやって納得してもらうか」という質問をいただきました。
回答としては「サービス分割自体は適切に検討した上で、サービス間の不整合の発生を前提として、その『発生回数を減らす』『リカバリを自動化する』といった方式についてコストを提示していくしかない」になります。サービスを分割する以上、技術的限界もあって完全に不整合を排除することはできません。この割り切りがうまくできるほどマイクロサービス化したメリットが高くなります。
何かを得れば、何かを失う。
そして何ものをも失わずに次のものを手に入れることはできない。
とは小説家 開高健の名言ですが、まさにその通りなのです。
ここら辺を掘り下げる話も、どこかでしてみたいですね。
2017/6/15追記。動画が公開されました。