アーキテクチャ (IT)バックエンド開発者

マイクロサービスアーキテクチャとは何ですか、それにはどのような利点と欠点がありますか?

Hintsage AIアシスタントで面接を突破

回答。

マイクロサービスアーキテクチャ は、アプリケーションが小さく、孤立したサービスから構成されるソフトウェアシステムを構築するアプローチであり、各サービスは特定のビジネス課題に対して責任を持ち、他のサービスとは独立して開発およびデプロイされます。

利点:

  • スケーラビリティ: 各サービスは独立してスケールできます。
  • 開発の独立性: 異なるチームが迅速に個別のサービスを開発できます。
  • 障害に対する耐性: 一つのサービスの障害が全体のシステムのクラッシュにはつながりません。

欠点:

  • 管理の複雑さ: 相互作用、監視、負荷分散の設定が必要です。
  • デプロイの複雑さ: 多数のサービスを調整するのは難しいです。
  • 通信コストの増加: サービスがネットワークを介して通信するため、遅延が増加し、信頼性のある統合が必要です。

Python (Flask)によるマイクロサービスのRESTスケッチの例:

from flask import Flask, jsonify app = Flask(__name__) @app.route('/user/<int:user_id>') def get_user(user_id): return jsonify({"user_id": user_id, "name": "Ivan"}) if __name__ == "__main__": app.run(port=5001)

重要な特徴:

  • 各サービスは独立したアプリケーションです。
  • 異なるサービスのために新しい技術や言語を簡単に導入できます。
  • ネットワークインタラクションのエラーを考慮し、データの一貫性を確保する必要があります。

騙しの質問。

マイクロサービスは同じデータベースで動作できますか?

これはモノリスからの移行段階では許可されますが、各サービスが依存関係を最小限に抑え、開発の独立性を保つためにデータを独自に保持するべきという理念に反しています。

マイクロサービスアーキテクチャにDockerを使用する必要がありますか?

いいえ、Dockerは展開と隔離を容易にしますが、マイクロサービスはコンテナ化なしでも実現できます。例えば、仮想マシンや別の物理サーバーを使用することができます。

サービス間のAPI契約が壊れた場合、CI/CDパイプラインで全てが緑の場合はどうなりますか?

API契約の障害はサービス間のインタラクションにエラーを引き起こしますが、これは統合テストを通じてしか検出できません。CI/CDでの緑のビルドは、異なるサービスのバージョンが互換性があることを保証しません。