2022年、AWSを図解で学ぼう~最短1日で基礎が身に付く

第4回コンテナを学ぶ1日~クラウドネイティブにしないと、そのAWS生きませんよ。さぁ、コンテナを学ぼう

前回は、Amazon EC2を扱いました。

「AWSと言えばEC2!」と言っても過言ではない有名なサービスですが、最近では、EC2をそのまま使うことは減ってきています。キーワードはクラウドネイティブ(クラウドを前提とした考え方⁠⁠。第4回では、クラウドの良さを活かす考え方とコンテナ関連のサービス(AmazonECS、AmazonEKS、AWS Fargate)について解説します。

クラウドネイティブな設計とマネージドサービス

クラウドを導入する場合、現在使っているサーバ構成をそのままクラウドに持って行こうと考えがちです。しかし、このような考え方では、クラウドの良さを活かすことはできません。

クラウドの良さとは、一言で表すならば「身軽さと手離れの良さ」です。

いつでも、どこからでも、サーバを操作することができて、使うも使わないも、ボタン一つで構築できます。サーバの規模も、増減が自在で、変更も容易です。大変身軽な存在です。

また、マネージドサービス(AWSが自動で管理するサービスの総称)ならば、よく使われるソフトウェアのアップデートやスケーリング(サーバーの台数を変更すること)を自動でやってくれたり、各種監視サービスも充実していたりするので、手離れも良いです。

こうした特徴を活かすには、⁠それ前提の設計」でなければなりません。

たとえば、ソフトウェアのアップデートを自動でやってくれるのに、アップデートされたら困るようなシステムの作り方では、その機能を使うわけにはいかないでしょう。AWSがスケーリングに対応しているのに、自分の作った構成が、対応していなければ、豚に真珠です。

そもそも、クラウド向きのシステムではないケースもあります、⁠サーバの規模を自在に変えられる」ことがメリットだとしても、サーバ使用量がほとんど変わらないシステムならば、⁠使う意味がある」とは言いがたいのではないでしょうか。

「なんとなく、格好いいから」⁠時代はクラウドだから」と、安易にクラウドを検討する人も居ますが、サーバの料金は、そのプロジェクトのランニングコストに大きく関わります。⁠クラウドが必要ならば使い、使うならばクラウドを前提とした設計する」と考えることが肝要です。

画像

クラウドを活かすコンテナサービスECS

クラウドは、コンテナと組み合わせると、より一層、強みを発揮します。

コンテナというとわかりづらいかもしれませんが、Dockerというと、聞いたことがあるのではないでしょうか。Dockerは、Docker社の提供する「パソコンやサーバ上に隔離したプログラムの実行環境を作れる仕組み」であり、その隔離したゾーンを「コンテナ(container⁠⁠」と言います。

EC2では、マーケットプレイスから、AMIを入手して、インスタンスを作りましたが、Dockerの場合も似たような仕組みです。Docker HUBと呼ばれるところから、イメージを入手して、それを金型として、コンテナを作成します。

AWSでもコンテナを使えるサービスを提供しており、それが、Amazon Elastic Container Service (Amazon ECS)です。ECSでは、ECR(Amazon EC2 Container Registry)からイメージを入手し、コンテナを作成します。

ただ、注意したいのが、コンテナを実行する場所(作る場所)は、ECSではなく、EC2やAWS Fargate(ファーゲート)であるということです。ECS単体では、使えません。

 コンテナによって実行環境を隔離する
図 コンテナによって実行環境を隔離する(図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 より引用)

Kubernetes互換のEKS

コンテナといえば、Kubernetes(クーベネティス)を使いたいという方もいらっしゃるでしょう。

Kubernetesは、K8Sとも略すコンテナのオーケストレーションソフトです。複数のサーバにまたがるよな大規模システムにおいて、コンテナを自動で管理するのに便利なソフトウェアです。

AWSにも、Amazon Elastic Kubernetes Service(EKS)という互換のサービスがあります。こちらも、ECSと同じで、コンテナはEC2やFargateに作ります。

コンテナを作る場所はEC2やFargete
コンテナを作る場所はEC2やFargete(図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 より引用)

マネージドという考え方

冒頭で、⁠最近では、EC2をそのまま使うことは減ってきています」と書きましたが、これはどういうことかというと、EC2はマネージドサービスではありません。アンマネージドサービス(AWSが自動で管理しないサービス)です。

つまり、自分で管理するサービスなのです。そうすると、クラウドの良さの1つである「手離れの良さ」が活かしきれません。

そのため、最近では、EC2をそのまま使うのではなく、マネージドのサービスと組み合わせ、⁠いかに、自動でサーバを運用していくか」を考えた設計にする傾向にあります。その代表的なサービスの一つが、ECSやEKSといったコンテナサービスです。

また、コンテナを作る場所も、EC2とFargateの2つを紹介していますが、EC2がアンマネージドサービスであるのに対し、Fargateはマネージドサービスであるため、自分でインスタンスを管理する必要がありません。コンテナで何か実行するには、コンテナ自体を動かすための実行エンジンや、その実行エンジンを動かすためのOSなどをインスタンスにインストールしておく必要があるのですが、Fargateなら、そうしたこともAWSがやってくれるので、我々は「ヨロシク!」と任せればいいのです。

画像

今回は、AWSのお話なので、AWSを使うことを前提で解説をしていますが、プロジェクトによって求められるインフラはさまざまです。AWSが向いている場合もあれば、そうでないこともあるでしょう。

しかし、⁠手離れの良さ」は、人手不足のIT業界において、AWSと関係なく取り入れていくべき考え方です。AWSをきっかけに、こうした思想も触れていくとよりスムーズにシステムを構築できるようになるでしょう。

文中の図は図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書より引用しております。おかげさまで発売後わずか2年ですが、10刷を迎える大ヒットとなりました。

この連載は、その10刷記念として企画されたものです。書籍のほうもよろしくお願いしますね!

おすすめ記事

記事・ニュース一覧