
AWSの提供サービスは?

AWSの特徴は、膨大な提供サービスの数にあります。各サービスは、AWSマネジメントコンソールと呼ばれる管理メニューから簡単にサービスを利用できます。
AWSでは、コンピューティング・ストレージ・データベース・分析・ネットワーキング・モバイル・デベロッパー用ツール・管理ツール・IoT・セキュリティ・エンタープライズアプリケーションなどに分類しています。これらの分類に応じたAWSのサービスを利用することが可能です。 参考:AWS クラウド製品
コンテナとは?
通常アプリケーションを実行するためには、アプリケーション実行コードが必要です。加えて、アプリケーションが実行するランタイムライブラリーや、内部で使用する依存ライブラリー等を用意します。そして、アプリケーションの設定ファイルも必要です。
これらのファイル群は、サーバーの数が少ない場合はあまり気にする必要はありません。しかし、大量のサーバーを用いてアプリケーションを分散し起動したり、あるいは開発環境の様に設定を差し換えて起動したりとなると色々と問題が出てきます。まず、環境や設定が不統一の場合はサーバーを立ち上げるのに一苦労です。
それを解消するのが、コンテナです。アプリケーションに必要とされるアプリケーション実行コードとランタイムライブラリーおよび依存ライブラリーをコンテナ化し、まとめることでデプロイが簡単になります。実行環境に合わせてコンテナの設定をカスタマイズするだけで準備が完了です。
仮想サーバーとコンテナの違いは?
一方の仮想サーバーとは、ハイパーバイザーや仮想化ソフトウエアを用いて実装したサーバーです。アプリケーション実行は、ハイパーバイザーによって構成させた仮想マシン上のゲストOS上で稼働させます。
他方コンテナの場合は、ホストOS上のコンテナエンジンでコンテナ化したアプリケーションを実行するだけです。そのため、ゲストOSのオーバーヘッドの影響を受けません。さらに、ゲストOSが起動しないため起動時間が短縮され、メモリー消費量も節約できます。
システム運用者のメリットとしては、運用の分担がしやすいことが挙げられます。具体的には、仮想サーバーの場合はホストOSとゲストOSはシステム運用担当者が分担するために、アプリケーション変更に伴い作業をシステム運用担当者と調整する必要があります。コンテナの場合は新たにゲストOSを仲介しないため、開発者がコンテナ化したアプリケーションを実行するだけです。DevOpsと呼ばれる開発と運用を連携させる開発手法においてはコンテナの採用率が非常に高まっています。
代表的なコンテナソフトウエアは?
コンテナエンジンとしては、Dockerが有名です。必要なコンテナソフトウエア機能が含まれますので、シングルノード環境でよく活用されています。しかし、利用が拡大してくるとコンテナ間で処理を連携するオーケストレーションのニーズが高まってきました。
Kubernetesは仮想サーバー間にまたがるコンテナを管理し、大規模システムに適したクラスターを構成可能です。そのため、コンテナオーケストレーションを重視する場合はKubernetes利用者が多数を占めています。
AWSのコンテナサービスとは?

