【SAA試験対策】AWS認定ソリューションアーキテクト-アソシエイトの暗記用語のまとめ 〜 コンテナ編
目次
こんにちは。
AWSの認定試験の勉強をしています。特にSAA(ソリューションアーキテクト - アソシエイト)試験で出てきそうな、個人的に覚えにくい・忘れやすい用語をまとめてみました。
試験概要はこちら:AWS 認定 ソリューションアーキテクト – アソシエイト
尚、本記事で取り扱っている用語はAWS公式の実際の出題ではなく、自分が勉強していて覚えにくかった用語を元にしていますので、認定試験では出題されない可能性もあります。あくまでも参考程度に御覧ください。
そもそもAWSって何?という方はこちらの記事を御覧ください。
AWS公式ドキュメントでは概念的な言葉でわかりにくい表現がどうしてもあります。このブログではふわっとした言葉を極力なくして、わかりやすく伝えていこうと思います。
AWSの基礎や体系立てた知識の習得には書籍もオススメです。
AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト
今回はコンテナ編です。
それでは用語についてまとめていきます。
コンテナとは
まずはAWSに限らずコンテナに関する一般用語の意味をおさらいです。
コンテナとはパソコンの中に独立したパソコンのように扱える箱を作る技術のことです。
違うサーバーマシンに同じ実行環境を複製したり、何か不具合ができたら使い捨てにできたりする便利な箱です。破壊と創造を容易に繰り返すことができます。(スクラップ&ビルドと言います)
アプリケーションを開発しているときに、開発環境、テスト環境、本番環境などとステージを分けて開発しますが、コンテナ技術によってこのようなステージごとの環境複製や使い捨てが簡単になります。また、複数の機能を持っていると、機能ごとに環境を細かく分けて疎結合にすることも簡単になります。(マイクロサービス。)
似たような技術に仮想マシンというものがありますが、起動する本体マシンのOSを共有するのがコンテナで、反対にOSを共有しないで、ハイパーバイザーというものを立ててその上に箱ごとに専用のOSが入っているのが仮想マシンです。
なので、コンテナのほうが中身がコンパクトで起動が速いです。

