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
Terraform ですべてを管理するのに疲れた😭
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hasegawa Takuya
December 14, 2021
Programming
800
1
Share
Terraform ですべてを管理するのに疲れた😭
社内LTなのでちょいちょい雑です
Hasegawa Takuya
December 14, 2021
More Decks by Hasegawa Takuya
See All by Hasegawa Takuya
1014-AWS-EC2-Graviton2
rluisr
0
940
Other Decks in Programming
See All in Programming
AI Agent と正しく分析するための環境作り
yoshyum
2
430
Agent Skills を社内で育てる仕組み作り
jackchuka
1
1.9k
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
1.9k
[RubyKaigi 2026] Require Hooks
palkan
1
310
Agentic Elixir
whatyouhide
0
450
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
200
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
28
20k
継続的な負荷検証を目指して
pyama86
3
1.1k
Firefoxにコントリビューションして得られた学び
ken7253
2
160
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
130
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.1k
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.2k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Invisible Side of Design
smashingmag
302
52k
Color Theory Basics | Prateek | Gurzu
gurzu
0
310
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
48
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
First, design no harm
axbom
PRO
2
1.2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
Terraform ですべてを管理す るのは疲れた😭 SRG 長谷川
6年間 手入れがされてない サービスがあった。 ※ Disってるわけではない
それはいつしか こっちの持ち物になった
そのコンポーネントは 日々重要度を増していた...
自己紹介 • 長谷川 拓也 ◦ 2018年度新卒入社 ◦ メディア系サービスの横断組織 ◦
サービスリライアビリティグループ(SRG)所属 ◦ 合同会社HCloud の社長でもある • 好きなこと(もの) ◦ 色々
現在の状況 • AWS を利用 • 使ってるサービスはたった2つ • EC2 ◦ m1.small
もいる ◦ 全台に Elasitc IP が付与されている • Classic Load Balancer ◦ Classic !!!
CentOS6 で... Chef で... munin/nagios で... • この EC2 たちの問題点
• EC2 は m1.small • OS は CentOS 6 • Chef は個人的に嫌いだし • アプリログをどこかに送ってるわけでもなく • 監視は munin と nagios • 運用管理を楽にして、監視も Datadog に一元管理したい
どのサービスを利用するか • Fargate vs ECS on EC2 ◦ ECS on
EC2 のメリットは今回は無い ◦ EC2 の管理したくない >< • Fargate vs App Runner ◦ App Runner は VPC 内のリソースにアクセスできない ▪ ref: https://github.com/aws/apprunner-roadmap/issues/1 = Fargate に決定!
で、Chef はどうする? • コンテナ化にするから Chef は不要になる • かといって IaC 環境がないのは心理的安全性に欠ける
• Terraform or Pulumi or CDK ◦ 最初は Terraform を書いていた ▪ 既存のコードのコピペができて楽だった ▪ でもこのコードを環境ごとに追加していくのは辛い ◦ Pulumi は個人的に好きだけどこのためだけにゼロから書くのは辛い ◦ CDK もゼロから書くのは辛い
で、Chef はどうする? • コンテナ化にするから Chef は不要になる • かといって IaC 環境がないのは心理的安全性に欠ける
• Terraform or Pulumi or CDK ◦ 最初は Terraform を書いていた ▪ 既存のコードのコピペができて楽だった ▪ でもこのコードを環境ごとに追加していくのは辛い ◦ Pulumi は個人的に好きだけどこのためだけにゼロから書くのは辛い ◦ CDK もゼロから書くのは辛い
Terraform Workspace • やりたいことは dev, stg, prd と分けて管理したい • Terraform
Workspace でできるんじゃないかと思った • がそのような使い方(分離の度合いが強い)は非推奨とされている ref: https://www.terraform.io/docs/language/state/workspaces.html
IaC のこと考えるの疲れた😭
AWS Copilot • What’s AWS Copilit AWS App Runner、Amazon ECS、AWS
Fargate を活用したプロダクションレディなコ ンテナアプリケーションのビルド、 リリース、運用をかんたんに実現しよう。 GitHub: https://github.com/aws/copilot-cli Document: https://aws.github.io/copilot-cli/ • やりたいことはだいたいできそう!
1. Dockerfile を用意する - EXPOSE は必須 - ENV JAVA_OPTS=”” は
Copilot から変数を注入する - 1.3-labs からヒアドキュメントが 利用できるようになったの便利
2. copilot init • 各質問に答えていくとマニフェストが作成されます
3. copilot env init • dev, stg ごとの環境を用意する • すでにネットワーク周りはあるので
--import を利用する
4. copilot deploy - deploy コマンドがやること - Dockerfile からイメージの作成
- ECR にプッシュ - CFn にパッケージング - ECS タスク定義、Job, Service の作成・更新
5. マニフェストをいじる - init を行うと copilot/service-test/manifest.yml が作成される - copilot はこれを元にリソースを変更したりする
マニフェスト http
マニフェスト image
マニフェスト リソース
マニフェスト 値の上書き • 例 メインコンテナのメモリ量を指定
マニフェスト 環境ごとに • sbx と prd で別の値を使う • 最上位のキーから指定しないと適用されない •
サイドカーパターンももちろん可能 ◦ メインコンテナが これらのサイドカーに依存することも可能
まとめ • Terraform x AWS Copilot の組み合わせで IaC に対するコスト削減 ◦
Fargate 周りは Copilit と割り切る ◦ SecurityGroup や EC2, RDS は Terraform と分ける • AWS Copilot でデプロイ管理もできるため、CI/CD との親和性が高い • かゆいところにも手が届く。Copilot に対するデメリットはない • どんな場合にこの組み合わせがオススメか ◦ 多くの場合にメリットがあると思う ▪ すでに Terraform でガチガチならあえてやる必要性もない