Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
社内勉強会 IaCツール技術選定 CloudFormation編
Search
krabben16
June 03, 2022
Technology
1
150
社内勉強会 IaCツール技術選定 CloudFormation編
2022/06/01
スライドテンプレート
https://www.canva.com/ja_jp/templates/EAD4Ce41AOs/
krabben16
June 03, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
Algyan イベント振り返り
linyixian
0
200
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
470
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
2
170
Hands-on / Kaname Frusawa / Cloud Compare Users Meetup 2024 at University of Tokyo on April 17
paraworld
2
480
Databricks:『生成AI World Cup』のご案内
databricksjapan
2
160
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
120
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.3k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
370
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
150
Kernel MemoryでAzure OpenAI Serviceとお手軽データソース連携
mitsuzono
1
160
FrontDoorとWebAppsを組み合わせた際のリダイレクト処理の注意点
kenichirokimura
1
450
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
800
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
16
1.4k
Rails Girls Zürich Keynote
gr2m
91
13k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
77
42k
Producing Creativity
orderedlist
PRO
336
39k
How GitHub (no longer) Works
holman
304
140k
Clear Off the Table
cherdarchuk
83
310k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
How to Ace a Technical Interview
jacobian
272
22k
Building Effective Engineering Teams - LeadDev
addyosmani
28
1.8k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Documentation Writing (for coders)
carmenintech
59
3.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Transcript
IaC ツールの技術選定 CloudFormation編 株式会社ユニクエスト 開発部 SRE チーム 河口拓貴
本日の概要 CloudFormation (CFn )の特徴 Terraform とCFn の違い まとめ
CFn の特徴
引用元: https://aws.amazon.com/jp/cloudformation/features/ CFnの特徴 > CloudFormation では、お客様のクラウド環境 全体をテキストファイルでモデルリングできま す。JSON または YAML
などのオープンソース宣 言型言語を使用することで、作成、設定したい AWS リソースを記述できます。 JSON/YAML によるオーサリング Terraform は独自の文法=HCL (HashiCorp Configuration Language) で実装する必要があ る。
引用元: https://aws.amazon.com/jp/cloudformation/features/ CFnの特徴 > AWS Cloud Development Kit (AWS CDK)
で は、TypeScript 、Python 、Java 、.NET を使用し てクラウド環境を定義できます。AWS CDK は使 い慣れたプログラミング言語を使用するクラウド アプリケーションリソースをモデルリングし、 CloudFormation を IDE から直接使用してインフ ラストラクチャをプロビジョニングする際に役立 つオープンソースソフトウェア開発フレームワー クです。 使い慣れたプログラミング言語 例えばTS でCFn テンプレートを書ける。 コードの入力補完、型チェックが効く。
引用元: https://dev.classmethod.jp/articles/cdk-workshop-typescript/
引用元: https://aws.amazon.com/jp/cloudformation/features/ CFnの特徴 > AWS CloudFormation の変更セット機能では、 スタックに対して提案された変更が実行中のリソ ースにおよぼす影響、たとえば変更で重要リソー スが削除されたり置き換えられたりしないかをプ
レビューできます。 変更点のプレビュー Terraform におけるplan コマンドのようなもの?
引用元: https://aws.amazon.com/jp/cloudformation/features/ CFnの特徴 > AWS CloudFormation では、スタック管理アク ション中にリソース間の依存関係が自動的に管理 されます。リソースを作成、更新、削除される順 序を指定する必要はありません。スタックオペレ
ーションの実行の際には、CloudFormation によ って正しいアクション順が決められます。 依存関係の管理 Terraform はリソース間の依存関係を把握して構 築順序を制御しなければならない場面がある。
引用元: https://docs.aws.amazon.com/ja_jp/ja_jp/AWSCloudFormation/latest/UserGuide/best-practices.html CFnの特徴 > ベストプラクティスはワークフロー全体で AWS CloudFormation をより効率的かつ安全に使用す るために役立つ推奨事項です。 ベストプラクティス
・IAM を使用したアクセス制御 ・モジュールを使用してリソース構成を再利用す る 例. 計画と編成 ・テンプレートに認証情報を埋め込まない ・パラメータの制約の使用 例. テンプレートの作成
引用元: https://dev.classmethod.jp/articles/cdk-workshop-typescript/ CFnデザイナー
Terraform との違い
Terraformとの違い 引用元: https://dev.classmethod.jp/articles/terraform-or-cloudformation/ 異なるIaaS へのデプロイ AWS 、Azure 、GCP にデプロイ可能。 Terraform
AWS のみデプロイ可能。 CloudFormation
Terraformとの違い 引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21 リソースの状態の持ち方 tfstate ファイルで管理する。 ファイルの格納場所を考慮する必要がある。 Terraform AWS 側で管理される。
CloudFormation
引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21
Terraformとの違い 引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21 変更内容のプレビュー 詳細な差分を確認できる。 例. instance_type = "t2.micro" ->
"t3.micro" Terraform ざっくりした差分を確認できる。 どのような変更が加わるかは確認できない。 CloudFormation
引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21
Terraformとの違い 引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21 apply 失敗時のロールバック ロールバックは手動で行う。テンプレートを過去 のバージョンに戻して再びapply する必要があ る。 Terraform
CloudFormation ロールバックは自動で行われる。
Terraformとの違い 引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21 リソースのタグ付け リソースごとに設定する。 Terraform 全リソース共通のタグを設定する。 リソースごとに設定することも可能。 CloudFormation
Terraformとの違い 引用元: https://qiita.com/answer_d/items/74c3d317058d48394d21 初期処理の完了待ち UserData で実行する処理の完了を待つことはで きない。 Terraform CloudFormation 処理の完了を待つことができる。
例. WaitCondition や CreationPolicy など
まとめ
良いところ TypeScript で実装できる。 IDE の入力補完、型チェックが効く。 CDK 効率性/ 安全性を重視したベストプラクティスが示さ れている。「どのように実装すべきか」を気にせず 開発に集中できる。
ベストプラクティス 自動ロールバック 手動でrevert する必要がない。
微妙なところ 差分のプレビュー CFn は「どのリソースが変更されるか」は確認できるが 「どのような変更がされるか」は確認できない。 テンプレートの分割 分割方法が複数あり、設計を考える必要がある。 ・クロススタック参照 ・スタックのネスト