参考 : docker.com | what-container
コンテナを実際に試して見たいという方はこちらの記事をご参考にどうぞ。
MacでDockerコンテナを使う方法まとめ【初心者向け入門/無料で試せる】
コンテナイメージ
コンテナで利用するファイルシステムのスナップショットの呼び名です。
先述したとおり、コンテナイメージは仮想マシンのイメージと異なり、OSが入っていません。
それぞれのイメージファイルの違いをまとめると以下のようになります。
- 仮想マシン: OSあり、サイズGB単位、起動数分
- コンテナ : OSなし、サイズMB単位、起動数秒
マイクロサービス
サービスを細かく分離することです。
会社の中にも担当部署が分かれているように、サービスも多機能になると細かく分離して担当を分けたほうが管理がしやすく、1つのエラーが全体に波及しにくくなります。
この反対語として、モノリシックという言葉が使われます。モノリスっぽい、という意味の言葉で一枚岩を表しています。物知りのモノシリックではない。大規模になるほどモノリシックなアプリケーションはよくないとされていますね。
コンテナを使うとこのようなマイクロサービスを作るのが簡単になります。
ECS
ここからAWSの用語のまとめです。
ECSはElastic Container Serviceの略で、名前の通りコンテナを作るサービスです。
アプリケーションに必要なコンテナイメージとリソースを定義して実行できます。
たとえばコンテナAを5台、Bを2台立ち上げたい、といった指定でコンテナを置くインスタンスの数や配置を調整できます。
起動タイプはEC2とFargateの2タイプから選べます。
コンテナイメージはECR(後述)からとってきますので、予めECRにイメージを登録しておく必要があります。
【AWS公式】Amazon Elastic Container Service とは
クラスター
コンテナを立ち上げるEC2インスタンスの集合体のことです。
クラスターをAutoScalingして可用性を高めたりできます。
タスク
起動するコンテナのことをタスクと呼ばれています。
これを定義するものがタスク定義というJSON形式のテキストです。
(Dockerコンテナを使っている人にとってのdocker-compose YAMLみたいなものですね。)
1つのタスク定義で10のアプリケーションを定義できます。
サービス
タスクの集合体です。
タスクは単体でも実行できますが、複数タスクをまとめてスケーリングやスケジューリングしたりする場合はサービスを利用します。
タスクはバッチ処理など処理終了でコンテナも停止するような作業に相当し、サービスは複数のタスクを維持してELB(ALB)やAutoScalingと連携して長時間実行するWebアプリケーション、のようなイメージで使い分けます。
ECR
Elastic Container Registoryの略で、コンテナイメージのレジストリです。
予めコンテナイメージを登録しておき、ECSでコンテナを作成するときにECRに登録されているコンテナイメージを参照します。
リポジトリで管理して、push/pullして使います。
【AWS公式】Amazon Elastic Container Registry
Fargate
ECSからコンテナを作成するときに、EC2の代わりに選択できるフルマネージドなインスタンスタイプです。
といってもAWSがやりくりしている裏で実際はEC2が立ち上がっているのだと思われますが、その立ち上げをすべていい感じにしてくれるサービスです。
つまり、コンテナのインフラを管理してくれます。タスク定義を登録するだけでコンテナの起動が可能です。
具体的に何をしてくれるかというと、
- サーバータイプの選定
- スケーリングのタイミング決定
- パッキング(スケーリングするクラスター作り)の最適化 など。
CPUやメモリ要件はユーザが指定できます。
AWSの思想として「インフラの管理よりはお客様はアプリケーションの設計・構築にご注力ください!」というのがあるので、コンテナにおいてそれを実現してくれるサービスです。
EKS
Elastic Kubernetes Serviceの略で、Kubernetes(クバネティス、クーバネティスとか呼ぶオープンソースのコンテナ管理ソフト)を実行できるサービスです。
AWSでコンテナを作る時、まず「ECSを使うか?EKSを使うか?」という2択になり、その土台としてそれぞれEC2、Fargateが選べる、という構造です。
元々FargateはECSとしか組み合わせられませんでしたが、2019年からEKSとも組み合わせられるようになり、EKSはECSより設定が豊富なのでプロビジョニングやスケーリングの自動化に最強の組み合わせとなりました。
新しくAWSでコンテナを作ろうと思ったら基本的にはECSを選んで、すでにKubernetesを使っていたらEKSを選んだ方が移行がラク、といった感じだと思います。
先述したように設定できることはEKSの方がECSよりも豊富ですが、起動に時間が掛かったり、コストが掛かったりするといったデメリットもあります。
Elastic Beanstalk
Webアプリのプロビジョニングを自動化してくれるサービスです。
ビーン「ズ」・トークではなく、ビーン「ス」トーク(豆の木という意味の1単語)です。
ECSにホストされたコンテナ利用のアプリケーションのデプロイも自動化できるためここで取り上げました。
ELBやAutoScalingを利用したスケーラブルな構成でデプロイでき、さらにバージョン管理や、コンソールで状態のモニタリングもできます。
【AWS公式】AWS Elastic Beanstalk とは
まとめ
というわけで、AWS認定試験のSAA(ソリューションアーキテクト - アソシエイト)で必要となりそうなコンテナ関連の用語について忘れないようにまとめてみました。
コンテナは比較的最近の技術なので、あまり馴染みがない状態で試験を受ける場合もあると思いますが、ざっくりとでもイメージを掴んで試験のときに思い出せるようにしたいですね。
このページも定期的に見直して知識の定着を行っていきたいです。
また別のカテゴリについてもまとめる予定です。
AWSの基礎からの勉強や、体系立てた知識の整理には書籍もオススメです。こちらは2020年の最新試験(SAA-C02)の問題にも対応しています。
(模擬問題付き)改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応