マイクロサービスは、小さな独立した複数のサービスでソフトウェアを構成する、ソフトウェア開発に対するアーキテクチャ的、組織的アプローチです。各サービスは、正確に定義された API を通じてやり取りします。これらのサービスは、小規模の自己完結できるチームが所有します。

マイクロサービスアーキテクチャはアプリケーションのスケーリングを容易にし、開発期間を短縮するため、イノベーションの実現と新機能の市場投入の加速につながります。

モノリシックアーキテクチャでは、プロセスすべてが固く結合され、単一のサービスとして実行されます。したがって、アプリケーションのプロセスのいずれか 1 つでも需要のスパイクが生じた場合、アーキテクチャ全体をスケールする必要が生じます。モノリシックアプリケーションの機能を追加または改善すると、コードベースが大きくなるにつれて複雑さが増大します。この複雑さにより、実験は制限され、新しいアイディアの実装は困難になります。モノリシックアーキテクチャはアプリケーションの可用性にリスクをもたらします。多くのプロセスが依存的で固く結合されている状態では、どれか 1 つでもプロセスに障害が発生した場合、その影響が大きくなるためです。

マイクロサービスアーキテクチャでは、アプリケーションは独立した複数のコンポーネントとして構築されます。各コンポーネントは、1 つのサービスとして個別にアプリケーションプロセスを実行します。これらのサービスは、軽量の API を使用した、正確に定義されたインターフェイスを通じてやり取りします。サービスはビジネス機能向けに構築され、各サービスが単一の機能を実行します。サービスが独立して実行されるため、各サービスを更新、デプロイ、スケールして、アプリケーションの特定の機能に関する要求に応えることができます。

モノリシック対マイクロサービス

モノリシックアプリケーションをマイクロサービスに分割する

マイクロサービスアーキテクチャの各コンポーネントサービスは、他のサービスの機能に影響を与えることなく開発、デプロイ、実行、スケールできます。各サービスは他のサービスとコードまたは実装を共有する必要が一切ありません。コンポーネント間の通信はすべて正確に定義された API を通じて行われます。

各サービスは一連の機能のために設計され、特定の問題を解決することにフォーカスしています。もし開発者が経時的にコードをサービスに追加してそのサービスが複雑になる場合には、サービスをより小さなサービスに分割できるます。

マイクロサービスでは、サービスの所有権を持つ小規模で独立した複数のチームからなる組織が発展します。チームは、小規模でよく理解されたコンテキストにおいて行動し、より自主的かつより迅速に仕事に取り組む権限を与えられます。これにより、開発サイクルが短縮されます。組織の総スループットを大いに有効活用できます。

マイクロサービスを利用すると、サポートするアプリケーション機能の要求に応じて各サービスを個別にスケールできます。これによりチームは、インフラストラクチャに対するニーズの適正化、各機能にかかるコストの精確な評価、サービスに対する需要のスパイクが生じた場合の可用性の維持が可能です。

マイクロサービスでは、継続的インテグレーションと継続的デリバリーが実現可能です。容易に新しいアイディアを試したり、上手くいかなかった場合にロールバックしたりできます。失敗時のコストが抑えられるため、活発に実験を行えるほか、コードの更新が容易になり、新機能の市場投入を加速できます。

マイクロサービスアーキテクチャは、「フリーサイズ」のアプローチを踏襲しません。チームには、特定の問題を解決するための最適なツールを選ぶ自由があります。その結果、マイクロサービスを構築するチームは、各ジョブに最適のツールを選択可能です。

ソフトウェアを小さな正確に定義されたモジュールに分割すると、チームは複数の目的に合わせた機能を使用できます。ある機能のために記述されたサービスは、別の機能のために構成要素として使用できます。そのため、アプリケーションはそれ自体から独立でき、開発者は一からコードを記述することなく新機能を作成できます。

サービスの独立性により、アプリケーションの耐障害性が向上します。モノリシックアーキテクチャでは、1 つのコンポーネントに障害が発生すると、アプリケーション全体に障害が及ぶおそれがあります。マイクロサービスでは、アプリケーションの機能性を低下させてアプリケーション全体のクラッシュを回避することにより、全体的なサービス障害に対応します。


AWS は、規模、負荷、または複雑さにかかわらず、あらゆるアプリケーションアーキテクチャをサポートする構成要素を統合させました。

マイクロサービス向けの処理能力。

Amazon EMR

Amazon Elastic Container Service

非常にスケーラブルで高性能なコンテナ管理サービスです。Docker コンテナに対応しており、Amazon EC2 インスタンスのマネージド型クラスターでアプリケーションを簡単に実行できます。
詳細 »

Amazon ECS を使用することで、Coursera は、ソフトウェアへの変更のデプロイを数分以内に完了できるようになりました。リソースが隔離された環境で数時間かけてデプロイを行うことはありません。
詳細 »

Amazon EMR

AWS Lambda

AWS Lambda を使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます。コードさえアップロードすれば、高可用性を維持しつつコードを実行およびスケールするのに必要なすべてを Lambda が管理します。
詳細はこちら »

Localytics は AWS Lambda を使用して、開発チームによるカスタム分析の構築を可能にするマイクロサービスを中枢のサポートなしに構築しました。 詳細はこちら »


スケーラブルで高耐久かつ安全なデータストレージ。    

Amazon ElastiCache

Amazon ElastiCache は、低速のディスクベースのデータベースに完全に依存せずに、高速の管理されたインメモリキャッシュから情報を取得できるようにすることで、サービスのパフォーマンスを向上させます。詳細 »

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% 短縮しました。 
詳細 »


