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
2023年度版! Chatwork流Kubernetesの運用方法
Search
hanayo04
December 07, 2023
Technology
0
1.5k
2023年度版! Chatwork流Kubernetesの運用方法
2023/12/6に「耐障害性向上・パフォーマンス改善・運用負荷軽減をどう実現する? 事業を支えるSREのノウハウを共有」でお話しした際の資料です。
hanayo04
December 07, 2023
Tweet
Share
More Decks by hanayo04
See All by hanayo04
「Chatwork」のEKS環境を支えるhelmfileを使用したマニフェスト管理術
hanayo04
1
850
EKSバージョンアップ工数削減大作戦! ~Terraform化とE2Eテスト自動化~
hanayo04
1
500
EKSとArgo Rolloutsで実現する「Chatwork」の新リリースプロセス
hanayo04
0
180
Other Decks in Technology
See All in Technology
JavaScript 研修
recruitengineers
PRO
6
1.3k
Bye-Bye Query Spaghetti: Write Queries You'll Actually Understand Using Pipelined SQL Syntax
tobiaslampertlotum
0
110
自社製CMSからmicroCMSへのリプレースがプロダクトグロースを加速させた話
nextbeatdev
0
410
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
400
生成AI時代に必要な価値ある意思決定を育てる「開発プロセス定義」を用いた中期戦略
kakehashi
PRO
1
230
Grafana MCPサーバーによるAIエージェント経由でのGrafanaダッシュボード動的生成
hamadakoji
1
880
【 LLMエンジニアがヒューマノイド開発に挑んでみた 】 - 第104回 Machine Learning 15minutes! Hybrid
soneo1127
0
220
モダンフロントエンド 開発研修
recruitengineers
PRO
9
5.9k
AWS環境のリソース調査を Claude Code で効率化 / aws investigate with cc devio2025
masahirokawahara
2
920
Microsoft Fabric のネットワーク保護のアップデートについて
ryomaru0825
1
120
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
180
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
25
12k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
500
How GitHub (no longer) Works
holman
315
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Cult of Friendly URLs
andyhume
79
6.6k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Transcript
© Chatwork 2023年度版! Chatwork流Kubernetesの運用方法 2023年12月06日 SRE部 桝谷花世 Chatwork株式会社
自己紹介 2 桝谷 花世(Masutani Hanayo) ~2023/9 SIerにて主にインフラ領域を担当 2023/10~ Chatwork株式会社に入社。 SRE部にて主にChatworkのKubernetes周辺を日々勉強中
趣味: ディズニー(よく一眼持ってパークにいます) BTS(最近韓国語会話を習い始めました)
「Chatwork」とは 3 効率的に情報共有できる グループチャット 仕事の見える化ができる タスク管理 見落としがなくなる ファイル管理 いつでも会議ができる ビデオ/音声通話
導入社数 42.1万社以上のビジネスチャット! (2023年9月末日時点)
求められること 4 安定稼働 コストの最適化 アジリティの向上
安定稼働 コストの最適化 アジリティの向上 求められること 5
「Chatwork」の特徴 6 夜間と日中でアクセス数の差が大きい (ある1日のアクセス数の遷移) MAXを想定して常に待機しておくのはコストがもったいない
課題 7 (ある1日のPodの数の遷移) Kubernetes(EKS on EC2)を使ってPodをAutoScaleさせてます! Podがスケールアウトされる際に、EC2の起動を待っているとス ケールが間に合わず不安定になってしまう 課題① EC2の台数が増加し、コストも高くなってしまう
課題②
取り組み①EC2のコスト削減 EC2の台数が増加し、コストも高くなってしまう 課題① スポットインスタンスが以前より安定した 「Chatwork」 Appはステートレス EKSのNodeにEC2スポットインスタンスを導入し、コストを削減 EC2の種類 オンデマンド: 時間課金制。通常時はオンデマンドで起動。
リザーブド: 年単位で購入。需要が固定されているシステムに適している。 スポット: AWS上で使われていない余剰インスタンスを使用。一番低価格だが、入札金額が スポット料金を下回ると停止する。
取り組み②balloon✖Cluster Autoscaler 9 Podがスケールアウトされる際に、EC2の起動を待っているとス ケールが間に合わず不安定になってしまう 課題② CPU 60% CPU 60%
CPU 40% CPU 40% CPU 40% HPA CPU使用率が 50%を超えてい るのでPodを 増やします もうPodを起動 する余力ないの でNodeを追加し ます CA Node(EC2)の起動に数分かかってしまう
取り組み②balloon✖Cluster Autoscaler balloonであらかじめ余剰Nodeを確保! balloonとは・・・ SRE部の坂本さんが作った余剰ノードを確保しておくための仕組み 1 balloon Pod 2.5 「Chatwork」App
Pod 通常時は5Pod、繁忙時間帯は8Pod起動させている priorityを通常より低くしておくことで、 「Chatwork」Appの起動時に余剰がない場合はballoon Podをkillして 空いたリソースに「Chatwork」Appを起動することが出来る 参考: 今回紹介していないk8sのツールについては坂本さんのブログへ! ( https://creators-note.chatwork.com/entry/2020/12/23/100000 )
取り組み②balloon✖Cluster Autoscaler balloonであらかじめ余剰Nodeを確保! CPU 60% CPU 60% CPU 40% CPU
40% CPU 40% HPA CPU使用率が 50%を超えてい るのでPodを 増やします balloon balloon Podを起 動する余力ない のでNodeを追加 します CA サービスが不安定になることなくスケールが可能に!
(Appendix)何でKarpenterを使わないのか Karpenterとは・・・ AWSが提供しているK8sクラスターオートスケーラー 特徴 ・ASGを使用せず、EC2のAPIを直接叩いて起動 ・K8s schedulerを使用せずに起動したEC2にKarpenterがPodを配置 CAのオーバーヘッドを少しでも減らしてNodeの起動だけの時間に節約 「Chatwork」では以下の理由からKarpenterを選択していない ・eksctlのNode
GroupとKarpenterのprovisionerのダブルメンテが必要になっ てしまう ・起動に数分かかるのでアグレッシブにNodeを増減させる場合は balloon✖Cluster Autoscalerの方が適している
安定稼働 コストの最適化 アジリティの向上 求められること 13
毎日本番リリースしてます 14 詳しくは過去の古屋さんの登壇資料へ! ( https://pages.awscloud.com/rs/112-TZM-766/images/20220804-AWS-kubernetes_3_Chatwork.pdf ) App Manifest EKS(app) EKS
(manager) Manifest 1.Master merge 3.Push 2.Build 4.Update 5. Polling 7.Apply 開発者 6. Press the Sync button SREが間に入ることなく、開発チームが好きな時にリリースしている
15 しかし、 気軽に本番リリースが出来るだけでは アジリティは向上しません。 開発者が開発しやすい環境が必要です!
取り組み① 16 検証時にSREがボトルネックにならない運用
取り組み①検証時にSREがボトルネックにならない運用 17 当初は、検証環境と本番環境が同じAWSアカウント上に。 開発チーム 検証のために Route53の設定を 変更してほしいな SREチーム OK! でも忙しいから少し
時間ください・・・ 開発チーム いつ変更される かな・・・ 開発チームに必要な操作権限がなく、 検証が開発チーム内で完結せず、時間がかかってしまう
取り組み①検証時にSREがボトルネックにならない運用 18 検証時は開発チームに強い権限を付与出来るように、 本番アカウントと検証アカウントを分けよう! 検証のスピードがupし開発者体験が向上! 開発チーム 検証のために Route53の設定を 変更したい 開発チーム
変更してみよう! 開発チーム うまく行った! よし本実装して リリースだ!
取り組み② 19 自分専用の使い捨て検証環境の構築
取り組み②自分専用の使い捨て環境の構築 20 当初は検証用の環境が1つしかなかった 開発チーム このコードAWS上 で動かして確認し たい 開発チーム 今って 検証環境誰も使って
ないかな 開発チーム では、今から僕が 占有します 検証環境の使用タイミングの調整や待ちが発生していて開発効率が低下
取り組み②自分専用の使い捨て環境の構築 21 PR上でコメントをするだけで自分専用の検証環境が構築可能 必要なラベルを付けて /test-tag とPR上でコメントをするだけで 少し待っていれば 自分専用の環境が払い出される! 環境が払い出されたら URLが「Chatwork」上に投稿される
環境の調整が不要になり開発者体験が向上!
取り組み②自分専用の使い捨て環境の構築 22 詳しくは古屋さんのブログへ!( https://creators-note.chatwork.com/entry/2023/09/11/190000 ) App PR Manifest PR EKS(app)
EKS (manager) Manifest 3.Push 2.Build 4.Create PR 5. Polling 6.Apply 開発者 1.Comment
23 Appは 開発チーム内で 自由に 本番リリース可 検証は 開発チーム内で 自由に AWSリソース の構築可
検証用に 開発チーム内で 自分専用の環境 の構築可 残るは開発・本番へのAWSリソースの構築 もちろんSREが介入せずに開発チーム内で構築できます!!
取り組み③開発チームで安全にAWSリソースを構築 24 Terraform✖AtlantisでPRベースでAWSリソースを構築 atlantis apply とコメントすると atlantisさんが Terraformを実行してくれる
取り組み③開発チームで安全にAWSリソースを構築 25 SREが関与することなく開発チーム内で安全に構築ができる 詳しくは古屋さんの登壇資料へ! ( https://speakerdeck.com/saramune/gabanansuxiang-shang-wei-yuan-hui-with-opa) Terraform PR EKS 2.Pull
開発者 1.Comment 3.Check 4.Apply
まとめ 26 まだまだ課題はいっぱいあるので 引き続きより良いサービスになるよう改善していきます! 直近は EKSのE2Eテストの導入 ArgoRolloutsの導入 に挑戦中 色々な取り組みをすることで コストの最適化・安定稼働・アジリティの向上
を実現することが出来てきた
詳細はAdventCalenderに 27 12/9に本日の内容をChatwork Advent Calendar 2023に投稿するので 良かったら参考にしてください⭐ 12/16はSREチームリーダー の古屋さんが先日行ったSRE 部の合宿について投稿するの
でこっちも良かったら!
働くをもっと楽しく、創造的に