AWSでは、以下のコンテナサービスを提供しています。
・Amazon Elastic Container Registry(Amazon ECR) コンテナイメージの圧縮保存・管理・デプロイ ・Amazon Elastic Container Service(Amazon ECS) 完全マネージド型のコンテナオーケストレーションサービス ・Amazon Elastic Kubernetes Service(Amazon EKS) 完全マネージド型のKubernetesサービス ・AWS Fargate Amazon ECSとAmazon EKSで動作する、コンテナ向けサーバーレスコンピューティング
コンテナサービスの実際の利用方法については、以降で説明します。
AWSのコンテナサービスの役割は?
AWSのコンテナサービスの役割は大きく、3つに分類されています。
(1)レジストリ 各サーバーで実行するコンテナイメージを蓄積し、一元管理します。 (2)コントロールプレーン デプロイ・スケジューリング・スケーリングのオーケストレーション・アプリケーション管理を行います。 (3)データプレーン コンテナの実行環境、実行サーバーを指します。
コンテナではこの役割に応じて処理を分担し連携動作させています。
AWSのコンテナサービスの区分は?
AWSのコンテナサービスの役割区分に応じて、以下のサービスを選択していきます。
・レジストリ Amazon ECRまたはDocker Hub等を利用して、コンテナイメージを蓄積します。通常AWSサービス連携性の高いAmazon ECRを選択するのが良いでしょう。
・コントロールプレーン Docker向けのAmazon ECS、またはKubernetes向けAmazon EKSを必要に応じ選択します。小規模なコンテナではAmazon ECS、大規模システムあるいはKubernetes愛好者はAmazon EKSを選択するのが良いでしょう。
・データプレーン Amazon Elastic Compute Cloud(Amazon EC2)を利用するか、サーバーレスであるAWS Fargateを選択します。お試しの場合はAWS Fargateを検討し、商用サービスで実行時間がそれなりに見込まれる場合はAmazon EC2を選択しましょう。
AWSでのコンテナ活用方法は?
ここでは、コンテナの代表的な活用例について解説していきます。
・アプリケーションの開発と運用 DevOpsのように開発と運用を協調して進める場合は、動作環境の調整や切り替えを円滑にする必要があります。この場合、コンテナを活用することにより開発と運用の効率性を高めることができます。
・アプリケーションのクラウドへの移行 既存アプリケーションを異なる環境で動作させるには、アプリケーションのみならずランタイムや依存ライブラリーを準備する必要があります。これらのモジュールをパッケージ化することで、移行作業が大幅に簡素化できます。そのため、コンテナ活用によりクラウドへの移行性が向上するでしょう。
・アプリケーション連携性の向上 コンテナのデプロイを用途に応じてオンプレミス環境とクラウドを使い分けし、コンテナのオーケストレーションにより処理に応じてスケールさせることが可能です。これにより、ワークフロー管理が効率的に実施できるでしょう。
・アプリケーションのマイクロサービス化促進 従来のモノリシックアプリケーションをマイクロサービス化することで、よりコンテナオーケストレーションに適したモジュール構成をとることができます。将来に向けてアプリケーションの見直しを予定している場合は、コンテナの活用がより効果的でしょう。
AWSのコンテナ学習方法は?
AWSでは利用者のニーズに応じて、豊富なサービス提供を特徴としています。そのため、AWSでは初めて利用される方のために概念や利用方法を整理し、学習コンテンツとして提供しています。また、スキルレベルに応じた学習コンテンツが用意されているので、経験者においてもチュートリアルが有効な学習方法です。 参考:AWS ご利用開始のためのリソースセンター
この「ご利用開始のためのリソースセンター」の「カテゴリ別のサービス学習」に、「コンテナ」の情報が用意されています。このページでは、初心者からより深く学習する方を含めて「はじめに」「基礎」「学習リソース」「その他のリソース」と学習情報が整理されています。これから学習を始める方はご一読をお勧めします。 参考:AWS カテゴリ別のサービス学習 コンテナ
さらに、ハンズオンや動画をチュートリアルとして提供しています。内容は10分程度から2時間以上までの幅があり、難易度に分けて学習コンテンツを提供しています。 AWSチュートリアル一覧は「ご利用開始のためのリソースセンター 」の「ハンズオンチュートリアル」で表示されます。
「コンテナ」カテゴリでは、クラウドレベル100(初心者)向けコンテンツとして「最新のアプリケーションを構築」が用意されており、所要時間は2.5時間程度です。さらに、クラウドレベル200(中級者)向けコンテンツとして「Kubernetes アプリケーションをデプロイ」が用意されており、所要時間は30分程度です。AWSにサインアップすることで学習コンテンツが利用可能となります。その他に「コンピューティング」カテゴリもコンテナ構築では必要となりますので、このチュートリアルをぜひご活用ください。 参考:AWS ご利用開始のためのリソースセンター ハンズオンチュートリアル
AWSのコンテナサービスを活用し更なる生産性向上を図ろう

AWSでは、Amazon EC2が主要なコンピューティングサービスです。ニーズの広がりに応じて、サーバーレスサービスとしてAWS Lambdaが用意されています。同様に、コンテナの利用者に対してAmazon ECSやAmazon EKSを提供、さらにサーバーレスコンテナのAmazon Fargateを用意しています。この製品群は非常に多岐に渡りますので、コンテナの活用によりAWSのサービス利用が最適なものになるでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから