はじめに
AWS SAA(AWS Certified Solutions Architect - Associate)の試験勉強で分からなかったことについて調べました。(第2弾)
目次
要件
- 3層アプリケーションをマイクロサービスに分割
- コンテナを使ってマイクロサービスを構築
- コンテナ用コンピュートリソースの構成管理を不要にしたい
上記を満たすための最適なアプローチについて調べていきます。
マイクロサービス化 × コンテナ × 運用負荷最小がキーワードになります。
まず最適なアプローチの答えとしては、Amazon ECS + AWS Fargateを利用する になります。
用語の確認
コンテナ
「アプリケーションの実行に必要なものを1つにまとめたもの」のことです。
コンテナを実行するソフトウェアであるDockerをサーバーにイストールし、Dockerコマンドで操作します。
このDockerコマンドでコンテナの実行や管理を行う場合、運用管理が必要になるため手間がかかります。
後述するコンテナ環境を構成では、上記の課題を解決するための各サービスについて記載します。
3層アプリケーション
アプリケーションを役割ごとに3つの層に分離した構成のこと。
① プレゼンテーション層(UI層)
② アプリケーション層(ビジネスロジック層)
③ データ層
マイクロサービス
アプリケーションを機能別に独立したサービスへ分割すること。
各サービスが独立しているため、相互依存が少なくなります。(=疎結合化)
コンテナ用コンピュートリソース
コンテナを実行するために必要なCPU・メモリ・実行環境(サーバ)全体のこと。
コンテナを動かす土台となる計算環境です。
(具体例)
① EC2(自分で管理する場合)
- EC2インスタンス
- CPU / メモリサイズ選定
- OS管理
- パッチ適用
- スケーリング設計
② ECS on EC2 の場合
- EC2インスタンス
- インスタンスタイプ
- 台数
- AMI
- セキュリティパッチ
コンテナ環境を構成するサービス
コンテナ環境を構成する場合、以下のサービスを利用できます。
また、2つの起動タイプを選択できます。
- EC2起動:サーバータイプ
- Fargate起動:サーバーレスタイプ
Amazon ECR
Amazon ECR(Elastic Container Registry)は、コンテナ側ではイメージを作成・保存し、実行環境ではそのイメージからコンテナアプリケーションを実行します。
コンテナイメージの保管庫としての役割を持ち、コンテナイメージを保存するサーバーをレジストリと呼びます。
コンテナソフトウェアをどこにでも簡単に保存、共有、デプロイする
(引用:Amazon Elastic Container Registry)
Amazon ECS
Amazon ECS(Amazon Elastic Container Service)はDocker形式のアプリケーション開発環境を提供します。
実行されたコンテナアプリケーションのことをタスクと呼びます。
コンテナ化されたアプリケーションをあらゆる規模で簡単に構築、管理、実行する
Amazon ECS は完全管理型のコンテナオーケストレーションサービスです。
複雑なインフラストラクチャ管理なしにコンテナ化されたアプリケーションをデプロイ、管理、スケーリングできる。
需要に合わせて自動的にスケーリングし、継続的な可用性を維持し、一貫したパフォーマンスを提供する、回復力のあるコンテナ化されたアプリケーションを構築する。
アプリケーションの分離、IAM ロール、自動パッチ、転送時と保存時の暗号化、暗号化された一時的なストレージ、AWS セキュリティサービスとのネイティブ統合によりセキュリティを強化する
(引用:Amazon Elastic Container Service)
Amazon EKS
Amazon EKS(Amazon Elastic Kubernetes Service)はコンテナのオーケストレーションツールとして使用されます。
ECSと同じく、実行場所はEC2、Fargateどちらでも選択可能。
クラスター管理について考えることなく、Kubernetes を起動、実行、スケールする
AWS クラウドとオンプレミスデータセンターの両方で Kubernetes をシームレスに実行できるようにする、フルマネージド型の Kubernetes サービスです。
(引用:Amazon Elastic Kubernetes Service)
AWS Fargate
ECSでコンテナタスクを起動する場所として「EC2インスタンス」を使用できます。
しかし、EC2インスタンスそのもののメンテナンスやスケーリングが必要になります。
この運用負荷を減らすサービスがAWS Fargateです。
起動場所をFargateにすることでEC2インスタンスは不要になり、コンテナの実行に集中できます。
ポイントのまとめ
| キーワード | サービス名 |
|---|---|
| コンテナ | ECS / EKS |
| Dockerコンテナを実行・管理 | ECS |
| 運用負荷を減らす | Fargate |
| サーバレス | Fargate |
| イメージ管理(作成・保存) | ECR |
参考サイト