この記事の目次
CloudFormationとは?
CloudFormationとは、AWSシステム構成をJSON(データ交換フォーマット)で記述しテンプレート化し修正や管理を容易にするサービスになっています。
テンプレートによって作成された環境群(スタック)からShare Point、WordPressなどのサンプルが多く提供されています。
こういったテンプレートを利用する事で、その環境を「用意、利用」する事ができ、リソース管理に費やす時間を削減し、AWSアプリケーションの実行などにより注力できるようになります。
利用する全てのリソースを記述するテンプレート作成をする事で、ユーザーに代わりリソースのプロビジョニングを受け持ってくれます。
また、CloudFormationは、個別にリソース作成や設計し、個々の依存関係を考慮する必要はありません。
CloudFormation代表的なメリット
ここでは「プロビジョニングをテンプレート化する事が可能」「リソースの設定もテンプレート化する事が可能」「インフラの管理などの負担を削減できる」というメリットを紹介します。
プロビジョニングをテンプレート化する事が可能!
CloudFormationは、プロビジョニング(技術・サービス提供)をコード化して実行する事が可能です。
CloudFormationでは、テンプレートを利用する事で、1から基盤を作成する事がなく手間を減らし環境構築が可能になります。
リソースの設定もテンプレート化する事が可能!
CloudFormationでは、頻繁に利用するリソースの組み合わせをテンプレート化し、同様の環境を構築する事が楽になります。
多くのテンプレートが存在しているAWSでは、CloudFormationにより開発システムを状況に合わせてテンプレートの利用が出来るので、労力や手間を削減できます。
インフラの管理などの負担を削減できる!
CloudFormationにより人的ミスなどの削減が期待できます。
CloudFormationによるテンプレートをスタック形式で一元管理するので、個別で管理するより漏れなどが発生しづらく人的ミスを減らす事が出来ます。
よく耳にするけど、deployってなに?
AWSを利用する上でよく耳にするdeployとは「展開、配置」という開発工程、利用できる状態にする事を指します。
deploy作業は、開発において作成したプログラムをサーバーにアップロードし、任意のサーバー環境で利用する事が出来ます。
補足としてdeployは、必ずしもリリース(公開)という事ではなく、開発環境からテスト段階への移行でもdeployという事もあります。
AWSでは「Code deploy」というものがあり、AWSで提供されているオンプレミス、Lambda関数、EC2などのアプリケーションを自動化して既存のコードを変えることなく利用が出来る利点があります。
deployには、いくつかの種類があります!
deploy1つとっても幾つかの種類が存在します。
「Code deploy、ブルーグリーンデプロイメント、イミュータブルデプロイメント、シンボリックデプロイメント、ローリングデプロイメント」などがあります。
Code deployは、前章で少し触れたようにDeployを自動で行い且つ同時に行いダウンタイム最小化や、ロールバックが手軽に行えるなどの利点もあります。
ブルーグリーンデプロイメント
ブルーグリーンデプロイメントとは、AWSほぼ全てのプラットフォームで利用が出来るdeploy方法になります。
deployのルールや成功、失敗の条件などを指定する事も可能になります。
ブルーグリーンデプロイメントは、名前の由来でもある「ブルーとグリーン」に環境を分け既存の環境をブルーで稼働しておき新しい環境をグリーンで稼働する事が出来ます。
deployが何事もなく完了したらグリーンに切り替える事でアップデートが完了し新しい環境に問題がなければ、そのまま運用がされます。
その際、旧環境は次回のdeployまで維持する必要があるので、運用する為にコストが発生してしまいます。
イミュータブルデプロイメント
イミュータブルデプロイメントは、手法はブルーグリーンデプロイメントと同じですが少し仕様が異なります。
イミュータブルデプロイメントでは、新しい環境へ切り替えた後、既存の環境を破棄します。
deployする度に既存の環境を破棄するのでブルーグリーンデプロイメントとは違い運用コストが発生しません。
シンボリックデプロイメント
シンボリックデプロイメントと「ブルーグリーンデプロイメントやイミュータブルデプロイメント」とは仕様が異なります。
運用中のサーバーとは、別のところにファイルを配置してサービス利用しているシンボリックリンク(Windowsでいうショートカットとのような役割)を変更して新しいアプリケーションへ切り替えます。
各サーバーへ新しいアプリケーションを配置後、アプリケーションのシンボリックリンクを切り替えるので、「サーバーを増やしたくない、低コストで且つ自動化したい!」場合におススメです。
ローリングデプロイメント
ローリングデプロイメントとは、順次サーバーに対してdeployを行う手法です。
ローリングデプロイメントは、新・旧の環境が一時的に混在するので注意が必要になります。
deployとビルドやリリースとの違い!
「Deploy、ビルド、リリース」この3つは似たような意味合いを持っていますが、実は、役割が異なるので本章で分かりやすく解説をします。
初めにこの3つの役割を簡単に説明をします。
まず「Deploy」を行うには準備が必要になり、その準備の工程で「ビルド」というものがあり、次にアプリケーションを公開する事を「リリース」といいます。
ビルドとは?
ビルドとは、deployに必要な実行ファイルを作成する工程になります。
ソースコードを変換(コンパイル)して各ファイルをまとめて実行し、対象の環境へアプリケーションを展開します。
リリースとは?
リリースでは、本番環境でアプリケーションを公開する事を指します。
ユーザーが利用可能状態になるという事は、deployと変わらないと思われがちですが、「リリース」では、deployを含め様々な工程が組み込まれています。
少し複雑ですが、覚えておくと今後に役立ちます。
AWSってなんだっけ?
ここまでAWS CloudFormation deployについて解説をしてきましたが、そもそものAWSのサービス概要についておさらいをしていきます。
AWS(Amazon Web Services)とは、クラウドコンピューティングの総称で、インターネットを介してストレージ、サーバーといったコンピューターを使てサービスを利用する事です。
手元に1台インターネット環境が備わっているパソコンを持っているだけで、大容量ストレージ、サーバーが必要な時に必要な数だけ利用が出来ます。
今までの物理サーバーとの違いはあるの?
結論からいうと「コスト、管理、スペース」などの負担の軽減に繋がります。
従来までのオンプレミス型のサーバーだと、機器を設置するにあたってスペースの確保や機器購入するにあたってのコストなどがかかっていました。
機器の納期などが長期間になると、運用までに時間もかかります。
そこで、AWSの様なクラウドコンピューティングでは、機器購入、管理、スペースの確保などの必要がインターネット上で完結します。
必要な時に必要な分だけ確保、管理などが出来るので、オンプレミス型に比べるとスピード感があり手軽に利用が出来ます。
AWSのメリット・デメリットについても解説します。
AWSのメリットとして「コスト面、セキュリティー面、スピード感、スペース」等が挙げられます。
機器の購入が不要なので、コスト面やスピード、スペースの確保などに悩まずに済む事が、AWSサービスの特徴になります。コスト面に関しては、使い方により変動があるので月の支払いが予想しづらいというデメリットとしての捉え方もできます。
また、セキュリティー面に関しても豊富な認証システムやセキュリティー環境が管理者の負担なく利用できます。
ですが、デメリットとしてAWSは、数百ほどのサービスを展開しているので、ある程度の知識や増えていくであろうAWSのサービスについての知識を常に最新化しておく事が求められます。
CloudFormation Deployを理解してAWSを賢く利用しよう!
AWS CloudFormation1つとっても様々な役割や意味合いを持っています。
CloudFormationでは、システムをテンプレート化しておく事で次回、構築する際に人的ミスの削減や手間の削減を図っています。
「deploy、リリース、ビルド」は同等かと思われがちですが、ビルドあってとなりdeployあってのリリースと少し複雑ですが、覚えておく事で今後AWSを利用する上で役立ちます。
また、deployにも幾つかの方法があり、用途などに沿って使い分ける事でより効率的にAWSを利用する事が出来ます。