たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

【コンピュータサイエンスの独学】アーキテクチャ原則とマイクロサービス

   

アーキテクチャ原則とマイクロサービス

現在、大規模なシステム開発の主流となりつつあるマイクロサービスアーキテクチャですが、その源流となっているアーキテクチャ原則について説明します。

Small is Beautiful

・小さなプログラムはわかりやすい
・小さなプログラムは保守しやすい
・小さなプログラムはシステムリソースにやさしい
・小さなプログラムは他のツールと組み合わせやすい

この考え方はリファクタリングにも通じるものです。

リファクタリングは複雑なものをより単純な部品へと分解します。たとえば、実装済のアルゴリズムをよりわかりやすいものにおきかえたいとします。そのとき、できるだけメソッドは小さなものへと分解しておきます。なぜなら、大きく、複雑なアルゴリズムを置き換えることはきわめて困難であるからです。

プログラムは、ちいさな、単純な機能を組み合わせて、おおきな機能をつくります。

Make each program do one thing well

”1つのプログラムには 1つのことをうまくやらせる”

・ひとつのことに集中することでプログラムに不要な部分をなくせる
・他のプログラムと組み合わせて、より大きなことを実現する

疎結合

・コンポーネント間がお互いに影響をあたえず、よく定義されたインタフェースを通してのみやり取りをする
→ HTTPSにJSONをのせる(REST)、最近ならgRPC
・インタフェースと実装を分離する
・インタフェースqはオープンなプロトコルで定義する

これらの原則をうけて、近年の大規模アプリケーション開発手法として主流になりつつあるのが...

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャは、アプリケーションを独立してデプロイすることが可能な、小さなモジュール化されたサービスの集合として開発する方法です。

マイクロサービス化することの効用

・サービス毎に独立したデプロイサイクルを持つことができる。
・機能コンポーネントごとに独立した開発チーム
・個別のサービスがダウンしたとしても、全体に波及しないように障害ポイントを分離することができる
・サービスごとにテクノロジースタックを選択することができる(プログラミング言語、ミドルウェア、DB等)
・サービスごとに個別にスケール戦略を設定することができる
マイグレーションが容易になる(機能Aは基盤1、機能Bは基盤2...)

随時、追記予定です。

 - コンピュータサイエンス