ちゃんなるぶろぐ

エンジニア5年生🧑‍💻 オライリーとにらめっこする毎日。

【10分でわかる💻💻💻】マイクロサービスアーキテクチャ〜ざっくり概要だけ〜

どうも、ちゃんなるです🐻

職場でここ数年、巨大なモノリシックアプリケーションのマイクロサービス化が進められています。

ですが私はその作業に関わってなく、マイクロサービスの知識があまりありません…。

なので、今回「マイクロサービスアーキテクチャをざっくりと紹介します🖐️

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

マイクロサービスアーキテクチャは、アプリケーションを小さな独立したサービスに分割するアプリケーションアーキテクチャのひとつです。

アプリケーションの柔軟性・拡張性・保守性の向上が目的です。

各サービスは、独自のプロセスとデータストアを持ち、APIを介して相互通信します📡 また、サービスが独立しているため個別に開発・デプロイ・スケーリング・保守することができます👏

マイクロサービスアーキテクチャの基本概念と設計原則

対比されるアーキテクチャ「モノリシックアーキテクチャ

大きな単一機能を持ち、​単一の塊で構成されているため、​システムやソフトウェアが1つのモジュールでできており、​分割されていない設計のことを指します​。

メリットは、​​システム全体が1つのモジュールで構成されているため、​​システム全体を把握しやすく、​​開発や運用が比較的簡単であることです。​​また、​​あらゆるサポートを一元的に提供できるため、​​問題が発生した場合に対処しやすい場合もあります。

​​デメリットは、​​システムの一部を変更する際、​​全体を修正・テストする必要が生じることで、​システムの規模が大きくなるほど​開発速度の低下が問題として取り挙げられます。

単一責任原則

各マイクロサービスは、1つの責任のみを持つように設計する必要があります。

これにより、サービスが容易に理解、開発、テスト、デプロイメントされることが可能になります。

※下記がわかりやすいと感じました

qiita.com

ドメイン駆動設計

ドメイン駆動開発(DDD)は、​​ユーザーが従事する業務に合わせてソフトウェアを開発する手法であり、​​ユーザーの業務知識をコードに反映させることができます。*1

このDDDは、マイクロサービスの境界を明確に定義するのに役立ちます。

障壁の高いコンポーネント設計

マイクロサービスは、内部実装の詳細をサービス自身の外側に対して隠蔽し、明確に定義されたインターフェース(例えばHTTP APIを通じてのみ他のサービスと通信するという点が非常に重要です。

これにより、各サービスが独立して進化し、互いに影響を与えずに変更できます。

RESTful APIとの関連性

マイクロサービス間の通信には、通常RESTful APIが使用されます。

RESTful APIは、HTTPプロトコルを使用してリソースにアクセスする方法であり、マイクロサービス間の連携をHTTP通信で行うことが一般的です。

※RESTful APIについての詳細は省略します。RESTful APIの満たすべき条件は下記サイトを見てみて下さい。

restfulapi.net

マイクロサービスアーキテクチャのメリットとデメリット

メリット:スケーラビリティと柔軟性の向上

各サービスは独立してデプロイおよびスケールできるため、システム全体のパフォーマンスと可用性が向上します。

メリット:独立したチームでの開発

各サービスが独立して開発およびデプロイされるため、サービスとチームを一意に結びつけることでフルサイクル開発化*2に繋がり、自律的な開発チームが築ける可能性があります。

これにより、開発サイクルが短縮され、より迅速に機能を市場に投入することができます。

デメリット:複雑さの増加と運用コスト

マイクロサービスアーキテクチャのデメリットは、システムの複雑さが増加し、運用コストが高くなることです。

サービス間の通信、データ管理、セキュリティ、および監視など、多くの側面で追加の調整が必要となります。 ただし、適切なツールとプロセスを用いて運用管理を行うことで、これらの課題を軽減することが可能です。

まとめ

マイクロサービスアーキテクチャは、スケーラビリティ、柔軟性、および独立したチームでの開発を促進する一方で、複雑さや運用コストが増加することが挙げられます。

適切な設計原則、実装手法、および運用管理を用いることで、マイクロサービスアーキテクチャを効果的に活用し、ビジネスの成長を促進することができます。

参考文献

martinfowler.com

cloud.google.com

www.splunk.com

knowledge.sakura.ad.jp

and-engineer.com

mercart.jp