コンテナサービスECSとは
こんにちは!
最近、六本木クラスにドハマりしている佐野です。
ハマりすぎて、六本木への移住計画を立てています。
本日はAWSサービスの一つである
Amazon Elastic Container Service(以下ECS)について私なりに学んだことを書いていこうと思います。
ECSとは、Dockerコンテナ環境を提供するサービスです。
そもそもDockerコンテナとは?と疑問に思ったため、
調べてみました。
Dockerコンテナとは
Docker は、アプリケーションをすばやく構築、テスト、デプロイできるソフトウェアプラットフォームです。Docker は、コンテナと呼ばれる標準化されたユニットにソフトウェアをパッケージ化します。コンテナには、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なすべてのものが含まれています。Docker を使用すると、どのような環境にもアプリケーションをすばやくデプロイおよびスケールでき、コードを実行することができます。
Docker を AWS で運用することで、開発者や管理者は、どのような規模の分散アプリケーションでも、高信頼性と低価格を実現した方法ですばやくビルド、出荷、実行できます。
参考(https://aws.amazon.com/jp/docker/)
要するに、Dockerと呼ばれるソフトウェアプラットフォームがあり
Dockerにおいて"コンテナ"と呼ばれる場所にソフトウェアを構築していく。
コンテナにはソフトウェアの実行に必要な機能が備わっているため、
開発者はどのような環境にも素早く開発・デプロイすることが可能と理解しました。
そのうえでECSについて考えてみました。
ECSとは
ECSはDocker環境に必要な設定が含まれたEC2インスタンスが起動し、その管理をサポートするサービスです。
ECSが登場する前、DockerをAWSで導入するには、以下のフローが必要でした。
①EC2をたてる
②EC2上にDockerを導入
↑この導入作業、継続したメンテナンス作業は人手で行っていました。
多くのコンテナを運用する場合は、大変な作業を必要としており、開発者は開発に十分な時間をさけない状況がありました。
そんな中、ECSサービスが登場し
前述の①、②+管理メンテナンス作業をカバーできることで、
開発者はアプリケーション、ソフトウェアの開発に集中できるようになりました。
コンテナとよく比較されるサービス(仮想化)
コンテナはよく仮想化と比較されることが多いです。
というのも、仮想化とは、ソフトウェアによって複数のハードウェアを統合することで、1台のサーバが複数のサーバのように振る舞うことができるようにする技術です。要するに、仮想化は1台の物理サーバー上に複数の仮想サーバーを運用する技術のことを指します。
現在さまざまなサーバ仮想化の方法がありますが、最も多く使用されているのは、1つの仮想化ソフトウェアの上で複数のサーバOSを動かす方法です。
開発者はそれぞれのOSを設定し、そのうえでアプリケーションを導入します。
一方でコンテナについては以下のようなイメージです。
仮想化サーバーと比較し、各仮想サーバーにOSがありません。
このように、仮想化では、仮想環境におけるアプリケーションのプロセス管理はゲストOS によって実行されます。そのため、仮想化においてはゲスト OS の起動が必要不可欠です。一方、コンテナ化の場合は、ホスト OS とプロセスが同期されているため、わざわざゲスト OS を立ち上げる必要はありません。
他にも、使用容量、サーバー負荷、メンテナンス工数といった違いが
コンテナと仮想化にはあります。
開発のスピードといったメリットから、
近年コンテナサービスの利用が高まっています。
AWSではご紹介したECSのほかに、コンテナサービスを多数備えています。
現在、仮想サーバーをご利用の方は、
コンテナサービスの検討をしてもいいのではないかと考えました。
弊社では、ECSなどのAWSサービスをもとに、
お客様の現在のサーバー環境からAWSへ移行した際のコストメリットや、
最適なソリューションの提案を行っています。
※近日AWS専用のLPも公開予定です!
ご興味ございましたらお気軽にお問い合わせください。
おまけ
この夏サザンビーチ(茅ヶ崎)に行ってきました。
聞くところによると、サザンオールスターズの発祥地だそうです。
フュージョンは失敗しました。