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
AWS CDK (TypeScript) を継続的にメンテ可能にするために取り入れているノウハウ集
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nabeo
December 09, 2022
0
1.4k
AWS CDK (TypeScript) を継続的にメンテ可能にするために取り入れているノウハウ集
Qiita Night~AWS~ - connpass
nabeo
December 09, 2022
Tweet
Share
More Decks by nabeo
See All by nabeo
組織とプロダクトの変化に合わせたクラウド選択 / Henry Engineer Meetup #5
nabeo
0
43
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
3
940
SRE 文化の醸成: stream-aligned チームに Enabling するために実施した事例の解説 / Cloud Operator Days Tokyo 2025
nabeo
0
260
kotlin-lsp を Emacs で使えるようにしてみた / use kotlin-lsp in Emacs
nabeo
0
430
Docker Compose で手軽に手元環境を実現する / Simplifying Local Environments with Docker Compose #CinemaDeLT
nabeo
0
590
OpenTelemetry Collector 自身のモニタリング / Monitoring the OpenTelemetry Collector itself
nabeo
0
590
ヘンリーにおける可観測性獲得への取り組み
nabeo
2
2.3k
AWS Organizations 組織を移動する時に 考えること 100 連発 (AWS Control Tower への組み込みを添えて) / Hatena Engineer Seminar #20
nabeo
2
3.4k
AWS Transit Gateway を使った内部ネットワークの構成変更の話 / AWS Transit Gateway and Me
nabeo
0
770
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Navigating Team Friction
lara
192
16k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
240
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
KATA
mclloyd
PRO
35
15k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Crafting Experiences
bethany
1
94
My Coaching Mixtape
mlcsv
0
86
Transcript
AWS CDK (TypeScript) を 継続的にメンテ可能にするために 取り入れているノウハウ集 id:nabeop / @nabeop 2022/12/09
Qiita Night 1
自己紹介 • id:nabeop (なべおぴー) • 株式会社 はてな • システムプラット フォームチーム
SRE 2
お品書き • AWS CDK のコードを継続的にメンテ可能に するために ◦ IaC で感じていた課題感 ◦
取り入れている知見 ◦ 得られた恩恵 3
4 IaC における課題感
5 IaC のコードの陳腐化 • IaC のコードはライフサイクルとライブラリ 更新頻度に大きな開きがある ◦ インフラ部分は数ヶ月単位で変化しないこともある ◦
毎週のように使っているライブラリは更新される • 気がついたらコードは更新されず、ライブラ リの更新からも取り残され、メンテ不能な状 態に...
6 IaC コードの運用にアプリ ケーション開発の知見を輸 入する
狙い • ライフサイクルが短いアプリケーション開発でもライブラ リの更新への追従という問題はある • インフラの変更をしない間にライブラリの更新に取り残さ れないようにしたい • AWS CDK
を TypeScript アプリケーションと捉えてみる ◦ アプリケーション開発の知見を取り入れることでライブラリの追従コ ストを抑制できるはず 7
renovate による自動更新 8 • https://github.com/hatena/renovate-co nfig をベースにしている ◦ はてなで使用しているRenovateの設定プリセットを 公開しました
- Hatena Developer Blog ◦ レビュー者をチームメンバーからランダムにアサイン するようにしている ◦ 更新が激しい割に影響が確実にないものはチームメン バーと相談しつつ automerge に変更
9 snapshot テストによる差分確認 • ライブラリの更新を頻繁に取り込むにあたり、取り込まれ る更新内容が環境に影響を与えないことを確認したい • AWS CDK を
CFn テンプレートエンジンと捉える ◦ ライブラリの更新が生成される CFn テンプレートに影響しないこと を確かめたい ◦ snapshot テストで生成される CFn テンプレートの差分を確認したい ◦ ノイズとなる差分は snapshot serializer で無視できるようにしてい る • snapshot テストは実世界と極力合わせておく必要がある
reusable workflow による CI の横展開 • Github Actions の workflow
に落とし込んでいる ◦ だいたい同じ内容の workflow が誕生する • コピペしたくないので reusable workflow を導入し て CI の内容を一元管理するようにした ◦ プロジェクト間の微妙な差異は package.json で吸収できるよ うに責任分界点を設定した ▪ reusable workflow では実行する内容に責任を持つ ▪ 実行時のオプションなどはプロジェクト側の package.json が責任を持 つ 10
11 得られた恩恵 AWS-CDK v2 への追従
12 AWS CDK v2 化で必要だったこと • v2 bootstrap への対応 ◦
(当時) 最新の AWS CDK v1 で対応していたので問題 なし • feature flag や v2 に合わせたコードの修正 ◦ snapshot テストの結果と見比べながら修正
実際はどうだったか? 13 • 主業務の片手間としてコードの書き換えができた ◦ 普段から意識の片隅にあった状態なので勘所があった ◦ 最小限の手間だけですんだ ▪ コードは常に最新の状態を保っていたので
AWS CDK の開発プロ ジェクト側が準備したマイングレーションのレールにすんなり乗 れた ▪ AWS CDK のコードをシンプルな状態に保っていたという側面は ある
14 まとめ
15 IaC コードを継続的にメンテ可能な状態にする • ライブラリの更新は継続できる仕組みを入れ る ◦ アプリケーション開発のノウハウを輸入 • 負荷が少ない形で意識の片隅においておける
環境を作る
Dev トークやっています 16 https://jobs.qiita.com/dev_talks?employer=37