マイクロサービス - AWS でのマイクロサービスの実装

マイクロサービス

API はマイクロサービスの玄関口です。つまり、API は一連のプログラムインターフェイス (通常は RESTful ウェブサービス API) の背後にあるアプリケーションロジックのエントリポイントとして機能します。この API はクライアントからの呼び出しを受信して処理し、トラフィック管理、リクエストのフィルタリング、ルーティング、キャッシュ、認証、認可などの機能を実装する場合があります。

マイクロサービスの実装

AWS は、マイクロサービスの開発をサポートするための統合された構成ブロックを備えています。2 つの一般的なアプローチは、AWS Lambda を使用すること、および Docker コンテナとともに AWS Fargate を使用することです。

AWS Lambda を使用すると、コードをアップロードするだけで、高可用性を維持しながら実装を実行およびスケールして実際の需要曲線を満たすために必要なすべてのことを Lambda が引き受けます。インフラストラクチャの管理は不要です。Lambda は数種類のプログラミング言語をサポートしており、AWS の他のサービスからトリガーすることも、任意のウェブアプリケーションやモバイルアプリケーションから直接呼び出すこともできます。AWS Lambda を利用する最大のメリットの 1 つが、迅速に対応できるという点です。AWS がセキュリティとスケーリングを管理するので、ユーザーはビジネスロジックに集中できます。Lambda の自律的なアプローチによって、スケーラブルなプラットフォームが実現します。

デプロイの運用作業を低減する一般的な方法は、コンテナベースのデプロイです。Docker などのコンテナ技術は、ポータビリティ、生産性、効率性などの利点を理由に、ここ数年人気が高まっています。コンテナの習得には集中して取り組む必要があります。また、Docker イメージのセキュリティ修正とモニタリングについて考える必要があります。Amazon Elastic Container Service (Amazon ECS) と Amazon Elastic Kubernetes Service (Amazon EKS) では、独自のクラスター管理インフラストラクチャをインストール、運用、スケールする必要がありません。API コールを使用して、Docker 対応のアプリケーションを起動および停止したり、クラスターの全体的な状態をクエリしたりできます。また、セキュリティグループ、ロードバランシング、Amazon Elastic Block Store (Amazon EBS) ボリューム、AWS Identity and Access Management (IAM) ロールなど、多くの使い慣れた機能にもアクセスできます。

AWS Fargate は、コンテナ向けサーバーレスコンピューティングエンジンであり、Amazon ECS および Amazon EKS の両方と連携します。Fargate では、コンテナアプリケーションに対して十分なコンピューティングリソースのプロビジョニングを心配する必要はなくなります。Fargate では、何万ものコンテナを起動して、簡単にスケーリングし、最もミッションクリティカルなアプリケーションを実行できます。

Amazon ECS は、タスクを配置および終了する方法をカスタマイズするためのコンテナ配置戦略と制約事項をサポートしています。タスク配置の制約事項とは、タスクを配置する際に考慮するルールを指します。コンテナインスタンスに属性 (基本的にキーと値のペア) を関連付けた後で、制約事項を使用して、これらの属性に基づいてタスクを配置できます。例えば、制約事項を使用して、インスタンスタイプやインスタンス機能 (GPU を使用するインスタンスなど) に基づいて特定のマイクロサービスを配置できます。

Amazon EKS は、オープンソース Kubernetes ソフトウェアの最新バージョンを実行します。これにより、ユーザーは Kubernetes コミュニティのすべての既存のプラグインとツールを使用できます。Amazon EKS で実行されるアプリケーションは、オンプレミスのデータセンターで実行されるものであれ、パブリッククラウドで実行されるものであれ、標準的な Kubernetes 環境で実行されるアプリケーションと完全な互換性があります。Amazon EKS では IAM と Kubernetes を統合しているため、IAM エンティティを Kubernetes のネイティブ認証システムに登録できます。Kubernetes コントロールプレーンで認証するための認証情報を手動で設定する必要はありません。IAM 統合により、IAM を使用してコントロールプレーン自体で直接認証し、Kubernetes コントロールプレーンのパブリックエンドポイントにきめ細かくアクセスできるようになります。

Amazon ECS と Amazon EKS で使用する Docker イメージは、Amazon Elastic Container Registry (Amazon ECR) に保存できます。Amazon ECR では、コンテナレジストリを実行するためにインフラストラクチャを運用およびスケールする必要はありません。

継続的インテグレーションと継続的デリバリー (CI/CD) はベストプラクティスであり、システムの安定性とセキュリティを維持しながら、ソフトウェアを迅速に変更できるようにする DevOps イニシアチブの重要な部分です。ただし、このホワイトペーパーでは対象外です。詳細については、「AWS での継続的インテグレーションと継続的デリバリーの実践」ホワイトペーパーを参照してください。

AWS PrivateLink は、可用性とスケーラビリティに優れたテクノロジーであり、仮想プライベートクラウド (VPC) を、サポートされている AWS のサービス、他の AWS アカウントでホストされているサービス (VPC エンドポイントサービス)、およびサポートされている AWS Marketplace パートナーサービスにプライベートに接続できるようにします。サービスと通信するために、インターネットゲートウェイ、ネットワークアドレス変換デバイス、パブリック IP アドレス、AWS Direct Connect の接続、または VPN 接続を必要としません。VPC と サービスとの間のトラフィックは、Amazon ネットワークを離れません。

プライベートリンクは、マイクロサービスアーキテクチャの分離とセキュリティを強化する優れた方法です。例えば、マイクロサービスを完全に独立した VPC にデプロイして、ロードバランサーを前に配置し、AWS PrivateLink エンドポイントを介して他のマイクロサービスに公開できます。このセットアップでは、AWS PrivateLink を使用することで、マイクロサービスとの間で送受信されるネットワークトラフィックがパブリックインターネットを通過することはありません。このような分離のユースケースの 1 つとして、PCI、HIPPA、EU/US Privacy Shield などの機密データを扱うサービスに対する規制コンプライアンスがあります。さらに、AWS PrivateLink を使用すると、ファイアウォールルール、パス定義、またはルートテーブルを必要とせずに、複数の異なるアカウントや Amazon VPC をまたいでマイクロサービスを接続できるため、ネットワーク管理が簡素化されます。PrivateLink を利用することで、Software as a Service (SaaS) プロバイダーや ISV は、運用を完全に分離してアクセスをセキュリティで保護した、マイクロサービスベースのソリューションも提供できます。