AWS初心者によるAWS初心者のためのAWS環境自動化入門

はじめに

AWS上の環境構築の自動化サービスについて、勉強していたのですが
どれがどういう役割なの?違いをわかりやすくまとめた記事があると便利だよな!と思い、記事にしてみました。
image.png
AWS 公式slideshareより抜粋

Elastic Beanstalk

サーバーからネットワークの設定まで、アプリケーションの開発に必要な環境をあらかじめ整えてくれています。
運用やコストの面でもサポートしてくれて、面倒な環境の構築は Elastic Beanstalk に任せて、コードを書くだけでアプリケーションを作成することができます。

  • 開発言語は、Java / PHP / Python / Python(with Docker) / Node.js / Go / NET / Ruby
  • アプリケーションをアップロードするだけで展開できる
  • サーバーやストレージなどアプリケーションの状態をモニタリングしたり、OSとデーターベースの管理ができる
  • モニタリングやセキュリティーに必要なパッケージのみ使用してくれるので、不要なコストを削減
  • 複数のユーザーや企業が同じアプリケーションを共有し、各々でカスタマイズすることが可能

AWS CloudFormation

ほとんどすべてのAWSのリソースの構築や設定を行えるので、最も自由度が高いサービスです。
クラウド環境内のすべてのインフラストラクチャリソースを記述して、事前準備するための共通言語を提供します。

  • JSON フォーマットを使用して構成を記述
  • CloudFormer を使用すると、現在の構成をJSONフォーマットに変換でき、構成のコピーや雛形の作成が楽に
  • CloudFormation で作成したAWSリソースは、CloudFormation 以外の方法で変更してはいけない

AWS OpsWorks

サーバーのパッチ適用、アップデート、バックアップが自動的に実行され
Chef や Puppet (あらかじめ用意しておいた設定ファイルに基づいて、サーバーのさまざまな設定を自動的に行うソフトウェア、設定管理ツール)のマネージド型インスタンスを利用できるようになる、構成管理サービスです。

  • 独自の設定管理システムを運用したり、そのインフラストラクチャを管理しなくて良い
  • サーバーのパッチ適用、アップデート、バックアップの自動化
  • ソフトウェアの設定、パッケージのインストール、データベースのセットアップ、サーバーのスケーリング、コードのデプロイといった運用が自動化
  • サポート範囲は、Amazon EC2 インスタンス、Amazon EBS ボリューム、Elastic IP、Amazon CloudWatch メトリクスなど、アプリケーション志向の AWS リソースに限られている

Chef

ファイルに記述した設定内容に応じて自動的にユーザーの作成やパッケージのインストール、設定ファイルの編集などを行うツールです。
Chefでは「Cookbook(クックブック)」や「Recipe(レシピ)」と呼ばれる設定ファイルの再利用がしやすい構造になっている点が特徴。
Ruby と Erlang で記述。Chef はフランス語で言う「料理人」が由来になっており、その構成要素も料理をモチーフにして命名されたそうです。

Puppet

サーバーの環境設定やインストールなどを自動化する設定管理ツール。
Puppet は Ruby で実装されており、各種操作の実行を行うためのフロントエンドであるpuppetコマンドと、各種機能を実装した Ruby ライブラリから構成されています。

それぞれのサービスの適正

OpsWorks CloudFormation Elastic Beanstalk
用途 アプリケーションのモデル化、デプロイ、設定、管理、および関連アクティビティ アプリケーションのモデル化、デプロイ、設定、管理、および関連アクティビティ インスタンス上のWEBアプリケーションの展開と管理を自動化
管理レベル より詳細で高レベル。柔軟性があり、単純な構成も複雑な構成も対応 環境の土台を作る インフラ環境そのものを自動で展開したり管理するには不向き
自由度 ユーザー独自のChefのクックブックを使用できる。EC2がほぼ自由に設定可能 OSより下のレイヤーでは自由度が高い。JSON or YAMLで記述してコード化 プログラミング言語、Docker コンテナのプラットフォーム
構成 スタックやレイヤーといったコンセプトに基づく 5 種類のテンプレート要素で自由にスタックを構成。 主なサーバはApache / Nginx / Tomcat / IIS
需要者 知識があり、運用に効率性・柔軟性がほしい 自分で好きなように管理モデルをカスタムしたい 専門知識がない、とりあえずな環境が欲しい

所感

繰り返し高頻度で行われる環境構築や、デプロイの作業は自動化できたほうが確実に効率が良いですよね。
手作業によるミスや、長時間の作業の無駄を省くためにも、重宝するべきサービスだと思います。
どこまで詳細に設定する必要があるのかで、どれを使うか選べるのも良い点ですね。

公式サイトリンク

AWS 公式サービス別ガイド