この用語をシェア
概要・定義
マイクロサービス(Microservices)は、アプリケーションを小さな独立したサービスに分割し、それぞれが独立してデプロイ・運用される分散システムアーキテクチャです。各サービスは特定のビジネス機能を担当し、軽量なAPI(通常はHTTP/REST)で他のサービスと通信します。
従来のモノリシック(単一構成)アーキテクチャに対するアプローチとして、Netflix、Amazon、Uberなどの大手企業が採用し、2010年代中期から急速に普及しました。各サービスは独立してスケールでき、異なる技術スタックを使用することも可能で、大規模で複雑なシステムの開発・運用に適しています。
主要な特徴・利点
1. 独立したデプロイメント
各サービスは独立してデプロイ・リリースできるため、システム全体を停止することなく、個別の機能を更新できます。
2. 技術多様性
各サービスに最適な技術スタック(プログラミング言語、データベース、フレームワーク)を選択できます。
3. 障害分離
一つのサービスで障害が発生しても、他のサービスへの影響を最小限に抑えることができます。
4. スケーラビリティ
負荷に応じて、特定のサービスのみを水平スケールできるため、リソースの効率的な利用が可能です。
5. 開発チームの独立性
各サービスを異なるチームが開発・運用できるため、組織の拡張性が向上します。
マイクロサービスの原則
1. 単一責任の原則
各サービスは特定のビジネス機能に焦点を当て、明確な責任範囲を持ちます。
2. 分散データ管理
各サービスが独自のデータベースを持ち、直接的なデータベース共有は避けます。
3. 障害に対する設計
サービス間の通信障害を前提とし、リトライ、サーキットブレーカー、タイムアウトなどの機能を実装します。
4. 自動化の重要性
多数のサービスを効率的に管理するため、デプロイメント、モニタリング、テストの自動化が必須です。
実装アーキテクチャ例
ECサイトのマイクロサービス分割例
- User Service: ユーザー管理・認証
- Product Service: 商品カタログ管理
- Cart Service: ショッピングカート機能
- Order Service: 注文処理
- Payment Service: 決済処理
- Notification Service: 通知・メール送信
- Inventory Service: 在庫管理
API Gateway パターン
# API Gateway設定例(Kong)
services:
- name: user-service
url: http://user-service:3000
routes:
- name: user-route
paths:
- /api/users
- name: product-service
url: http://product-service:3001
routes:
- name: product-route
paths:
- /api/products
- name: order-service
url: http://order-service:3002
routes:
- name: order-route
paths:
- /api/orders