
面接官:マイクロサービスについて説明してください。
私:マイクロサービスとは、単一のアプリケーションを、小さく独立した複数のサービスに分割するアーキテクチャスタイルです。各サービスは、特定のビジネス機能を実行し、軽量なメカニズム(通常はHTTPリクエストやメッセージキュー)を通じて相互に通信します。
以前のプロジェクトで、モノリシックなECサイトをマイクロサービス化する際に、商品管理、在庫管理、決済処理の3つのサービスに分割しました。
商品管理サービスは商品の登録・更新・削除、在庫管理サービスは在庫数の調整、決済処理サービスはクレジットカード決済や銀行振込などを担当します。
それぞれのサービスは、独立して開発・デプロイ・スケーリング可能になったため、開発速度が向上し、一部の障害が全体に影響を与えるリスクを軽減できました。
現役エンジニアによる深掘り解説
メリット
高い独立性: 各サービスは独立して開発、デプロイ、スケーリングできるため、特定のサービスに問題が発生しても、他のサービスに影響を与えにくいです。
技術の多様性: 各サービスは、最適な技術スタックを選択できます。例えば、商品管理サービスはNoSQLデータベースを使用し、決済処理サービスはトランザクション処理に強いRDBMSを使用するといった選択が可能です。
開発速度の向上: 小さなチームが独立して開発を進めることができるため、開発速度が向上します。
スケーラビリティの向上: 特定のサービスへの負荷が高まった場合、そのサービスだけをスケールアップすることができます。
デメリット
複雑性の増加: システム全体の複雑性が増します。サービス間の連携やデータ整合性の維持が難しくなります。
運用コストの増加: 複数のサービスを運用する必要があるため、インフラストラクチャや監視のコストが増加する可能性があります。
分散トレーシングの必要性: 問題が発生した場合の原因特定が難しくなるため、分散トレーシングなどのツールが必要になります。
一貫性維持の課題: 分散システムとなるため、データの一貫性を維持するための設計が重要になります。
⚠️ 面接突破のワンポイント
- マイクロサービス化の目的を明確に説明できるように準備しましょう。なぜマイクロサービスが必要だったのか、どのような課題を解決したかったのかを具体的に語ることが重要です。
- マイクロサービスアーキテクチャのメリット・デメリットを理解し、トレードオフを考慮した上で最適な選択肢であることを説明できるようにしましょう。


