🌊

開発エンジニアなら知らなきゃヤバイ!マイクロサービスとは何?

2024/05/08に公開1

はじめに

マイクロサービスは、大きなプログラムの中で、小さな部品に分けて動作するシステムを作ることです。各サービスは独自のDBを持っています。

レベルの高い企業の面談では、普通に質問される

以前月収100万円以上稼ぐ強強エンジニアの方からのアドバイスで、
「マイクロサービスを入れるメリットは?」
「弊社では、マイクロサービスを導入するメリットある?」

などマイクロサービスに関する質問はよくあるみたいです。
企業に導入するべきかなど、普段から考えていきましょう。

モノシリック

マイクロサービスではないアーキテクチャでモノシリックアーキテクチャーといいます。OSでは、分割されていない1つのモジュールで構成されたアプリケーションの構造です。

https://aws.amazon.com/jp/compare/the-difference-between-monolithic-and-microservices-architecture/

https://www.atlassian.com/ja/microservices/microservices-architecture/microservices-vs-monolith

具体例

受講生や講師、コンテンツを管理するようなe-learningの教育システムを例にだしてみます。

  • モノシリックアーキテクチャーマイクロサービスアーキテクチャーを比較
    絵が下手ですみません。(苦笑)

IMG_3706.jpeg

以下の資料を参考にして書きました。

https://qiita.com/shinkai_/items/0fd5d72b6a584c16a8ec

マイクロサービスはAPIで連携する

マイクロサービスはAPIでシステム間の連携をします。

image.png

引用 https://qiita.com/shinkai_/items/0fd5d72b6a584c16a8ec

マイクロサービスのメリット

1特定のサービスに対して、変更、改修などができる(システム全体の変更が不要)

2.開発チームが各サービスを独立して開発できることによって、開発者は自身の担当範囲に特化し、スピードと効率性が向上(各サービスは独立して開発、デプロイ可能なので、一部の変更が他のサービスに影響を与えることが少ない)

3.各サービスごとに最適な言語や開発ツールを選択できる技術的自由がある

4.各サービスが独立しているため、一つのサービスの障害が他のサービスに影響を与えることが少ない

マイクロサービスのデメリット

1.サービスを適切に分割するためには、ビジネスの機能と境界を把握する必要

2.システムが複雑(トラブルシューティングが困難。仕様理解に工数がかかる)

3.サービスを適切に分割するためには、ビジネスの機能と境界を把握(ドメイン知識)が必要

4.大量のサービス間通信が必要な時に、大きなデータの通信がある場合、同期的な呼び出しが多い場合にはパフォーマンスの問題が生じる

5.異なるサービス間でセッション情報を共有する必要が生じる

6.開発、テストで工数がかかる

最後に

マイクロサービスを導入するにしろ、しないにしろ、メリットとデメリットを考えて
最適な判断をしていく必要がありそうですね。

資料

https://qiita.com/shinkai_/items/0fd5d72b6a584c16a8ec

Discussion

rakiraki

SEOでも役に立たないと思うのでモノシリックってTYPOは直したほうがいいかも。
モノリシックが正(AWSの記事もそう書いてあるし)
物知りじゃないって覚えると間違えなくなる(と思う