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
セルフホストランナーとインターネットとの間の転送量を削減している話
Search
defaultcf
September 24, 2023
Technology
0
450
セルフホストランナーとインターネットとの間の転送量を削減している話
2023年9月21日 GitHub Actions Meetup Tokyo #2 にて発表
defaultcf
September 24, 2023
Tweet
Share
More Decks by defaultcf
See All by defaultcf
How to write TeX with several people
defaultcf
0
320
How to manage your password
defaultcf
0
340
Other Decks in Technology
See All in Technology
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
280
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
What’s new in Android development tools
yanzm
0
310
Claude Code に プロジェクト管理やらせたみた
unson
6
4.1k
関数型プログラミングで 「脳がバグる」を乗り越える
manabeai
1
190
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
27k
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.7k
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
1
280
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
16k
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
7
5.3k
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
230
ビズリーチにおけるリアーキテクティング実践事例 / JJUG CCC 2025 Spring
visional_engineering_and_design
1
120
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
The Pragmatic Product Professional
lauravandoore
35
6.7k
GitHub's CSS Performance
jonrohan
1031
460k
Documentation Writing (for coders)
carmenintech
72
4.9k
The Cult of Friendly URLs
andyhume
79
6.5k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
What's in a price? How to price your products and services
michaelherold
246
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Transcript
セルフホストランナーとインターネットとの間の 転送量を削減している話 サイボウズ株式会社 ⽣産性向上チーム 佐藤 礼於 1
佐藤 礼於 ▌さとう れお、さとれお など ▌Twitter(𝕏?), GitHub: @defaultcf ▌Bluesky: @default.cf
▌2022年10⽉にサイボウズ⽣産性向上チームにジョイン 2
セルフホストランナー使ってますか︖ ▌ランナーから社内ネットワークにアクセスしたい ▌スペックをカスタマイズしたランナーを使いたい ▌プリインストールするソフトウェアを選びたい ▌GitHub Enterprise Server で GitHub Actions
を使いたい ↓ ▌セルフホストランナーを⽴てて運⽤︕ 3
サイボウズ ⽣産性向上チームの運⽤するセルフホストランナー ▌philips-labs/terraform-aws-github-runner を使ってスケーラブ ルなセルフホストランナーを運⽤している ▌詳しくは… n philips-labs/terraform-aws-github-runner でオートスケール するセルフホストランナーの構築・運⽤
- Cybozu Inside Out | サ イボウズエンジニアのブログ 4
構成図(簡易版) 5
セルフホストランナーからインターネットへの転送量が多い︕ ▌EC2 インスタンスはプライベートサブネットにある ▌ランナーからインターネットとの通信には NAT ゲートウェイを通る ↓ ▌転送量が多いほどお⾦がかかって⼤変 6 これ︕
どこでお⾦がかかっているか調べてみた ▌VPC フローログに対して Amazon Athena を使って分析を⾏った 7 これ︕
8 INNER JOIN フローログから条件に 合致するログを得る Route53の名前解決ログ を⽤意
転送量を分析した結果… ▌主に⼤きいのは3つ n Apache Maven n Amazon Corretto n Docker
Hub 9
転送量対策 ▌Apache Maven n ワークフローでキャッシュする ▌Amazon Corretto n ランナーにキャッシュを含める ▌Docker
Hub n プロキシを使ってキャッシュする ↓ ▌各種キャッシュによる転送量削減を試みる 10
Apache Maven との転送量を削減 11
Apache Maven ▌Java のプロジェクト管理ツール ▌https://repo.maven.apache.org は公式の Maven のリポジトリ ▌開発チームはワークフロー内でビルドを⾛らせ、その際に依存関係のパッケージ を
Maven からダウンロードしている ▌ワークフローでキャッシュを使っていないため、通信量を⾷っているんじゃないか︖ ▌確かめてみる 12
Maven のパッケージをキャッシュしてない︖ ▌org, リポジトリを横断して maven パッケージをインストールしている箇 所を検索 ▌キャッシュしていないところがいくつかあった ↓ ▌キャッシュするようにお願いしたら、通信量上位から
maven が消えた︕ 13
Amazon Corretto との転送量を削減 14
Amazon Corretto ▌AWS が提供する OpenJDK ディストリビューション ▌Corretto 17 は 194
MB ある ▌開発チームはワークフロー内で actions/setup-java を使って Corretto をダウンロードする ▌ダウンロードの度に通信が発⽣し、お⾦がかかっている ▌キャッシュを検討する 15
actions/setup-java のキャッシュ機能を考える ▌https://github.com/actions/setup-java ▌Java の実⾏環境を⽤意してくれる GitHub Action ▌ダウンロードしたファイルをキャッシュして次回使う機能はある ▌ただ毎回作り直されるランナーなので、このキャッシュ機能を活かすこと ができない
16
どうやってキャッシュさせる︖ ▌AMI に予めキャッシュを含める n actions/setup-java がどのようにキャッシュを読むかを調べて、そこ にキャッシュを置いておく 17 ココ
キャッシュを置いた結果 18 キャッシュできるようになった︕
Docker Hub との転送量を削減 19
Docker Hub ▌Docker 社が運営するコンテナレジストリ ▌コンテナを使うジョブがあり、ジョブが⾛る度に Docker Hub からイメージ をダウンロードしている ▌これをキャッシュするようにする
20
どのように削減するか ▌① プライベートの Container Registry のキャッシュサーバーを⾃前で ⽤意する n メリット: ユーザーにコードを変更してもらわずに移⾏できる
n デメリット: キャッシュサーバーの構築・運⽤が必要になる 21
どのように削減するか ▌② ECR の Pull Through Cache を使う n メリット:
キャッシュサーバーの構築・運⽤が不要 n デメリット: ユーザーにコード中のイメージ名を変更してもらう必要があ る 22
転送量削減の進捗 ▌✅ Apache Maven n 開発チームに依頼し、ワークフローでキャッシュするようになった ▌✅ Amazon Corretto n
AMI 側でキャッシュするようにした ▌🔲 Docker Hub n 検討段階 23
転送量削減に成功︕ ▌Maven と Corretto が上位から消えた︕ 24
今後の課題 ▌新しい Corretto のバージョンが増えたら⾃動でキャッシュする n 現状はハードコーディングしている n 最新のバージョンをキャッシュに⾃動で加えたい ▌Docker Hub
のキャッシュを導⼊する n それぞれのメリット・デメリットを検討する n 実際に導⼊したい 25
まとめ ▌VPC フローログを分析してランナーからインターネットへの転送量を分析し た ▌対策を検討して⼀部実施した n Apache Maven のパッケージをキャッシュするようにした n
actions/setup-java のキャッシュ機能を活⽤して Corretto をラン ナーに予め⼊れるようにした n Docker Hub からのイメージ転送量削減について検討した 26