AWS CloudFormationとは|特徴、問題点
AWS CloudFormationとは、「AWSリソースを自動で構築することができるサービス」です。YAMLやJSON形式で記述されたテキストファイル(テンプレート)を作成することで、同じ環境を誰でも、ミスなく、瞬時に構築することができます。本記事では、AWS CloudFormationの概要や特徴、導入する際の問題点についてご紹介します。
目次
AWS CloudFormationとは
まず、AWS CloudFormationの概要についてご紹介します。
AWS CloudFormationとは、「YAMLやJSON形式で記述されたテキストファイル(テンプレート)に基づいて、AWSリソースを自動で構築することができるサービス」のことです。
頻繁に使用する環境のテンプレートをコードによって作成し、管理することで、同じ環境を誰でも、ミスなく、瞬時に構築することが可能になります。これにより、環境をゼロから構築するのに比べ、手間や時間を大幅に削減することができ、開発の効率化を図ることができます。さらに、同じインフラ環境を構築できることは、開発チームと運用チームが連携して開発を進めていくDevOpsにおけるプロセスの自動化に貢献し、開発を一定の品質かつ高速で進めることを可能にします。
AWS CloudFormationサービス自体は無料で利用することができます。しかし、併用するAWSリソースにはそれぞれ費用が発生します。
CloudFormationを使用したAWSリソースの構築プロセス
AWS CloudFormationを利用し、AWSリソースを自動で構築するためのプロセスは以下の図の通りです。
①テンプレートの作成
テンプレートの作成には、主に2つの方法があります。
自社でYAMLまたはJSON形式でゼロからテキストファイルを作成するか、AWS公式HPに掲載されているサンプルテンプレートをそのまま流用または一部変更することで作成します。
②保存
作成したテンプレートをローカルまたはS3バケットに保存します。
③スタックの作成
AWS CloudFormationを使用し、保存したテンプレートに基づいてスタックを作成します。
④リソースの構築
AWS CloudFormationは、テンプレートで指定したスタックリソースの構築・構成を実行します。
AWS CloudFormationの特徴
次に、AWS CloudFormationの特徴をご紹介します。
再現性
一度テンプレートを作成すれば、同じ環境を何回でも再現することができます。これにより、環境構築にかかる手間や時間を大幅に削減したり、人為的なミスを回避することが可能です。
インフラの管理が簡単
一度テンプレートを作成すれば、同じ環境を何回でも再現することができます。これにより、環境構築にかかる手間や時間を大幅に削減したり、人為的なミスを回避することが可能です。
運用コストが予測しやすい
新しいシステムであっても、過去に使用したテンプレートを流用した場合、運用にかかるコストが予測しやすくなります。
無料で利用できる
AWS CloudFormationの利用において、費用はかかりません。しかし、Amazon EC2やAWS ELB、VPCなど、併用しているほかのAWSリソースの料金は発生します。
豊富なテンプレート
テンプレートを自社でゼロから作成することも可能ですが、AWSの公式HPには、ベストプラクティスが含まれたさまざまなサンプルテンプレートやテンプレートスニペット(簡単に切り貼りして再利用できるソースコードの一部)が公開されており、これらをそのまま流用することで、簡単にセキュリティと可用性を兼ね備えた環境を構築することができます。また、サンプルテンプレートをベースとし、一部を自社に合わせて変更することで、効率よく、抜けや漏れのない環境構築が可能になります。
拡張性
AWS CloudFormation Registryを使用することで、MongoDB、Datadog、Atlassian Opsgenie、JFrog、Trend Micro、Splunkなどのサードパーティのリソースとモジュールを検出、プロビジョニング、および管理することができます。
複数アカウント・複数リージョンの管理
CloudFormation StackSetsを使用することで、1つのテンプレートで、アカウントの数や所在地に関係なく、共通のAWSリソースセットを安全かつ自動的にプロビジョニング、更新、削除することができます。
問題点
AWS CloudFormationを導入することには、次のような問題点があります。
①学習コストがかかる
AWS CloudFormationのテンプレートは、YAMLやJSON形式で記述されるため、これらのファイル形式に慣れていない場合は、それらを学習し理解するのに時間がかかってしまいます。また、社内に詳しい人がいなければ、外部から講師を招いたりするなど、金銭的なコストも発生する場合があります。
②手動で修正するよりも時間がかかる場合もある
ちょっとした修正をしたい場合であっても、もう一度テンプレートからスタックを作成し、適用する必要があるため、場合によっては手動で修正するよりも時間がかかってしまう可能性があります。
③リソース作成上限がある
AWS CloudFormationのテンプレートでは、作成できるリソースは500個までという制限が設けられています。この作成上限に到達しないために、1つのテンプレートを複数に分離する方法があります。
まとめ
開発の基盤となる環境の構築における手間や時間を削減することは、DX(トランスフォーメーション)を迅速かつ効率よく推進するうえで非常に重要です。また、開発担当と運用担当が連携・協力することで、ソフトウェア開発を柔軟かつ迅速に進める開発手法であるDevOpsにおいても、さまざまなプロセスを自動化するために同じ環境を構築できることが求められます。これらの理由から、本記事で紹介したAWS CloudFormationをはじめとしたインフラをコードで管理し、効率的に本番環境を構築できるIaCツールの活用はますます促進すると考えられます。
インフラの構築や管理で困っていることや相談したいことがある企業様は、お気軽にCMC Japanにお問い合わせください。CMC Japanは、ベトナム第2位のICT企業である「CMC Corporation」の日本法人であり、30年の開発ノウハウとインフラを含む多様なスキルセットを備えた2200人以上のITエンジニアを擁しております。ヒアリングをもとに、お客様のご要望やお悩みに合わせたコンサルティングやITソリューションを提供いたします。