はじめに
・非エンジニアである私が、少しでもエンジニアのことを知ってみようと思いインプットしたことをアウトプットしています。
・参考記事を自分用にまとめたものなので見苦しい部分もあるかと思いますがご了承ください。
・補足等あればコメント頂けると嬉しいです(頑張って理解します)
マイクロサービスとは
・複数の規模の小さなサービスを組み合わせてひとつの大きなアプリケーションを構成する、ソフトウェア開発の技法のひとつ
・明確な定義は無い
・従来:「全ての機能がまとまったひとつの大きな塊」としてソフトウェアを設計することが多かった
・マイクロサービス:「まず機能を分解していき、小さなサービスをつくる。それらを組み合わせることでひとつの大きなソフトウェアを構成する」という考え方
・それぞれのサービスはネットワークを介して行われる
マイクロサービスのメリット
新しい技術を容易に採用できること
・各々のサービスはネットワークを介してそれぞれが公開したインターフェイスを呼び合うだけで、それ以外の依存関係は無い
⇒ それぞれのサービスが全く異なる技術を採用することが出来る
・技術的に自由である
⇒ チーム毎で自由に技術を採用することが出来る
俊敏性がある
・小さくひとつの機能に特化したサービスが開発できる
⇒ 小規模の独立チームで開発が行える(小回りが効く)
柔軟性のあるスケーリングが可能
・システム全体ではなく、必要な部分だけを対象としてスケーリング(処理能力の調整)することができる
マイクロサービスのデメリット
関わるマネージャーに幅広い知識と高度な技術力が求められる
・技術的に自由な分、色々なことを知っておかないとコントロール出来ない
・設計やテストの難易度も上がってしまう
関係性が複雑になるので管理が重要
・Aという業務にはE,F,Gのマイクロサービスを利用する、Bという業務にはE,H,Iのマイクロサービスを利用する、となると管理が大変になる
データ通信量が多いのでパフォーマンスが問題になるケースもある
・ネットが繋がっていない状態ではデータのやり取りが出来ない
・大容量のデータを送受信するときには時間がかかる
おわりに
「マイクロサービス化」を打ち出している企業は「比較的モダンな環境で開発ができる」というメッセージであることが分かりました。
さらにマイクロサービスを採用しているので、それを統括するマネージャークラスの方は一定メンバーをフォローできるだけの技術力があることも理解できました。
参考