高スループットとミリ秒未満のレイテンシーのネットワーキングサービス

AWS Cloud Map

AWS Cloud Map はあらゆるクラウドリソースのサービスを検出します。Cloud Map では、アプリケーションリソースのカスタム名を定義して、動的に変化するこれらのリソースの更新された場所を管理できます。

詳細 »

AWS App Mesh

AWS App Mesh を使用すれば、AWS で実行するマイクロサービスを容易にモニタリングおよび制御できます。App Mesh はマイクロサービス間の通信を標準化し、エンドツーエンドの可視性を提供し、アプリケーションの高可用性を確保します。

詳細 »

Application Load Balancer

Application Load Balancer は、HTTP および HTTPS トラフィックをアプリケーションレイヤー (レベル 7) で負荷分散し、マイクロサービスやコンテナを含む最新のアプリケーションアーキテクチャを対象とした高度なリクエストルーティングを提供します。

詳細 »

Network Load Balancer

Network Load Balancer は、ネットワーク接続レイヤー (レベル 4) で動作する高性能ロードバランシングを提供します。これにより、IP プロトコルデータに基づいてマイクロサービスに接続をルーティングできるようになります。Network Load Balancer は、極めて低いレイテンシーを維持しながら、1 秒に何百万件ものリクエストを処理することができます。

詳細 »

Amazon API Gateway

Amazon API Gateway では、API 管理のための包括的プラットフォームを提供しています。Amazon API Gateway を使用すれば、数十万という一斉に起こる API コールを処理し、トラフィック管理、認証とアクセスコントロール、モニタリング、API バージョン管理を実行できます。

詳細 »

Amazon Route 53

Amazon Route 53 は可用性と拡張性に優れたクラウドドメインネームシステム (DNS) ウェブサービスであり、AWS で実行するインフラストラクチャにリクエストを効率的に接続します。IP ヘルスチェックやマイクロサービスのサービス検出に使用できます。

詳細 »

Airtime では、AWS で実行するマイクロサービスとしてアプリケーションを再設計した後、より高速で信頼性が高く、遅延のないソーシャルエクスペリエンスを提供しています。 詳細 »


プロセス間コミュニケーションを発行、調整する

Amazon Simple Notification Service (SNS)

Amazon SNS は、完全マネージド型の Pub/Sub メッセージングサービスで、マイクロサービス、分散システム、サーバーレスアプリケーションの減結合化とスケーリングを容易にします。
詳細 »

Amazon Simple Queue Service (Amazon SQS)

Amazon SQS は、マイクロサービス、分散システム、およびサーバーレスアプリケーションの疎結合化とスケーリングを容易にする、フルマネージド型のメッセージキューイングサービスです。
詳細 »

Lyft は AWS を使用して、企業としてすばやく動きその急激な成長を管理しています。そして AWS の製品を活用し、カスタマーエクスペリエンスに関するあらゆる要素を強化する 100 以上のマイクロサービスをサポートしています。 詳細 »


サービスのパフォーマンスとリソース使用率をモニタリングします。トラブルシューティングと最適化のために、複雑なアーキテクチャ全体をトレースします。

AWS CloudTrail

CloudTrail を使用すると、インフラストラクチャ全体でアカウントアクティビティをログに記録し、継続的にモニタリングし、保持できます。CloudTrail イベント履歴により、セキュリティ分析、リソース変更の追跡、トラブルシューティングをより簡単に実行できるようになります。詳細 »

Amazon CloudWatch

Amazon CloudWatch を使用すると、メトリクスの収集と追跡、ログファイルの収集とモニタリング、アラームの設定、変更に対する自動的な対応が実行中のサービスと AWS リソースにわたって可能になります。
詳細 »

AWS X-Ray

アプリケーション内で転送されるリクエストをエンドツーエンドで表示して、アプリケーションの基盤となるコンポーネントのマップを見ることがます。一連のマイクロサービスが連携して動作しリクエストを処理するため、AWS X-Ray は一元化されたログのビューを提供することができます。これにより、複雑なやりとりをモニタリングおよびトラブルシューティングできるようになります。詳細 »

Amazon ECS でホストされているマイクロサービスを使用することで、Shippable は顧客に機能を提供することに専念できるようになり、機能のデプロイ期間を週に 1 回から 1 日に複数回に加速させました。 詳細 »


コミットから実行までのコードのライフサイクルを管理します。

Amazon Elastic Container Registry (Amazon ECR)

フルマネージド型の Docker コンテナレジストリです。このレジストリを使うと、Docker コンテナイメージを簡単に保存、管理、デプロイできます。Amazon ECR は Amazon Elastic Container Service (Amazon ECS) に統合されているため、コンテナの開発から本稼働までのワークフローを簡略化できます。 詳細 »

AWS 開発者用ツール

AWS 開発者用ツールは、DevOps を実践している開発者や IT 運用プロフェッショナルが、迅速かつ安全にソフトウェアをデリバリーできるようにする一連のサービスです。これらのサービスは連携して、アプリケーションのソースコードの安全な格納とバージョン管理を行い、自動的にアプリケーションをビルドしてテストし、AWS またはオンプレミス環境にデプロイできるようにします。詳細 »

Gilt は、クラウドベースのマイクロサービスインフラストラクチャのスピードと効率を活用するために、オンプレミスのデータセンターから AWS に移行しました。
詳細 »