Chapter1 モノリシック地獄からの脱出
1.1 ゆっくりとした足取りによるモノリシック地獄への転落
- Big ball of mud (大きな泥だんご) パターン → データ指向アプリケーションデザイン(前回の書籍)の第1回参照
1.1.1 FTGOアプリケーションのアーキテクチャ
- FTGOのモデルはUberEats?
- ヘキサゴナルアーキテクチャ?
1.1.2 モノリシックアーキテクチャの利点
1.1.3 モノリシック地獄の実際
- 機能ブランチが機能しない件
- 同じコードベースをさわっているのでマージが大変
- 「マージが大変」という事態はあるか?
- svnのときは大変だった
- gitの場合はあまりないように思う。プルリクエスト/マージリクエストがあるので割と大丈夫
- 「同じコードベース」というのが問題なのでは。頻繁にコンフリクトが発生する可能性がある
1.2 本書がみなさんにとって意味を持つ理由
1.3 本書で学べること
1.4 マイクロサービスアーキテクチャで状況打開
- イリティ(-ility): 「-イリティ(-ility)」がサフィックスに付く語(例えば「メンテナンシビリティ(maintainability)」)の集合を指す。
- IPAの「非機能要件グレード」にも相当する考え方はあるが十分ではなく、実際の「-イリティ」は膨大であり、対象によって何を重視するかを検討する必要がある。
- IPAの「非機能要件グレード」をダウンロードして「グレード表」を眺めてみたが、小項目レベルだとかなりの数があったので、これでも不十分なのかとちょっと目が遠くなる。
1.4.1 スケールキューブとマイクロサービス
- 参加者の経験した事例として、APIのリクエストが1画面210あるようなケースがあった。
-
1.4.2 マイクロサービスはモジュール性の一形態
- そこでモノリシックでも(Java9以降の)Javaモジュールを採用すればw
1.4.3 個々のサービスは専用のデータベースを持つ
1.4.4 マイクロサービスアーキテクチャのFTGOアプリケーション
- WebUIの場合はAPIゲートウェイを使わないのか? (=何故各サービスのREST APIを直接叩いているのか?)
-
1.4.5 マイクロサービスアーキテクチャとSOAの比較
- SOAの比較は少々こじつけっぽい。
- SOA(というかSOAP?)は、規格自体はきっちりしているかもしれないが、過去の事例として、実装が微妙なケース(WSDLが無い、XMLの規格に正しく従っていない、など)もしばしばあった。
1.5 マイクロサービスアーキテクチャの利点と欠点
1.5.1 マイクロサービスアーキテクチャの利点
図1.8: サービスやサービスのリポジトリは独立しているが、サービス間で連携するとき、API情報の提供や取得はどうするのか?
図1.6にある顧客サービスが図1.8にない。(例示だから?)
UberEatsの場合、店と客が直接情報を共有していない。(店には客が誰だかわからない)
サービスをまたいでどこでも使うサービスはどのように扱うのか?
- 個々のサービスのテストは容易になるかもしれないが、サービス全体のテストはどのように行えばよいのか?
- APIが変わらなければ大丈夫なはず?
- データを共有しておらず、APIだけが公開されているから、そこまで大きな影響はないのでは?
いろいろ出ている不明点は後から出てきそう。
1.6 マイクロサービスアーキテクチャのパターン言語
1.6.1 マイクロサービスアーキテクチャは万能薬ではない
1.6.2 パターンとパターン言語
1.6.3 マイクロサービスアーキテクチャのパターン言語の概要
jwt: 「ジョット」と読むらしい。
- Sagaパターンとは?
-
1.7 マイクロサービスを越えて: プロセスと組織
1.7.1 ソフトウェア開発とデリバリー組織
ベロシティ ≒ 開発速度?
- 「Apache Verocity」というテンプレートエンジンがありました。
-
1.7.2 ソフトウェア開発とデリバリープロセス
1.7.3 マイクロサービスを受け入れる人々について考慮すべきこと
1.8 まとめ
- まず、組織をマイクロサービスに適応できる構成にする必要があるようにも読める。