見出し画像

AWSソリューションアーキテクト取得に向けて~環境構築の自動化~

AWS ソリューションアーキテクト アソシエイト取得に向けて学習した内容を備忘的に記載します。

今回は環境構築の自動化

クラウドファーストの時代へ

今後のテクノロジー × ビジネスに柔軟に対応するためには、
クラウドファーストが必要不可欠。
 ■IaaS インフラのクラウド提供による環境構築を迅速化
 ■PaaS 環境のクラウド提供による開発迅速化
 ■SaaS アプリのクラウド提供によるサービス利用の迅速化

また、開発・テスト・導入を迅速にする自動化ツール(CI/CD)を活用することで素早い開発を実施可能とする。

AWSにおける環境自動化サービス

■Codeシリーズ
■Elastic Beanstalk
■OpsWorks
■CloudFormation
■Docker関連

Codeシリーズ

開発コードのGit上のコミット・実行・デプロイを自動化。
PipelineはCloudFormationとECSのデプロイ自動化にも利用可能。

ソース管理:CodeCommit
ビルド(テスト):CodeBuild
展開:CodeDeploy

Elastic Beanstalk

Webアプリケーションの定番構成の構築・デプロイの自動化。

■速く簡単にアプリケーションをデプロイするサービス
■Java、PHP、Ruby、Python、Node.js、.NET、Docker、Goに
 対応して展開可能
■Apache、Nginx、Passenger、IISなど使い慣れたサーバで
 デプロイおよびスケーリングが可能
■コードをアップロードすればキャパシティのプロビジョニング、ロードバランシング、AutoScalingからアプリケーションのヘルスモニタリングまでデプロイを自動化

構成要素

アプリケーション:
 トップレベルの論理単位でバージョンや環境や環境設定が
 含まれている入れ物
バージョン:
 デプロイ可能なコードでS3を管理する。
 異なる環境/異なるバージョンを展開可能
 バージョンレポジトリーに保持
環境:
 各環境に関連するリソースの動作を定義する設定パラメータ
 永続データの格納場所はS3やRDSなどの外部サービスを利用する

OpsWorks

ChefやPuppetなどRubyをベースにした環境構築ツールを使用してアプリケーション設定および運用するためのマネージド型サービス

OpsWorksスタック

スタックとアプリケーションの作成および管理のためのシンプルで柔軟な方法を提供するオリジナルサービス
Elastic Beanstalkよりも高度なインフラ構築が可能

■スタック/レイヤー/インスタンス/アプリケーションと呼ばれるコンポーネントによりモデル化を実施
■コードで構成管理やオートスケーリングが可能
■Linux/Windowsサーバをサポート
■OpsWorksエージェントがChef Clientのローカルモードでレシピを実行
■スタックがOpsWorksのトップエンティティである全インスタンスの構成情報をJSON形式で管理
■AWS OpsWorksスタックではChefサーバは不要

CloudFormation

AWSクラウド環境内の全インフラリソースを記述してテンプレート化して展開する環境自動設定サービス

■プロビジョニングされたリソースの変更・削除が可能
■追加リソースへの通常課金のみで追加料金なし
■JSON/YAMLで記述する
■クロスリージョンとクロスアカウントで管理
■直接サポートされていないリソースや機能を利用する場合は
   カスタムリソースでスタック作成の一部に独自ロジックを
 組み込むことが可能

AWSのコンテナサービス

レジストリ:Amazon ECR
コントロールプレーン:Amazon ECS、Amazon EKS
データプレーン:AWS Fargate

Elastic Container Service

Dockerコンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービス

■コンテナ化されたアプリを AWS において簡単に実行
   およびスケールできる
■Fargate を利用することでコンテナのデプロイと管理に
   サーバーのプロビジョニングや管理は不要
■あらゆる種類のコンテナ化されたアプリケーションを
   簡単に作成できる。
■Docker コンテナの数が数十であっても数万であっても
   数秒で簡単に起動
■ELB/VPC/IAM/ECR/CloudWatch/CloudFormation/CloudTrail
   などの AWS サービスを利用可能
■VPC ネットワークモードで Task 毎に ENI を自動割り当て
   Security Group をTask 毎に設定可能。 VPC 内の他のリソース
   へ Private IP で通信が可能
■Fargate 起動タイプと EC2 起動タイプという 2 種類のモード
   がある

Elastic Container Registry

フルマネージド型のレジストリサービスでDockerコンテナイメージを保存、管理、デプロイが可能

■ECS と Docker CLI に統 合されており、開発から本稼働までの
 ワークフローを簡略化する
■IAM による強力な認証管理機構
■エンドポイントにアクセスできるなら AWS 外からでも利用可能
■ライフサイクルポリシーでイメージの自動クリーンアップできる
■VPC ネットワークモードでタスク毎に ENI を自動割り当て
 して、更にセキュリティグループをタスク毎に設定可能

Elastic Kubernetes Service

コンテナ化されたアプリケーションのデプロイ、管理、スケールをKubernetesを使って実行するサービス

■Kubernetes は自動デプロイ、スケーリング、アプリ・コンテナの運用自動化のために設計されたオープンソースのプラットフォーム
■Kubernetes のパートナーやコミュニティが作成した既存のプラグインやツールを使用可能
■マネージド型サービスでありコントロールプレーンの管理が不要
■ワーカーノードとマネージドコントロールプレーンとの間に、暗号化処理された安全な通信チャネルを自動的にセットアップする
■Kubernetes 環境で管理されるアプリケーションとの完全な互換性がある

AWS Fargate

サーバやクラスターの管理無しにコンテナを実行するECSに対応したコンピューティングエンジン

EC2起動モード
■ECS で EC2 インスタンスを起動する
■コンテナアプリケーションを実行するインフラストラクチャに対して、サーバーレベルの詳細なコントロールを実行可能
■サーバークラスターを管理し、サーバーでのコンテナ配置をスケジュール可能
■サーバークラスターでのカスタマイズの幅広いオプションが利用できる
Fargate起動モード
■ECS で 設置できる専用のコンピューティングエンジン
■EC2 インスタンスのクラスターを管理する必要がない
■インスタンスタイプの選択、クラスタースケジューリングの管理、クラスター使用の最適化は不要
■CPU 、 メモリなどのアプリ要件を定義すると、必要なスケーリングやインフラはFargate が管理する
■秒で数万個のコンテナを起動

この記事が気に入ったらサポートをしてみませんか?