天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

30分でわかるマイクロサービスアーキテクチャ 第2版 - Forkwell Library #17に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

これまで Forkwell のイベントで登壇されたエキスパートの方々は、先達が記した書籍から「気づき」を得て実践し、振り返り、再現性のある「学び」として身に付けていく中で、実績を築いてこられました。

しかし、日々限られた時間の中で知識や情報をアップデートし続けるのはそう簡単ではありません。 Forkwell Library では、著者・訳者・実践者らを登壇者として招き、そんな思いを抱えた開発者の皆さまが「学びのきっかけ」を得られる勉強会を目指します。

今回の第17回目では12月2日に第2版が発売された『マイクロサービスアーキテクチャ』を取り上げます。 2014年にThoughtworksのマーチン・ファウラーとジェームス・ルイスによって提唱された「マイクロサービス」は、いまではすっかり市民権を得て、さまざまな手法やツールが開発されています。本書ではマイクロサービスに「賛成」でも「反対」でもないという中立的な立場から、マイクロサービスの仕組み、特徴、長所、短所、課題を丁寧に説明しています。 また第1版が2016年に発売されてから約8年の時を経て出版された第2版は書籍の厚みも倍近くなり、この数年での「マイクロサービス」の進展が伺えます。 今回は監修を務めた佐藤 直生氏をお招きしてマイクロサービスの基礎から時代を経て、変化したことなどを伺って参ります。

会の様子

基調講演〜30分でわかるマイクロサービスアーキテクチャ 第2版〜

マイクロサービスにまつわるタイムライン

2011年-2012年...マイクロサービスの登場

2014年...マーチン・ファウラーのページにMicroServiceのページが登場

2015年-2016年...Building MicroService出版、日本語版マイクロサービスアーキテクチャが出版

2021年-2022年...Building MicroService第2版出版、日本語版マイクロサービスアーキテクチャ第2版が出版

というタイムラインが紹介されました。

1章の構成

基調講演では、一部の章の内容をざっくりと紹介してくれました。

...マイクロサービスとはなにか?がざっくりと紹介されている章だということでした。

  • 独立してリリースできるサービスやDDDでいうビジネスドメインによって分割ができるという話
  • サービスの話*1
  • サイズの話
  • 状態保有の話
  • モノリスなサービスとの比較
  • ストリームアラインドチームとの相性
  • マイクロサービスの利点
  • マイクロサービスが役立たない箇所

などが紹介されているそうです。

2章の構成(詳細は本を買ってほしいのでざっくり紹介)

マイクロサービスのモデリングが紹介されている章だということでした。

3章の構成(詳細は本を買ってほしいのでざっくり紹介)

モノリスの分割話として、ストラングラーフィグパターンをはじめとした手法などが紹介されているということでした。

4章の構成(詳細は本を買ってほしいのでざっくり紹介)

マイクロサービスのスタイル紹介として、同期/非同期の話やそれぞれのメリットデメリットが紹介されているということでした。

5章の構成(詳細は本を買ってほしいのでざっくり紹介)

マイクロサービスの通信の実装の話が紹介されているということでした。
互換性を維持しながらどのように技術探索をしていくのか?という話がされているそうです。

6章の構成(詳細は本を買ってほしいのでざっくり紹介)

RDD的な話やACIDトランザクションの話やサーガ全体のロールバックトリガーの話など、ワークフローの話がされているということでした。

7章の構成(詳細は本を買ってほしいのでざっくり紹介)

ビルドの話としてマイクロやモノリポといった話がされているということでした。

8章の構成(詳細は本を買ってほしいのでざっくり紹介)

スケーラビリティを考慮したデプロイの話や、IaCなどを活用した自動化の話がされているということでした。全体的に当たり前ではあるものの大切な話がされているということです。また、k8sよりはFaaSを第一選択肢としたほうがよいのではないか?という話もなされているそうです。

9章の構成(詳細は本を買ってほしいのでざっくり紹介)

難度が高いE2Eテストの話を中心に、テストの話が紹介されているそうです。

10章の構成(詳細は本を買ってほしいのでざっくり紹介)

Relation IDをはじめとしたメトリクスの話がされているということでした。

11章の構成(詳細は本を買ってほしいのでざっくり紹介)

パッチ適用の話や認証認可などセキュリティの話がされているということでした。

12章の構成(詳細は本を買ってほしいのでざっくり紹介)

障害が発生した際に1サービスが落ちた際にどのように回復していくのか?というレジリエンスの話が紹介されているということでした。

13章の構成(詳細は本を買ってほしいのでざっくり紹介)

マイクロサービスのスケールアップ/スケールアウトなどといったスケーリングの話が紹介されているということでした。

14章の構成(詳細は本を買ってほしいのでざっくり紹介)

ストリームアラインドチームで開発していく前提でどのようにUIを作っていくのかという話や、モバイル用のバックエンドを作るのか?というUI関連の話が出ているということでした。

15章の構成(詳細は本を買ってほしいのでざっくり紹介)

コンウェイの法則を前提に、組織構造の話が紹介されているということでした。

16章の構成(詳細は本を買ってほしいのでざっくり紹介)

アーキテクトのあり方をはじめとした、進化的アーキテクトの話が紹介されているということでした。

パネルトーク

最後はいつもどおりパネルトークがありました。以下、内容を常体で記載していきます。

GitLabなどをはじめモジュラモノリスを選定する企業も多いが、どのような部分が選定ポイントになるのか?

本書ではあまり突っ込んだいないが、まずは単一モノリスからはじまり、モジュラモノリスに次に行くのは正当な選択だと思う。
マイクロサービスはもさまざまな複雑性が絡むので、最初からマイクロサービスにしないことは重要。

モノリス回帰はあるか?

エンジニアとしては新しいもの好きな部分があるので、最初は少し流行っていた記憶があるが、マイクロサービスに行くのが早すぎた事例というのは多いと思う。
適用範囲が思ったよりも限定的というのもある。

最初からマイクロサービスでやる開発はあるのか?

ない。人数で言えば100人規模の開発だったり、システムが習熟しはじめたタイミングでの導入になると思える。

マイクロサービスはリーズナブルな形に収束していくのか?

そうだと思う。今は低迷期にあたると感じている。

マイクロサービスとして開発する時にどの程度細かくサービスを分割するか設計するシーンがあると思うが、このときに気をつけるポイントはなにか?

凝集度/結合度などを中心にモジュール化で気をつけるべきことを素直に注意する。

マイクロソフトではマイクロサービスを使っているのか?

内部の話などであまり公には外に出せないということですが、ばりばり使っているということでした。

会全体を通した感想

パネルトークやイベントの反応から、なかなかマイクロサービスに対して風当たりは強くなっているのを感じましたが、マイクロサービスに限らずアーキテクチャを考える上で気をつけるべき話も色々紹介されていて、面白かったです。

分厚い本ということで、30分では終わらず一時間以上かかっていたのは笑いました。

*1:何かしらの機能をカプセル化するという意味