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
nabeo
December 09, 2022
0
1.2k
AWS CDK (TypeScript) を継続的にメンテ可能にするために取り入れているノウハウ集
Qiita Night~AWS~ - connpass
nabeo
December 09, 2022
Tweet
Share
More Decks by nabeo
See All by nabeo
OpenTelemetry Collector 自身のモニタリング / Monitoring the OpenTelemetry Collector itself
nabeo
0
440
ヘンリーにおける可観測性獲得への取り組み
nabeo
2
1.9k
AWS Organizations 組織を移動する時に 考えること 100 連発 (AWS Control Tower への組み込みを添えて) / Hatena Engineer Seminar #20
nabeo
2
2.8k
AWS Transit Gateway を使った内部ネットワークの構成変更の話 / AWS Transit Gateway and Me
nabeo
0
570
Docker イメージのダイエットが成功するまで帰れまてん / Docker Image Diet Challenge
nabeo
4
4k
LVS 勉強会 (LVS Study)
nabeo
0
3.3k
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
Building an army of robots
kneath
302
43k
The Cult of Friendly URLs
andyhume
78
6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Six Lessons from altMBA
skipperchong
27
3.5k
The Invisible Side of Design
smashingmag
298
50k
Rails Girls Zürich Keynote
gr2m
94
13k
Documentation Writing (for coders)
carmenintech
65
4.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Docker and Python
trallard
40
3.1k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
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