マイクロサービスアーキテクチャ chapter1
マイクロサービスアーキテクチャのchapter1のメモ
1章
マイクロサービス
思想
最低限の
サービスごとにコードを分けよう
という思想- 分割の際に
凝集性
に着目して分割- 凝集性は、端的に言えば、変更する理由が同じものは集める、それ以外は分割するという考え
- どこまで分割するかが肝
- 分割の際に
単一のコードでサービスを運用する場合
- 技術の置き換えが大規模で大変
- コードのどこを修正すべきかわかりにくい
- バグの修正や実装が大変
- 技術の置き換えが大規模で大変
自律性
利点
技術特質性
- マイクロサービスでは、
サービスごとに異なった、それぞれのサービスに最も適したツールの選択が可能
- 新たな技術の取り入れが容易
- モノリシックなサービスと異なり、影響箇所が少ない
回復性
- 一部に障害が生じても、その部分を切り捨て、残りで継続可能
スケーリング
マイクロサービスでは、各サービスごとにスケーリングを行うことが可能であり、無駄が少ない
- i.e.) 大きなサービスのみ高価なハードウェアで、その他は安価なハードウェアで動作などが可能
tips
- スケーリングとは
- スケーリングとは、同じサービスを並列稼働し、LBなどでトラヒックの分散などを行うこと
- スケーリングとは
デプロイ
- デプロイのリスクを最小限に止めることが可能
開発チーム
- サービスごとに小牙なチームによる開発が行えるため効率が良い
合成可能性
- 一つのシステムが存在した際に、新たな利用方法(web, tablet app etc.)用の新たな機能を取り入れやすい
- 携わったことがないのでいまいちモノリシックでは難しいのかがよくわからん
交換可能にするための最適化
サービス指向アーキテクチャ
-
- 複数のサービスを連携させて一つのサービスを提供する構成
- 別デーモン
- サービス同士のやりとりは、ネットワークを介して行う
tips
マイクロサービスに類似した思想、技術
- tips
- ライブラリとモジュールの違い
- ライブラリ モジュールで検索すると、まともそうなURLのサイトは出てこなかったが、概ね以下の通りっぽい
- モジュールはスクリプトそのもの
- ライブラリはモジュールの集合体
- ライブラリとモジュールの違い
共有ライブラリ
- コードを目的ごとに対応した複数のライブラリに分割
- 利点
- ライブラリごとにチームを作って開発を行うことが可能
- 欠点
- 同じプラットフォームで動作させなくてはならない(同じ開発環境?verの統一等のことか?)
- システムの各部を独立してスケーリングできない
- 新たなライブラリをデプロイする場合、全てデプロイし直さなければならない
- 組織内で用いる分には問題ないが、サービスのためのシステムで取り扱う場合は注意が必要
モジュール
- コードを目的ごとに対応した複数のモジュール(スクリプト)に分割
- 実行中のプロセスにも、プロセスを止めずにモジュールのデプロイが可能
欠点
- 分散システムで新たな問題が生じることが多々ある
- cap定理や分散トランザクションなどの問題が生じる