Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
【GitHub Actions 】プロダクト開発を支援する スケーラブルな self-host...
Search
Yusuke Kataoka
March 06, 2024
Technology
94
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【GitHub Actions 】プロダクト開発を支援する スケーラブルな self-hosted runnerの提供
サブカル業界Developers 勉強会Vol.6 LT資料
Yusuke Kataoka
March 06, 2024
Other Decks in Technology
See All in Technology
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.4k
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
Refining Active Record
shugo
0
150
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
4.9k
WasmをRustにする
sansantech
PRO
0
250
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
130
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
Rust で関数型ドメインモデリング
takonda
0
140
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Typedesign – Prime Four
hannesfritz
42
3.2k
Are puppies a ranking factor?
jonoalderson
2
4.1k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Automating Front-end Workflow
addyosmani
1369
210k
A better future with KSS
kneath
240
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to Talk to Developers About Accessibility
jct
2
580
The SEO identity crisis: Don't let AI make you average
varn
0
590
Transcript
プロダクト開発を⽀援する スケーラブルな self-hosted runnerの提供 【GitHub Actions 】 株式会社viviON
2 こんにちは Hello ⾃⼰紹介 ⽚岡 裕亮 株式会社viviON 開発部 SREユニット所属 2022年⼊社
仕事では毎⽇Terraformを書いてます。趣味で⽇曜プログラミングしてます
3 お話したいこと Abstraction お話したいこと • viviON SREユニットのself-hosted runnerの運⽤事例 ◦ 運⽤上の課題とその解決について
◦ self-hosted runnerの基盤システムについて
4 viviONの開発について Introduction プロダクト⽴ち上げに積極的な会社です 新規環境構築が⾼頻度で発⽣します Github Enterprise Serverでソース管理しています • GitHub
Enterprise CloudはGitHub ホステッド ランナーを利⽤可能 • GitHub Enterprise ServerでActionsを使うにはself-hosted runnerが必須 ※現在の最新の安定バージョン v3.11 リリース時点の仕様 • 新規環境構築時はリリースの⾃動化も⾏いたいため Actionsの出番が増えています。 • AWSアカウントが100以上あります。
5 課題 Problem GitHubActionsの社内需要が⾼まっている • CodePipelineにせよGitHubActionsにせよサーバーを新設する場合承認を得る必要がある。 ◦ 開発チームの裁量で気軽に導⼊できない。 CICD導⼊時に運⽤ポリシー上のボトルネックがある •
トイルの存在 ◦ EC2作成、runnerのインストール作業。 ◦ 不要になったビルド成果物のストレージ掃除。 ◦ たまに突然死するrunnerのプロセスを起こしたり EC2のself-hosted-runnerの構築・メンテの負担 • 柔軟なトリガー条件の設定が可能で、導⼊が簡単。 • モジュールを活⽤し複雑な処理をお⼿軽に実装可能。 • リリースの⾃動化(仕組み化)を進めたい。 新規システム構築時はCICDもセットであることが多い。 • ⾃動テストへの関⼼が⾼まっている。
6 要件 Requirement GitHubActionsの社内需要が⾼まっている ToBe:導⼊障壁をクリアにしたい CICD導⼊時に運⽤ポリシー上のボトルネックがある ToBe:早く展開できるようにしたい 各プロダクトで共⽤可能なself-hosted runnerを提供する ToBe:トイル撲滅したい
EC2のself-hosted-runnerの構築・メンテの負担 共⽤Runner Repos Repos Repos Repos
7 仕様 Specification GitHub Orgを跨いで共通のRunnerを登録できること これを満たすself-hosted-runner基盤をつくるぞ • GHEのEnterpriseスコープにRunnerGroupを登録すれば良さそう。 各プロダクトで共⽤可能なself-hosted runnerを提供する
冪等性の担保 • Runnerの実⾏環境が汚染されないこと。 ◦ 利⽤者がworkflow.yamlの設計に集中できるようにしたい。 • 別プロダクトのコードがRunnerの環境に残って⾒えたりしないようにする。 ◦ 利⽤者が安全に利⽤できる環境を提供したい。 需要のスパイクに追従できること • Runnerが容易にスケールアウト可能な設計を組みたい。
8 調査 Survey self-hosted-runner基盤をつくるぞ • github.com/actions/actions-runner-controller ◦ GitHub公式のk8sでの実装 ◦ 運⽤困難なのでk8sは避けたい
• github.com/philips-labs/terraform-aws-github-runner ◦ ⽩物家電のPhilipsの実装、EC2がオートスケールする。 ◦ cybozuさんの採⽤実績あり ▪ philips-labs/terraform-aws-github-runner による GitHub Actions セルフホストラン ナーの⼤規模運⽤ | ドクセル • Amazon ECS と AWS Lambda で汎⽤ self-hosted runner を提供する基盤 - クックパッド開発者ブログ ◦ CookpadさんのECS on EC2を採⽤した事例 ◦ ECSはチームで知⾒があるのでベースとさせていただいた。 ◦ 弊社環境でもRunnerへのDocker実⾏環境の整備は必須となるため ECSタスク定義の dind(docker-in-docker)構成についても丸っと参考にした。 先⾏事例
9 設計(1) Desigh self-hosted-runner基盤をつくるぞ 構成図 オートスケーリングの仕様 • 常にIdle状態のRunnerが1つ以上いるように努める。 ◦ Jobの開始イベントでECS
Serviceのdesired countを+1する ◦ Jobの終了イベントでECS Serviceのdesired countを - 1 する
10 設計(2) Desigh Runnerのライフサイクル self-hosted-runner基盤をつくるぞ
11 設計(3) Desigh ラベル設計 IMAGE={必須: OS名}-{必須: OSメジャーバージョン}{オプショナル: OSマイナーバージョン}{オプショナル: 派生名} 以下のように書くと共通
self-hosted runnerが利用できる。
12 結果 今後の取り組み Result / Feature こんないいことがありました • 🚀要件を達成したシステムを構築し、社内展開に成功しました。 •
💰既存runnerからの移⾏とSPOTインスタンスの採⽤により AWSコスト削減が⾒込めました。 • 🏥runnerの突然死が防⽌され可⽤性が改善されました。 • 📜IaC管理により保守性が改善されました。 • 🤖ECS採⽤によって柔軟なスケールアウトを実現できました。 • 💪1⼈プロダクトにならなかった。(チームメンバーがPR投げてくれた) 今後の取り組み • メトリクス取得 ◦ Inキューからジョブ開始までの時間短縮 • Runnerのローカルデバッグ環境の整備
13 参考⽂献 References • クックパッド開発者ブログ. Amazon ECS と AWS Lambda
で汎⽤ self-hosted runner を提供する基盤. 2022-11-07, Amazon ECS と AWS Lambda で汎⽤ self-hosted runner を提供する基盤 - クックパッド開発者ブ ログ • GitHub Docs. セルフホステッド ランナーによる⾃動スケーリング. セルフホステッド ランナーによる⾃動ス ケーリング - GitHub Docs • github.com/actions. Actions Runner Controller (ARC). Kubernetes controller for GitHub Actions self-hosted runners • github.com/philips-labs. Terraform module Self-Hosted Scalable GitHub Actions runners on AWS. GitHub - philips-labs/terraform-aws-github-runner: Terraform module for scalable GitHub action runners on AWS
None