awsでコンテナを運用するのに必要なecrの基礎

awsの利用方法には広いバリエーションがあり、クラウドサーバーをどのようにして使っていくと良いかを考えてみると色々な選択肢が生まれます。その一つとしてコンテナを使っていく方法があり、簡便で複数のインスタンスを運用するときには特に重宝されています。

その際に重要なのがecrなので、ecrの概要と他に必要なことを紹介します。

コンテナを使うとプラットフォームを活用しやすい

awsではサーバー、プラットフォーム、ソフトウェアという三つのレベルで多岐にわたるサービスを提供しています。awsを利用するときの典型的な方法としてはインスタンスを作成して仮想サーバーのようにしてインフラとして扱い、業務やサービスなどで必要になるアプリケーションやソフトウェアなどを稼働させられるようにプラットフォームを作り上げます。

そして、インスタンスごとにアプリケーションなどを実装していくことで個々のユーザーが利用できる環境にするのが基本です。プラットフォームを作り、アプリケーションを実装する段階でよく用いられているのがコンテナです。

コンテナを使うことによって複数のインスタンス上のプラットフォームに同じ環境を作り出すことができます。コンテナをレジストリーしてデプロイすれば基本的には同じ環境を個々のインスタンス上で運用できるのが特徴です。

互換性のあるサーバー環境であれば移行も容易で、例えば自社サーバーやレンタルサーバーで使ってきた環境をawsに移行して使用することも簡単にできます。この他にも色々な活用方法があるのは確かですが、コンテナを使うことでまとまった単位での環境の作成や管理ができるようになり、プラットフォームの構築や活用が容易になります。

awsではコンテナの運用を可能にしている

awsではEC2を代表とするインスタンスを作成した後、インスタンス上にプラットフォームを構築し、さらにアプリケーションを実装していくのをサポートするためのサービスを多岐にわたって提供しています。その一つとして力を入れているのがコンテナサービスです。

多くのユーザーがいて世界的に利用されているDocker向けに作られているコンテナサービスが盛り込まれていて、他社のサーバーサービスからの移行が容易になっています。ただDockerコンテナをデプロイできるだけでなく、運用する上でも独自性があるサービスを提供しているのが特徴です。

awsでコンテナを使うときの鍵となるサービスの一つがecrなので、ecrについてまずは確認しておきましょう。

ecrとはどのようなサービスか

awsのecrとはElastic Container Registryの略で、コンテナのレジストリーのために使用するサービスです。

ecrはDockerコンテナを管理するのに使用するもので、イメージを保存することもデプロイすることも可能です。Elasticという名称から想像できるように、ストレージなどと同様にしてスケーラブルな環境が提供されています。

基本的にはecrは完全マネージド型のサービスなので特に他に必要なソフトウェアなども一切ありません。必要なコンテナイメージをecrにプッシュしておき、デプロイが必要になったらプルするだけで簡単に使用できるようになります。

ecrと一緒に必要になるecs

ecrはあくまでレジストリーサービスなのでデプロイすることまでしかできません。コンテナを運用できるようにするにはawsではecsも使用する必要があります。ecsとはElastic Container Serviceの略でコンテナのオペレーションをするのに必要なサービスと考えると良いでしょう。

ecrでデプロイしたコンテナイメージを実際に使用するためにはecsを介する必要があります。システム上で連携されているので使い勝手も良くなっていて人気のサービスです。

Fargateでコンテナの運用が容易になる

ecsに加えてコンテナを運用するときに重要なのがFargateです。Fargateは平たく言えばサーバーレスで運用したいときに使うサービスで、インスタンスを作成して管理する必要がなくなります。コンテナを運用するときにもEC2などのインスタンスを作成し、プラットフォーム上でコンテナを使っていくのが基本です。

しかし、Fargateを使うとインスタンスを作る必要がなく、プラットフォームベースで運用することが可能になります。Fargateを使えばサーバー管理をする必要がなくなり、コンテナベースでの管理や運用をしていくことが可能です。

あくまでサーバーを使いたい場合にはFargateのメリットはありませんが、コンテナがすでにあってその運用だけを考えたいときには魅力的でしょう。Fargateを使用する場合にもecrとecsを使うのが基本で、使い方にも大きな違いがありません。

事前にインスタンスを起動せずともタスクを確認することができるので運用時の工数を減らすことができます。

また、Fargateを使うと監視負担は大幅に軽減されます。基本的にはPaaSとしてawsを使用することができるようになるため、運用時に監視しなければならないのはディスク容量やCPU稼働率、メモリ稼働率といった基本項目ばかりになります。

監視項目が少なくて済むだけでなく、自動化もしやすい項目が多いのでエンジニアの負担が少なく、夜間などの利用が少ない時間帯は常駐しなくても監視に対応できるのが一般的です。

ecrの課金システム

ecrを使用するときにはawsの他のサービスと同様に料金の支払いが必要になります。可用性のあるサービスとほぼ共通の課金システムになっているのでawsを使ったことがあると体系がわかりやすいでしょう。料金はストレージとデータ通信の量によって決まる仕組みになっています。

ストレージは1GBあたり0.1米ドルの費用が毎月かかります。通信についてはデータ受信は無料で、データ送信については月間通信量に応じた料金設定になっています。コンテナを運用する際に気を付けなければならないのが、ecrの料金はこのサービス単独でかかることです。

ecsにもまた別の利用料金がかかることになるのでトータルコストを下げつつパフォーマンスを上げられるように運用することが重要になります。データ通信にかかる費用が問題になるケースが多いため、コンテナイメージのサイズや必要性をよく考えて運用方法を検討しましょう。

コンテナの運用にはecrとecsが必須

awsでコンテナの運用をするためにはecrとecsを使用することが必要で、ecrはコンテナイメージの保存やデプロイ、ecsはそのコンテナの運用に使うサービスだと考えましょう。Fargateを使うとインスタンスの運用管理が必要なくなり、監視の負担も軽減されます。

コンテナをどのように運用していきたいかに応じて適切なサービスを組み合わせましょう。