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
実践!CloudFormation Best Practice
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
urmot
December 20, 2018
Programming
0
250
実践!CloudFormation Best Practice
urmot
December 20, 2018
Tweet
Share
More Decks by urmot
See All by urmot
DDDにおける認可の扱いとKotlinにおける実装パターン / authorization-for-ddd-and-kotlin-implement-pattern
urmot
4
1.7k
ログラスを支える設計標準について / loglass-design-standards
urmot
12
2.9k
ログラスを支える技術的投資の仕組み / loglass-technical-investment
urmot
10
6.1k
実践!CloudFormation Best Practice ~CloudFormationで始める組織改革~
urmot
2
3.5k
CircleCIを導入した話
urmot
0
100
SPA on AWS
urmot
0
220
RDBのログを取る時にDMSを使うという選択肢
urmot
0
150
ベンチャー企業のインフラを運用して学んだ99のこと
urmot
0
1.3k
Other Decks in Programming
See All in Programming
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
190
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
390
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
260
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1.3k
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
350
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
160
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
520
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
660
Graviton と Nitro と私
maroon1st
0
180
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
580
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.3k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
170
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
86
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
48
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
82
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
We Are The Robots
honzajavorek
0
140
The Curse of the Amulet
leimatthew05
1
7.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
ラッコキーワード サービス紹介資料
rakko
1
2.1M
For a Future-Friendly Web
brad_frost
181
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Transcript
実践! CloudFormation Best Practice ~設計編~ レバレジーズ株式会社 村本 雄太 2018/12/19
目次 • 自己紹介 • 背景 • 解説!CloudFormation Best Practice •
実践!CloudFormation Best Practice • まとめ
自己紹介.yaml Name: 村本 雄太 BelongsTo: レバレジーズ株式会社: SRE Team Tags: -
新卒2年目 - いんふらえんじにあ
自己紹介.png
自己紹介.png
自己紹介.png
自己紹介.png
背景
背景 CloudFormationテンプレートを管理するのにつかれた
CloudFormationテンプレートが肥大化 どこに何を書けばよいかわからない そして誰も使わなくなる... 背景 CloudFormationテンプレートを管理するのにつかれた
誰も使わないテンプレートじゃなくて みんなが使うものを作ろう!
背景
AWS CloudFormation Best Practice を実践しよう!
解説!AWS CloudFormation Best Practice by https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/best-practices.html
解説!AWS CloudFormation Best Practice 1. ライフサイクルと所有権でスタックを整理 2. クロススタック参照を利用して共通リソースをエクスポート 3. ネストされたスタックを利用して共通テンプレートパターンを再利用
4. テンプレートを再利用して複数環境にスタックを複製する
1. ライフサイクルと所有権でスタックを整理
解説!CloudFormation Best Practice ライフサイクルと所有権によるStackの整理 • Stackを分ける基準についての項目 • ライフサイクルと所有権という概念でStackを分ける • 他リソースに影響を与えずリソースセットを変更可能
ライフサイクルとは
解説!CloudFormation Best Practice ライフサイクルが同じリソースはまとめて管理しよう • AWSリソースのライフサイクルのこと • テンプレートの変更による影響を閉じられる • Point:
AWSリソースの死に際を意識する ◦ あるAWSリソースを削除する時に同時に削除されるべきものを纏める
解説!CloudFormation Best Practice 例: 期間限定のキャンペーン用のサーバをつくる Campaign EC2 Campaign ELB WebSite
ELB WebSite EC2 S3 RDS
解説!CloudFormation Best Practice 例: 期間限定のキャンペーン用のサーバをつくる Campaign EC2 Campaign ELB WebSite
ELB WebSite EC2 S3 RDS キャンペーン終了後 使ったリソースを 削除したい
解説!CloudFormation Best Practice 例: 期間限定のキャンペーン用のサーバをつくる Campaign EC2 Campaign ELB WebSite
ELB WebSite EC2 S3 RDS キャンペーン終了後 使ったリソースを 削除したい
解説!CloudFormation Best Practice 例: 期間限定のキャンペーン用のサーバをつくる Campaign EC2 Campaign ELB WebSite
ELB WebSite EC2 S3 RDS キャンペーン終了後 使ったリソースを 削除したい キャンペーンでS3 使ってたっけ?
解説!CloudFormation Best Practice
解説!CloudFormation Best Practice 解決策: キャンペーン用のStackを別に作成する Campaign EC2 Campaign ELB WebSite
ELB WebSite EC2 S3 RDS Campaign ELB Campaign EC2 S3 WebSite ELB WebSite EC2 S3 RDS
解説!CloudFormation Best Practice 例: 期間限定のキャンペーン用のサーバをつくる Campaign ELB Campaign EC2 S3
WebSite ELB WebSite EC2 S3 RDS キャンペーン終了は キャンペーンのStack を削除するだけ
解説!CloudFormation Best Practice 解決策: キャンペーン用のStackを別に作成する Campaign ELB Campaign EC2 S3
WebSite ELB WebSite EC2 S3 RDS キャンペーン終了は キャンペーンのStack を削除するだけ キャンペーンリソースが 削除された事による影 響を閉じられる
所有権とは
解説!CloudFormation Best Practice 所有権が異なるリソースは分けて管理しよう • AWSリソースの所有権のこと • AWSリソースを誰が管理すべきかという観点で考える • 各チームのリソース変更にかかるコストを減らせる
• テンプレートの柔軟な変更が可能となる
解説!CloudFormation Best Practice 例: DBチームとWebチームで運用されているサービス EC2 ELB RDS Parameter Groups
Security Group Security Group
DBチーム: RDS SecurityGroup を変更したい 解説!CloudFormation Best Practice 例: DBチームとWebチームで運用されているサービス EC2
ELB RDS Parameter Groups Security Group Security Group
Webチーム: Web SecurityGroup を変更したい 解説!CloudFormation Best Practice 例: DBチームとWebチームで運用されているサービス EC2
ELB RDS Parameter Groups Security Group Security Group
更新タイミング の調整 影響範囲の確認 解説!CloudFormation Best Practice 例: DBチームとWebチームで運用されているサービス EC2 ELB
RDS Parameter Groups Security Group Security Group
解説!CloudFormation Best Practice
解説!CloudFormation Best Practice 解決策: WebチームとDBチームでStackを分ける EC2 ELB RDS Parameter Groups
Security Group Security Group EC2 ELB RDS Security Group Parameter Groups Security Group
解説!CloudFormation Best Practice 解決策: WebチームとDBチームでStackを分ける EC2 ELB RDS Security Group
Parameter Groups Security Group 更新タイミング の調整は不要 影響範囲もStack内 で確認できればOK
解説!CloudFormation Best Practice • SOA = Service Oriented Architecture ◦
ServiceをNetwork上で連携させてシステムの全体構成をしていく ◦ Service: 業務上の一処理 • 多層アーキテクチャ ◦ アプリケーションを複数の層に分け, 独立したモジュールとして開発 ◦ 各層はその直下の層に依存する おまけ: 詳細なStackの分け方は多層アーキテクチャとSOAが使える(らしい)
2. クロススタック参照を利用して共有リソースを エクスポート
解説!CloudFormation Best Practice クロススタック参照で共有リソースをエクスポートする • 別Stackのリソースの値を参照できる • 参照されている値の変更は不可能 ◦ 依存関係ができるので利用する際は注意が必要
• ハードコードするくらいならクロススタック参照
3. ネストされたスタックを使用して 共通テンプレートパターンを再利用する
• StackとTemplateは別の概念と認識する • Template: 呼び出す際に値を注入して利用 • Stack: AWSリソースを作るための情報を全て持つ • テンプレートが膨大になることを防ぐ
◦ どこに何を書けばよいかわからない状態を防げる 解説!CloudFormation Best Practice ネストされたスタックを使用して共通パターンを再利用する
• StackもCloudFormationで作ることができる • 共通したパターンを別Templateに抽出する • 抽出したTemplateからStackを作成する • ネストされたStackの変更は参照先に伝搬する 解説!CloudFormation Best
Practice AWS::CloudFormation::Stackを使う
解説!CloudFormation Best Practice ネストされたStackを利用するメリット • コピペを減らせる • Stackをコンポーネントに閉じることができる • コンポーネントの保守を分担できる(かも)
4. テンプレートを再利用して 複数環境にスタックを複製する
解説!CloudFormation Best Practice テンプレートを再利用して複数環境にスタックを複製する • CloudFormationは条件式を使った制御が可能 • 開発、テスト、本番の環境を条件式で制御する
• Stackは極力簡潔に書きたい • 条件式による制御をいれると複雑になってしまう • あと、各環境で差分が結構ありそう ◦ 冗長化をしない ◦ 低スペックにする
◦ テスト環境は社内アクセスのみ 解説!CloudFormation Best Practice 個人的な疑問点
実践!CloudFormation Best Practice
実践!CloudFormation Best Practice ディレクトリ構成: StackとTemplateを分ける
• ライフサイクルと所有権によってStackを分ける • 再利用されないことを前提とする • AWSリソースを作るために必要な情報を全て記述 ◦ CloudFormationで管理していないものはここでハードコードする 実践!CloudFormation Best
Practice Stacks: AWSリソースを作るために必要な情報を全て記述する
• 共通したライフサイクルと所有権を持つリソース郡 • <Service>間の連携にはクロススタック参照を用いる • SOAの考えが利用できる部分(かもしれない) 実践!CloudFormation Best Practice <Service>:
ある機能を構成するAWSリソース郡をまとめたもの
• 各層のリソースは類似したライフサイクルと所有権を持つ • 各層はその直下の層に依存する • 各層はネストされたStackとして依存解決を行う 実践!CloudFormation Best Practice <Layer>:
多層アーキテクチャでいう独立したモジュール
• <Service>以下のディレクトリには必ずmaster.yamlを置く • 各層の依存解決を担う • クロススタック参照で使う値のエクスポートも行う 実践!CloudFormation Best Practice master.yaml:
各層の依存解決を行うCloudFormationテンプレート
• 再利用されることを前提に記述する • ParametersやConditionsを使用して制御を行う • よく使う設定をここにまとめる 実践!CloudFormation Best Practice Templates:
共通パターンのテンプレート郡
まとめ
CloudFormation Best Practiceを実践する まとめ 所有者が明確になり、 少ない操作で安全にAWSリソースを更新できる みんなが使うテンプレートの完成!?!
おわり