AWS再入門2018 自動構成・デプロイサービス編
こんにちは。池田です。札幌オフィスではエントランスや会議室にお花を活けるプロジェクトがあります。たまにではありますが、元花屋として活動に参加しています。オフィスにいらした際は、ぜひお花も気にかけてみてください。
AWS 認定ソリューションアーキテクト – プロフェッショナル認定試験に向けた勉強の一環として始めた「AWS再入門2018シリーズ」ですが、ついに第十弾となりました。「焦って無理に全部をいっぺんに覚えようとせず、ひとつずつ理解を積み重ねていこう」というコンセプトで今後も続けていく予定です。 記事の最後に今までの一覧を掲載しておきますので、それぞれの記事についてもご覧いただければ幸いです。
はじめに
前回の記事でAWS CloudFormationについて整理しましたので、今回は同様にインフラ構築やアプリケーションのデプロイなどを自動で行える他の3サービス(AWS Elastic Beanstalk、AWS OpsWorks、AWS CodeDeploy)について、それらの特徴と違いなどを整理していこうと思います。
もくじ
概要
- インフラやアプリケーション等の自動構成・デプロイサービスという大分類としては4兄弟いる
- AWS CloudFormation
- AWS Elastic Beanstalk
- AWS OpsWorks
- AWS CodeDeploy
- 目的に応じて適したサービスを選択する必要がある
- それぞれ得意分野がある
AWS Elastic Beanstalk
- アプリケーションのデプロイ、そのアプリケーションが動作するインフラの構築を自動化
- Webアプリケーション向けの構成に適している
- ELB、Auto ScalingとEC2、RDSといった定番構成
- 多くの主要なプログラミング言語やWebサーバ等をサポート
- Java
- .NET
- PHP
- Node.js
- Python
- Ruby
- Golang
- Docker
- Apache
- Nginx
- Passenger
- IIS
- アプリケーションのバージョン管理機能
- Environmentという単位で複数の環境を保持できる
- ブルーグリーンデプロイを利用したバージョンアップ時のテストなど
- コンフィグファイルを利用した柔軟な環境構築
- サーバへの追加ソフトウェアのインストール
- ライブラリやファイルの追加配置
- デプロイ処理の前に実行するコマンドやスクリプトの指定など
AWS OpsWorks
- アプリケーションデプロイを自動化するサービス
- 単純なWebアプリケーションから複雑なエンタープライズアプリケーションまで、幅広いアーキテクチャに対応
- アプリケーションをレイヤーで分けてモデル化することで体系的な管理、可視化を実現
- 3つの手段が提供されている
- AWS OpsWorks Stacks
- AWS OpsWorks for Chef Automate
- AWS OpsWorks for Puppet Enterprise
- デプロイや運用タスクをレシピとして定義することで運用負荷の軽減に寄与
- オンプレミス環境にも対応
- ライフサイクルとして定義されたイベントに応じて実行するレシピを指定できる
AWS CodeDeploy
- アプリケーションのデプロイに特化
- Amazon EC2、AWS Lambda、オンプレ環境に対応
- AWS マネジメントコンソール、CLI、SDK、APIによる一元管理が可能
- デプロイ先をタグでグループ分けできる
- ローリングアップグレードによりダウンタイムを最小に抑えられる
- 言語およびアーキテクチャに依存しない
- Code3兄弟のひとつ
- CodeCommit(ソース管理)
- CodePipeline(ビルド・テスト)
- CodeDeploy(デプロイ)
まとめ
一見似たようなサービスでも並べて比較するとそれぞれの使い所が理解しやすいと感じました。構築したいリソースとその目的や特性と管理サービス側に求める機能をきちんと把握しておけば、適切なサービスを選択できると思います。
- デプロイ
- CodeDeploy
- 環境構築
- CloudFormation
- デプロイと環境構築
- OpsWorks、Elastic Beanstalk