マイクロサービスは、小さな独立した複数のサービスでソフトウェアを構成する、ソフトウェア開発に対するアーキテクチャ的、組織的アプローチです。各サービスは、正確に定義された API を通じてやり取りします。これらのサービスは、小規模の自己完結できるチームが所有します。
マイクロサービスアーキテクチャはアプリケーションのスケーリングを容易にし、開発期間を短縮するため、イノベーションの実現と新機能の市場投入の加速につながります。
モノリシックアーキテクチャでは、プロセスすべてが固く結合され、単一のサービスとして実行されます。したがって、アプリケーションのプロセスのいずれか 1 つでも需要のスパイクが生じた場合、アーキテクチャ全体をスケールする必要が生じます。モノリシックアプリケーションの機能を追加または改善すると、コードベースが大きくなるにつれて複雑さが増大します。この複雑さにより、実験は制限され、新しいアイディアの実装は困難になります。モノリシックアーキテクチャはアプリケーションの可用性にリスクをもたらします。多くのプロセスが依存的で固く結合されている状態では、どれか 1 つでもプロセスに障害が発生した場合、その影響が大きくなるためです。
マイクロサービスアーキテクチャでは、アプリケーションは独立した複数のコンポーネントとして構築されます。各コンポーネントは、1 つのサービスとして個別にアプリケーションプロセスを実行します。これらのサービスは、軽量の API を使用した、正確に定義されたインターフェイスを通じてやり取りします。サービスはビジネス機能向けに構築され、各サービスが単一の機能を実行します。サービスが独立して実行されるため、各サービスを更新、デプロイ、スケールして、アプリケーションの特定の機能に関する要求に応えることができます。
モノリシックアプリケーションをマイクロサービスに分割する
マイクロサービスアーキテクチャの各コンポーネントサービスは、他のサービスの機能に影響を与えることなく開発、デプロイ、実行、スケールできます。各サービスは他のサービスとコードまたは実装を共有する必要が一切ありません。コンポーネント間の通信はすべて正確に定義された API を通じて行われます。
各サービスは一連の機能のために設計され、特定の問題を解決することにフォーカスしています。もし開発者が経時的にコードをサービスに追加してそのサービスが複雑になる場合には、サービスをより小さなサービスに分割できるます。
マイクロサービスでは、サービスの所有権を持つ小規模で独立した複数のチームからなる組織が発展します。チームは、小規模でよく理解されたコンテキストにおいて行動し、より自主的かつより迅速に仕事に取り組む権限を与えられます。これにより、開発サイクルが短縮されます。組織の総スループットを大いに有効活用できます。
マイクロサービスを利用すると、サポートするアプリケーション機能の要求に応じて各サービスを個別にスケールできます。これによりチームは、インフラストラクチャに対するニーズの適正化、各機能にかかるコストの精確な評価、サービスに対する需要のスパイクが生じた場合の可用性の維持が可能です。
マイクロサービスでは、継続的インテグレーションと継続的デリバリーが実現可能です。容易に新しいアイディアを試したり、上手くいかなかった場合にロールバックしたりできます。失敗時のコストが抑えられるため、活発に実験を行えるほか、コードの更新が容易になり、新機能の市場投入を加速できます。
マイクロサービスアーキテクチャは、「フリーサイズ」のアプローチを踏襲しません。チームには、特定の問題を解決するための最適なツールを選ぶ自由があります。その結果、マイクロサービスを構築するチームは、各ジョブに最適のツールを選択可能です。
ソフトウェアを小さな正確に定義されたモジュールに分割すると、チームは複数の目的に合わせた機能を使用できます。ある機能のために記述されたサービスは、別の機能のために構成要素として使用できます。そのため、アプリケーションはそれ自体から独立でき、開発者は一からコードを記述することなく新機能を作成できます。
サービスの独立性により、アプリケーションの耐障害性が向上します。モノリシックアーキテクチャでは、1 つのコンポーネントに障害が発生すると、アプリケーション全体に障害が及ぶおそれがあります。マイクロサービスでは、アプリケーションの機能性を低下させてアプリケーション全体のクラッシュを回避することにより、全体的なサービス障害に対応します。
AWS は、規模、負荷、または複雑さにかかわらず、あらゆるアプリケーションアーキテクチャをサポートする構成要素を統合させました。
マイクロサービス向けの処理能力。
スケーラブルで高耐久かつ安全なデータストレージ。
Amazon S3
Amazon S3 を使用すると、開発者や IT チームは、規模の大小に関わらず、すべてのデータで、信頼性に優れ、安全で、スケーラブルなオブジェクトストレージを利用できます。 詳細 »
Amazon DynamoDB
規模を問わずわずか数ミリ秒単位の安定したレイテンシーを必要とするすべてのアプリケーションに対応した、高速かつ柔軟性のある完全マネージド NoSQL データベースサービスです。 詳細 »
Amazon RDS
クラウド内でリレーショナルデータベースを簡単に設定、運用、およびスケールできます。Oracle、Microsoft SQL Server、PostgreSQL、MySQL、MariaDB といったなじみのある 6 つのデータベースエンジンから使用するものを選択できます。 詳細 »
Amazon Aurora
リレーショナルデータベースエンジンは、高性能の商用データベースの速度や信頼性と、オープンソースデータベースのシンプルさや費用対効果を兼ね備えています。標準の MySQL を同じハードウェアで実行した場合と比較して、最大 5 倍のスループットを実現します。 詳細 »
Remind は、Amazon ECS でマイクロサービス向けの PaaS を構築することで、アプリケーションの応答時間を 200% 短縮しました。
詳細 »
高スループットとミリ秒未満のレイテンシーのネットワーキングサービス
Application Load Balancer
Application Load Balancer は、HTTP および HTTPS トラフィックをアプリケーションレイヤー (レベル 7) で負荷分散し、マイクロサービスやコンテナを含む最新のアプリケーションアーキテクチャを対象とした高度なリクエストルーティングを提供します。
Network Load Balancer
Network Load Balancer は、ネットワーク接続レイヤー (レベル 4) で動作する高性能ロードバランシングを提供します。これにより、IP プロトコルデータに基づいてマイクロサービスに接続をルーティングできるようになります。Network Load Balancer は、極めて低いレイテンシーを維持しながら、1 秒に何百万件ものリクエストを処理することができます。
Airtime では、AWS で実行するマイクロサービスとしてアプリケーションを再設計した後、より高速で信頼性が高く、遅延のないソーシャルエクスペリエンスを提供しています。 詳細 »
サービスのパフォーマンスとリソース使用率をモニタリングします。トラブルシューティングと最適化のために、複雑なアーキテクチャ全体をトレースします。
Amazon ECS でホストされているマイクロサービスを使用することで、Shippable は顧客に機能を提供することに専念できるようになり、機能のデプロイ期間を週に 1 回から 1 日に複数回に加速させました。 詳細 »
コミットから実行までのコードのライフサイクルを管理します。
Amazon Elastic Container Registry (Amazon ECR)
フルマネージド型の Docker コンテナレジストリです。このレジストリを使うと、Docker コンテナイメージを簡単に保存、管理、デプロイできます。Amazon ECR は Amazon Elastic Container Service (Amazon ECS) に統合されているため、コンテナの開発から本稼働までのワークフローを簡略化できます。 詳細 »
Gilt は、クラウドベースのマイクロサービスインフラストラクチャのスピードと効率を活用するために、オンプレミスのデータセンターから AWS に移行しました。
詳細 »
これらのリソースを使用して、マイクロサービスの構築を今すぐ開始する