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
420
セルフホストランナーとインターネットとの間の転送量を削減している話
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
330
Other Decks in Technology
See All in Technology
Linuxのブートプロセス
sat
PRO
6
100
Postman AI Agent Builderで AI Agentic workflow のプロトタイピング / Prototyping AI Agentic Workflow with Postman AI Agent Builder
yokawasa
0
190
アジリティを高めるテストマネジメント #QiitaQualityForward
makky_tyuyan
1
550
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
190
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
250
人生を左右する「即答」のススメ: 一瞬の判断を間違えないためにするべきこと
takasyou
9
1.2k
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
190
自分のやることに価値を見出だせるようになり、挑戦する勇気をもらったベイトソンの考え / Scrum Fest Fukuoka 2025
bonbon0605
0
180
OCI IAM Identity Domains Entra IDとの認証連携設定手順 / Identity Domain Federation settings with Entra ID
oracle4engineer
PRO
1
1.4k
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
140
AI自体のOps 〜LLMアプリの運用、AWSサービスとOSSの使い分け〜
minorun365
PRO
10
1.3k
IAMのマニアックな話2025
nrinetcom
PRO
6
1.6k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Statistics for Hackers
jakevdp
797
220k
Gamification - CAS2011
davidbonilla
80
5.2k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Navigating Team Friction
lara
183
15k
Become a Pro
speakerdeck
PRO
26
5.2k
How GitHub (no longer) Works
holman
314
140k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Being A Developer After 40
akosma
89
590k
Side Projects
sachag
452
42k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
115
51k
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