開発エンジニアなら知らなきゃヤバイ!マイクロサービスとは何?
はじめに
マイクロサービスは、大きなプログラムの中で、小さな部品に分けて動作するシステムを作ることです。各サービスは独自のDBを持っています。
レベルの高い企業の面談では、普通に質問される
以前月収100万円以上稼ぐ強強エンジニアの方からのアドバイスで、
「マイクロサービスを入れるメリットは?」
「弊社では、マイクロサービスを導入するメリットある?」
などマイクロサービスに関する質問はよくあるみたいです。
企業に導入するべきかなど、普段から考えていきましょう。
モノシリック
マイクロサービスではないアーキテクチャでモノシリックアーキテクチャーといいます。OSでは、分割されていない1つのモジュールで構成されたアプリケーションの構造です。
具体例
受講生や講師、コンテンツを管理するようなe-learningの教育システムを例にだしてみます。
-
モノシリックアーキテクチャーとマイクロサービスアーキテクチャーを比較
絵が下手ですみません。(苦笑)
以下の資料を参考にして書きました。
マイクロサービスはAPIで連携する
マイクロサービスはAPIでシステム間の連携をします。
マイクロサービスのメリット
1特定のサービスに対して、変更、改修などができる(システム全体の変更が不要)
2.開発チームが各サービスを独立して開発できることによって、開発者は自身の担当範囲に特化し、スピードと効率性が向上(各サービスは独立して開発、デプロイ可能なので、一部の変更が他のサービスに影響を与えることが少ない)
3.各サービスごとに最適な言語や開発ツールを選択できる技術的自由がある
4.各サービスが独立しているため、一つのサービスの障害が他のサービスに影響を与えることが少ない
マイクロサービスのデメリット
1.サービスを適切に分割するためには、ビジネスの機能と境界を把握する必要
2.システムが複雑(トラブルシューティングが困難。仕様理解に工数がかかる)
3.サービスを適切に分割するためには、ビジネスの機能と境界を把握(ドメイン知識)が必要
4.大量のサービス間通信が必要な時に、大きなデータの通信がある場合、同期的な呼び出しが多い場合にはパフォーマンスの問題が生じる
5.異なるサービス間でセッション情報を共有する必要が生じる。
6.開発、テストで工数がかかる
最後に
マイクロサービスを導入するにしろ、しないにしろ、メリットとデメリットを考えて
最適な判断をしていく必要がありそうですね。
資料
Discussion
SEOでも役に立たないと思うのでモノシリックってTYPOは直したほうがいいかも。
モノリシックが正(AWSの記事もそう書いてあるし)
物知りじゃないって覚えると間違えなくなる(と思う