適材適所でクラウドを使い分ける企業が増えている。ここで課題になるのがクラウドごとの違いだ。AWS(アマゾン・ウェブ・サービス)、Google Cloud Platform(GCP)、Microsoft Azureはサービスのラインアップが似ているが、用語やサービスの構造、利用できる機能などに差異がある。第7回から第9回は、最近注目されている技術である「コンテナ」と「サーバーレス」をテーマに解説する。同テーマの最終回である第9回ではAWSを取り上げる。
クラウドを利用してアプリケーションを開発・運用する際に選べるアーキテクチャーとして、以前からよく知られている仮想マシン(VM)以外に、「コンテナ」と「サーバーレス」があります。クラウドベンダーが管理する範囲は、VM、コンテナ、サーバーレスの順に、より広くなっていきます。逆に、利用者が管理する範囲は狭くなっていきます。
そのため、コンテナやサーバーレスを利用すれば、開発者は運用管理作業に煩わされることなく、肝心のアプリケーション開発に、より集中できるようになります。コンテナ、サーバーレスの一般論については、本連載の第7回で詳しく解説しているので、基本を知りたい方はそちらを参照してください。
今回は、AWS(アマゾン・ウェブ・サービス)のコンテナやサーバーレスに関連するサービスと、利用上の注意点について解説します。AWSは数多くのサービスを提供しており、「どれがコンテナ(サーバーレス)のサービスだったっけ?」と迷うかもしれません。そうした知識の整理にも役立つはずです。
AWSのコンテナ関連サービス
クラウドベンダーが提供するコンテナ関連サービスでは、コンテナを本番運用する際に必要となる、
- コンテナイメージレジストリ
- コンテナ実行基盤
- コンテナオーケストレーション
他クラウドと同様にコンテナイメージレジストリを提供
コンテナイメージレジストリでは、コンテナのイメージファイルを保管したり配信したりします。一般公開されているコンテナイメージレジストリとしては、「Docker Hub https://hub.docker.com/ 」があります。AWSでは、コンテナレジストリサービスとして、「Amazon Elastic Container Registry(ECR)」が提供されています。
なお、同様の位置づけとなるコンテナイメージレジストリは他のクラウドも提供しています。Azureでは「Azure Container Registry」、GCPでは「Artifact Registry」といった名称です。
コンテナ専用のサーバーレス実行基盤「AWS Fargate」
コンテナ実行基盤は、コンテナを実行させるための基盤を提供するサービスです。AWSでは、VMサービスである「Amazon Elastic Compute Cloud(Amazon EC2)」上でもコンテナを実行できますが、コンテナ専用の実行基盤として「AWS Fargate」が提供されています。

FargateはVMサービスとは異なりサーバー管理は不要で、コンテナイメージさえあればコマンド一つでコンテナを実行できます。つまり、サーバーレスサービスに該当します。マイクロサービスやバッチ処理などをサーバレス環境で動かすことができます。さらに自動スケールにも対応しています。
運用面でのメリットが大きいうえ、タイムアウトやレスポンスのサイズ制限などの制約事項もありません。次に述べるコンテナオーケストレーションツールと組み合わせると、より効果的に使えます。
コンテナオーケストレーションのサービスは2種類
コンテナオーケストレーションツールは、複数のコンテナを管理してコンテナ間で連携させたい場合に使います。コンテナオーケストレーションでは、各コンテナが動作するホストの指定、冗長化、コンテナ間の通信、スケーリングなど、複数のコンテナを運用する際に付いて回る課題を解決するための機能を提供します。 AWSには2種類のサービスがあります。
1つめは「Kubernetes https://kubernetes.io/ja/ 」のマネージドサービスである「Amazon Elastic Kubernetes Service(EKS)」です。Kubernetesは様々な環境で利用できる、最も有名なコンテナオーケストレーションツールです。Kubernetesについてのノウハウがある場合は、このサービスを利用するのがよいでしょう。

Kubernetesは、制御を担う「コントロールプレーン」とコンテナ実行基盤である「ノード」から構成されています。Kubernetesを独自に運用する際には、コントロールプレーンとノードの冗長構成の設定や、バージョンアップなどの作業を自前で行う必要があります。一方、Amazon Elastic Kubernetes Service(EKS)はKubernetesのマネージドサービスであり、利用者はこれらの作業をクラウドベンダーに任せることができます。