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
Hasegawa Takuya
December 14, 2021
Programming
1
750
Terraform ですべてを管理するのに疲れた😭
社内LTなのでちょいちょい雑です
Hasegawa Takuya
December 14, 2021
Tweet
Share
More Decks by Hasegawa Takuya
See All by Hasegawa Takuya
1014-AWS-EC2-Graviton2
rluisr
0
920
Other Decks in Programming
See All in Programming
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
500
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
TestingOsaka6_Ozono
o3
0
260
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.9k
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2k
Implementation Patterns
denyspoltorak
0
140
CSC307 Lecture 01
javiergs
PRO
0
650
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
230
Grafana:建立系統全知視角的捷徑
blueswen
0
270
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
120
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
32
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Ethics towards AI in product and experience design
skipperchong
1
150
RailsConf 2023
tenderlove
30
1.3k
Chasing Engaging Ingredients in Design
codingconduct
0
93
First, design no harm
axbom
PRO
1
1.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The browser strikes back
jonoalderson
0
290
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
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 でガチガチならあえてやる必要性もない