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
ECSのCI/CD改善と標準化の取り組み / JAWS FESTA 2023 in Kyushu
Search
cohalz
October 07, 2023
Programming
8
7.5k
ECSのCI/CD改善と標準化の取り組み / JAWS FESTA 2023 in Kyushu
https://jft2023.jaws-ug.jp/
の発表資料です
cohalz
October 07, 2023
Tweet
Share
More Decks by cohalz
See All by cohalz
toittaにOpenTelemetryを導入した話 / Mackerel APM リリースパーティ
cohalz
1
800
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
3
9.2k
はてなのSRE組織2024 / Road to SRE NEXT@福岡
cohalz
2
2.1k
SREのキャリア、 あるいは生態 / #ya8
cohalz
11
1.8k
カンファレンスのボランティアスタッフって何やるの? / DAIMYO Meetup #4
cohalz
0
230
小さなものでも Step Functions / Serverless Meetup Fukuoka Re:boot
cohalz
0
250
ecspressoへの貢献を振り返る / JAWS-UG コンテナ支部 #24 ecspresso MeetUp
cohalz
1
8.2k
はてなフォトライフをECSに移行した話 / Hatena Engineer Seminar #20
cohalz
1
20k
SREの異動と働き方 〜はてなブログ編〜 / Hatena Engineer Seminar #13
cohalz
0
2.5k
Other Decks in Programming
See All in Programming
ゲームの物理 剛体編
fadis
0
390
GoLab2025 Recap
kuro_kurorrr
0
790
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
0
740
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
チームをチームにするEM
hitode909
0
430
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
300
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
190
Cap'n Webについて
yusukebe
0
160
Grafana:建立系統全知視角的捷徑
blueswen
0
270
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
0
990
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
770
Mobile First: as difficult as doing things right
swwweet
225
10k
The Invisible Side of Design
smashingmag
302
51k
Amusing Abliteration
ianozsvald
0
80
Color Theory Basics | Prateek | Gurzu
gurzu
0
170
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
77
Transcript
ECSのCI/CD改善と 標準化の取り組み id:cohalz / @cohalz JAWS FESTA 2023 in Kyushu
1
自己紹介 • こはる(@cohalz) • 株式会社はてな SRE ◦ はてなブックマーク ◦ はてなブログ
• 福岡移住してもうすぐ1年 ◦ リモート勤務 2
今日話すこと • はてなにおけるCI/CDの改善 ◦ はてなブログを例に • ECSのCI/CDを標準化する取り組み 3
今日話さないこと • ECSに移行する方法の話 ◦ はてなブログをECSに移行してリリース頻度も改善し た話 • EKSの話 ◦ Kubernetes撤退、
その後のはてなの取り組み 4
5 はてなブログ
はてなブログ • 2011 EC2でサービス開始 • 2019~2022 ECSに移行 ◦ 関連サービスを含め10種類程度のコンポーネント 6
ECS移行して起きた問題 • 各サービスをモノレポでCDK管理していた • CDKの設定を書いた人がバラバラ ◦ いろんな人が移行していった ◦ 元々の開発オーナーが違うサービスも •
その結果CI/CDがバラバラに 7
CI/CDがバラバラだと • 認知負荷が高い ◦ n通りのデプロイ方法を正しく覚える必要 ◦ 手作業の手順もあり事故りやすい • 改善の手が周りきらない ◦
一個だけ改善しても残りと差分が広がってしまう 8
CI/CDの見直しを行う • 最後のはてなブログ本体のECS移行のタイミ ングで統一することに • デプロイ・運用しやすいものを目指す 9
10 ECSのCI/CD改善
改善のテーマ • 全サービスを同じ方法でデプロイする • 手元からデプロイしない • 作り込みすぎない 11
何をしたか • CDKではなくecspressoで管理 • デプロイ用のリポジトリを作る • GitHub Actionsでデプロイ • 既存のCDK管理されたものも移行
12
ecspressoの採用 • 既存の設定を簡単にコード管理できる • diffやverifyなど便利なコマンドがある • CI/CDのライフサイクル分離と高相性 13
デプロイ用の リポジトリ • コードともCDKとも違 うリポジトリを作るよ うに • このリポジトリに全 サービスのECS設定を 置く
14
GitHub Actionsを使ったデプロイ • GitHub Actionsでecspresso deployを実行 ◦ mainブランチの更新をトリガーに実行 ◦ GitOpsの考えを採用
• 社内のEKS+ArgoCDのデプロイを真似した ◦ 「はてラボ」のサービスも利用しているEKSクラスタ の構成と運用について 15
イメージのタグを更新するPRが自動で作成される 16
改善の結果 • 全サービスを同一の方法でデプロイ可能に • デプロイ用の環境構築も不要に ◦ デザイナーでもデプロイ可能に • 開発者がメンテしやすくなったメリットも ◦
複雑なCDKの設定と切り離された 17
Tips: CDKからecspressoへ移行する方法 • 方法1: 別のサービス名で作りなおす ◦ ecspresso initしてサービス名を変えて並行稼働 ◦ その後CDKの設定を削除
or 0台にする • 方法2 : サービスを残して移行する ◦ CDK側でDeletionPolicy: Retainを設定 ◦ その後CDKの設定を削除することでリソースを残せる 18
19 標準化
全社の課題 • はてなではプロダクトがたくさんある ◦ ブログ、ブクマ、Mackerel、マンガ、... • 各チームも同様にCI/CDの課題があった ◦ うまくいった例を広めたい ◦
チーム間でも統一化したい 20
社内で標準化の動きが活発に • 社内で標準化のプロセスが整備され始めた ◦ CI/CDもその動きに乗っかりたい • 標準を定めることによって ◦ 注力する技術を絞って集中できる ◦
改善をそこに集約できる 21
22 標準化の進め方
SRE標準化委員会の発足 • 2021/8から各チームのSREsが有志で集まっ たグループ • プロダクトの運用知見やツールを共有し、シ ステム構築・運用の効率化、省力化を目指す 23
委員会メンバーで標準化を進める • CI/CDの標準化をするサブチームを作る ◦ 週次の定例で各チームの改善を共有 ◦ Scrapboxに書いて非同期でコミュニケーションも • 開発合宿も利用 ◦
同期的に集中してツールを作る • 定期的に社内勉強会で成果を周知 24
各チームに ヒアリング • 各チームのテックリー ドにECS周りについて ヒアリング • チームが求めているも のとのミスマッチを減 らす
25
ヒアリングした結果 • 多くのチームはGitHub Actionsを利用 • ECSのデプロイに課題を感じている • ブログで作ったワークフローを改善して再利 用することに 26
GitHub Actionsの再利用 • PublicでないReusable WorkflowやComposite Actionを同一組織で再利用可能に(2022/12) ◦ GitHub Actions –
Sharing actions and reusable workflows from private repositories is now GA • ワークフローを集めたリポジトリを作る形に ◦ 各チームでそのワークフローを利用する 27
リリース用リポジトリの展開 • どんなサービスでもecspressoのファイルと そのCI/CDで中身はほとんど同じ • ワークフローを配るよりももっと楽にしたい • ブログで作ったものをテンプレートリポジト リとして用意 28
リリース用リポジトリのテンプレート • 必要なワークフローなど揃えたテンプレート • Cloneしてecspressoのファイルを置く ◦ 既に構築したCI/CDをすぐ使える 29
標準化されたCI/CDを利用する流れ 30
CI/CDの実装もブラッシュアップ • ブログの実装をMackerelチームで再構築 • それをブックマークチームでさらに改善 • その後標準として広めていく ◦ 2チームで動く実績がある説得力がある 31
行った改善の例 • ビルド待ちの短縮 ◦ イメージにもう一度タグを付ける - Amazon ECR • デプロイ履歴を確認しやすく
◦ GitHubのリリースと連携 ◦ Mackerelにアノテーション • デプロイ順序を制御できるように ◦ AとBを同時や順番にデプロイする 32
標準のアップデートをどう広めるか • 考えられる懸念 ◦ 各チームがアップデートに気付けない ◦ アップデート作業が面倒で放置 • Renovateを使うことで改善 33
Renovateで社内のActionを更新 リリースノートも確認できる 34
標準化を狙うことで得られるメリット • 影響範囲が広がり品質が上がる ◦ 各チームからフィードバックがある ◦ テストコードを書いたり変更管理をしたり • OSSだと思ってメンテするような感じ ◦
将来OSSにしても良い 35
改善の成果 • 採用したチームで現れた効果 ◦ チームによってはデプロイ頻度が2倍に ◦ ワークフローが整理されメンテナンスしやすく • 複数チームで採用が始まる ◦
新卒研修でも使われるように ◦ 採用したチームからフィードバックも 36
37 標準化する上で 気をつけること
標準化する上で気をつけること • 全チームの要望を解決しようとしない ◦ 作るのにも時間が掛かる、メンテナンスも大変 ◦ 汎用的すぎても課題を解決しづらくなる ◦ 利用の強制はしない •
意思決定やアップデートのプロセスを決める ◦ 起きた問題をフィードバックして改善できるように 38
認知度を上げる • 作るだけでなくちゃんと使われるようにする のが大事 • 定期的に存在をアピールする ◦ そもそも他の人が存在を知らないところから始まる • 検証に協力してくれる人を探す
◦ ファンを増やす 39
おわり • はてなにおけるECSのCI/CD改善を紹介しました • CI/CDの標準化に向けた動きとそれをうまく進め るための工夫についても紹介しました 40