こんにちは、KiYOです。
システムエンジニア歴20年オーバー。2018年からAWSを使ったシステム開発をやってます。
AWS認定ソリューションアーキテクト – アソシエイト取得のため、書籍やUdemyで学んだことを発信しています。
AWSで用意されている環境自動化サービスを紹介します。
これにより、開発や運用の効率が上がること間違いなし!
Udemyでは動画で詳しく説明してくれるので、わからないところを何度も聞けるので非常に勉強になります。
[affi id=2]
システムの安全性や整合性・組織の効率性を改善するためプロセスを自動化します。環境を自動化することで開発速度を高めつつ、DevOpsとCI/CDによる開発を実現します。
クラウドファーストの時代
今後のテクノロジー ❌ ビジネスに柔軟かつ素早く対応するためには、クラウドファーストが必要不可欠になってきます。
適用技術フレーム クラウド
IaaS・・・インフラのクラウド提供による環境構築の迅速化
PaaS・・・開発環境のクラウド提供による開発の迅速化
SaaS・・・アプリサービスのクラウド提供によるサービス利用の迅速化
開発手法 アジャイル開発
アジャイル手法の活用拡大
- アプリケーション開発・変更への迅速な対応
- 顧客要件確認の柔軟化
CI/CDソフトウェア・サービスの活用
- アジャイルとDevOpsはContinuous Integration(継続的開発)とContinuous Delivery(継続的導入)の利用が基本
- 開発・テスト・導入を迅速にする自動化ツールを活用
運用手法 DevOps
運用と開発の一体化
- 運用チームと開発チームの継続的連携による運用
- 運用チームと開発チームのコミュニケーション齟齬や組織文化の一体化
ビジネススピードへの対応が可能となります。
環境自動化サービス
AWSはDevOpsを実現する環境自動化サービスを豊富に提供しています。
Codeシリーズ
開発コードのGITベースのリポジトリ上でのコミット・実行デプロイを自動化する一連のサービス
CodePipeline
完全マネージド型の継続的デリバリーサービス
フェーズ | 機能名 | 内容 |
コーディング(ソース管理) | CodeCommit | Gitベースのリポジトリをセキュアにホストするマネージド型のソース管理サービス |
ビルド・テスト | CodeBuild | ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できる完全マネージド型のビルドサービス |
展開 | CodeDeploy | CodeDeployは開発・テスト・本番環境へのデプロイの自動化サービス |
Elastic Beanstalk
Webアプリケーションの定番の構築・デプロイの自動化サービス
特徴
素早く簡単にアプリケーションをデプロイするサービス
- Java ,PHP ,Ruby ,Python ,Node.js,.NET,Docker,Goに対応してWebアプリケーションを展開できる
- Apache、Nginx、Passenger、IISなど使い慣れたサーバでデプロイおよびスケーリングが可能
- コードをアップロードすればキャパシティのプロビジョニング、ロードバランシング、AutoScalingからアプリケーションのヘルスモニタリングまでデプロイを自動化できる
構成要素
アプリケーションという単位にバージョン・環境設定がコードとして保持され、環境にバージョンが展開される
アプリケーション
- トップレベルの論理単位でバージョンや環境や環境設定が含まれている入れ物
バージョン
- デプロイ可能なコードでS3で管理する
- 異なる環境/異なるバージョンを展開可能
- バージョンレポジトリーに保持する
環境
- 各環境(ウェブサーバ/ワーカー)に応じて構築されるインフラ構築
- バージョン(ソースコード)をデプロイ
環境設定
- その環境に関連するリソースの動作を定義する設定パラメータ
- 永続データの格納場所はS3やRDSなどの外部サービスを利用する
ユースケース
Webアプリケーションのデプロイを容易にすることや、タスク時間の長いワークロードの展開に利用する
ウェブサーバ環境
- ELB+AutoScalingでスケーラブルな構成をコード化してバージョンとすることで、スケーラブルなウェブアプリケーションを実行できる
- 単一コンテナのDockerコンテナを実行可能
- 複数コンテナをECSを使用した環境実行が可能
ワーカー環境
- SQS+AutoScalingでスケーラブルなバッチ処理ワークを実現
- 定期的なタスク実行基盤の作成:毎日深夜1時に動作するバックアップ処理
- ワーカーホスト内でWebアプリケーションを動作させ、ワークロードの時間が掛る処理を実行させる
OpsWorks
OpsWorksはChefまたはPuppetを使用してアプリケーションを設定および運用するための設定管理サービスです。OpsWorksはChefやPuppetによるインフラ設定・運用の仕組みをAWS上でマネージド型サービスとして提供しています。
OpsWorks for Chef Automation
Chefサーバを作成し、継続的デプロイメントおよびコンプライアンスチェックのための完全マネージド型サーバサービスです。
- Chef Automationとは、Chefのcookbookやレシピを利用してインフラ管理を自動化するサービス
- インフラおよびアプリの継続的なデリバリーパイプラインを構成することが可能
- リソースはChefサーバから構成内容のアップデートを取得する
- オペレーション/コンプライアンス/ワークフローイベントを可視化することが可能
- AWSでChefサーバを構築することができ、Chef Automate APIやChef DKなどのツールを利用することができる。
OpsWorks for Puppet Enterprise
フルマネージド型Puppetマスターにより、アプリケーションのテスト・展開・運用を自動化します。
- Puppetマスタは、インフラ内のノードを管理し、ノード情報を保存し、Puppetモジュールの中央リポジトリとして機能する
- Puppetマスタは、ソフトウェアおよびOSの設定、パッケージのインストール、データベース設定、変更管理、ポリシー適用、モニタリングおよび品質保証などのタスクを処理する全スタックを自動化することができる
- モジュールはインフラストラクチャの設定方法に関する手順が格納された、Puppetコードの再利用および共有が可能とするユニット
- Puppetを使用して、EC2インスタンスやオンプレミスデバイスにあるのノードの設定、デプロイ、管理方法を自動化できる
OpsWorksスタック
スタックとアプリケーションの作成および管理のための、シンプルで柔軟な方法を提供するオリジナルサービスです。
- スタック/レイヤー/インスタンス/アプリケーションと呼ばれるコンポーネントによりモデル化を実施する
- コードで構成管理やオートスケーリングが可能
- Linux/Windowsサーバをサポート
- ライフサイクルイベントによるタスクの自動化が可能
- OpsWorksエージェントがChef Clientのローカルモードでレシピを実行する
- スタックがOpsWorksのトップエンティティである全インスタンスの構成情報をJSON形式で管理している
- AWS OpsWorksスタックではChefサーバは不要
Elastic Beanstalk 🆚 OpsWorks
WEBアプリのデプロイに特化したElastic Beanstalkに対して、OpsWorksは様々なアプリケーションに対応する高度なインフラ環境構築が可能です。
Elastic Beanstalk
アプリケーションのデプロイ自動化
ウェブアプリケーションやサービスを使い慣れたサーバにおいてデプロイとスケーリングするためのサービス
OpsWorks
インフラの設定自動化
ChefやPuppetのマネージド型インスタンスのサーバの設定・デプロイ・管理を自動化できるようになるインフラの設定管理サービス
CloudFormation
AWSクラウド環境内の全インフラリソースを記述してテンプレート化して展開する環境自動設定サービスです。
- プロビジョニングされたリソースの変更・削除が可能
- 追加リソースへの通常課金のみで追加料金なし
- JSON /YAMLで記述する
- クロスリージョンとクロスアカウントで管理
- 直接サポートされていないリソースや機能を利用する場合はカスタムリソースでスタック作成の一部に独自ロジックを組み込むことが可能
Amazonのコンテナサービス
名称 | サービス | 内容 |
レジストリ | Amazon ECR | コンテナエンジンに実行されるイメージが保管される場所 |
コントロールプレーン | AmazonECS AmazonEKS | コンテナを管理するサービス |
データプレーン | AWS Fargate | コンテナが実行される環境 |
Elastic Container Service(ECS)
Dockerコンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。
- コンテナ化されたアプリをAWSにおいて簡単に実行およびスケールできる
- Fargateを利用することでコンテナのデプロイと管理にサーバのプロビジョニングや管理は不要
- あらゆる種類のコンテナ化されたアプリケーションを簡単に作成できる
- Dockerコンテナの数が数十あっても数万あっても数秒で簡単に起動
- ELB /VPC /AIM / ECR /CoudWatch /CloudFormation /CloudTrailなどのAWSサービスを利用可能
- VPCネットワークモードでTask毎にENIを自動割り当てSecurityGroupをTask毎に設定可能。VPC内の他のリソースへPrivateIPで通信可能
- Fagate起動タイプとEC2起動タイプという2種類のモードがある
Amazon Elastic Kubernetes Service(EKS)
コンテナ化されたアプリケーションのデプロイ、管理、スケールをオープンソースのKubernetesを使って実行するサービスです。
- Kubernetesは自動デプロイ、スケーリング、アプリ・コンテナの運用自動化のために設計されたオープンソースのプラットフォーム
- Kubernetesのパートナーやコミュニティが作成した既存のプラグインやツールを使用可能
- マネージド型サービスでありコントロールプレーンの管理が不要
- ワーカーノードとマネージドコントロールプレーンとの間に、暗号化処理された安全な通信チャネルを自動的にセットアップする
- Kubernetes環境で管理されるアプリケーションとの完全な互換性がある
AWS Fargate
サーバやクラスタの管理なしにコンテナを実行するECSに対応したコンピューティングエンジンです。
EC2起動モード
- ECSでEC2インスタンスを起動する
- コンテナアプリケーションを実行するインフラストラクチャに対して、サーバレベルの詳細なコントロールを実行可能
- サーバクラスターを管理し、サーバでのコンテナ配置をスケジュール可能
- サーバクラスタでのカスタマイズの幅広いオプションが利用できる
Fargate起動モード
- ECSで設置できる専用のコンピューティングエンジン
- EC2インスタンスのクラスタを管理する必要がない
- インスタンスタイプの選択、クラスタースケジューリングの管理、クラスター使用の最適化は不要
- CPU、メモリなどのアプリ要件を定義すると必要なスケーリングやインフラは Fargateが管理する
- 秒で数万個のコンテナを起動
次は「【AWS資格】CloudFormationの概要」です。
前回は「【AWS資格】環境の自動化 イノベーションノウハウ」です。
コメント