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
結合さん作ってみた (Vegeta × Kubernetes Event Exporter)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
RyoTozawa
April 28, 2021
Programming
780
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
結合さん作ってみた (Vegeta × Kubernetes Event Exporter)
RyoTozawa
April 28, 2021
More Decks by RyoTozawa
See All by RyoTozawa
[SRETT] とある案件で実装している外形監視基盤について
tozastation
0
850
3-shake, inc における 「Progressive Dellivery」導入までの悩みと取り組み (CNDT2021)
tozastation
1
330
Other Decks in Programming
See All in Programming
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
280
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
740
JavaDoc 再入門
nagise
1
410
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
12
6.4k
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
980
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
190
Creating Composable Callables in Contemporary C++
rollbear
0
160
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.8k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
170
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to Talk to Developers About Accessibility
jct
2
250
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Become a Pro
speakerdeck
PRO
31
6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
The Language of Interfaces
destraynor
162
27k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Transcript
負荷試験ツール Vegeta をラップして 結合試験ツール 「結合さん」を作ってみた
Copyrights©3-shake Inc. All Rights Reserved. 2 自己紹介 - 所属 -
Sreake 事業部 チームリーダー (雑用) に就任しました - Terraform 書いたり - GCP / AWS - Yaml 書いたり - Kubernetes / CI・CD - アプリやツール 書いたり - Go / Python / JavaScript - あだ名 - 社内ではたらこちゃんと呼ばれています Tozawa Ryo (@tozastation)
Copyrights©3-shake Inc. All Rights Reserved. 3 目次 結合さんが生まれた日 1 結合さんについて
2 システムの活躍具合はいかほど 3
Copyrights©3-shake Inc. All Rights Reserved. 4 背景 ~ 結合さんが生まれた日 ~
• 目的: ビジネスのスケールに耐えられるようシステム構成を一新 ◦ パブリッククラウド移行(AWS) ◦ Kubernetes 導入 (Elastic Kubernetes Service) ◦ モノリス から マイクロサービスへの移行 ◦ 監視基盤導入 (kube-prometheus-stack × PagerDuty) あるお客様とのプロジェクト
Copyrights©3-shake Inc. All Rights Reserved. 5 背景 ~ 結合さんが生まれた日 ~
プロジェクトで チーム組成したばかりのある日・・・ ▎ 頻繁なアプリの仕様変更 ▎ 対応していないバージョンが DEV環境に! ▎ 手作業でのプロダクトレビュー API が動作しなくなった! (デグレーションが目立ち始めた) 確認項目が多く 工数がかかる
Copyrights©3-shake Inc. All Rights Reserved. 6 背景 ~ 結合さんが生まれた日 ~
チームの振り返りのタイミングで Try が幾つかあがった 課題: APIが動作しなくなった ▎ ① API のバージョン更新ルール整備 ▎ ② チーム間の仕様の共有を積極化 ▎ ③ デグレーションが起きたらすぐ検知したい API が動作しなくなった! (デグレーションが目立ち始めた) 補足: バージョニング規約 / Protocol Buffer (API) 更新規約 / etc ...
Copyrights©3-shake Inc. All Rights Reserved. 7 背景 チームの振り返りのタイミングで Try が幾つかあがった
課題: 確認項目が多く工数がかかる ▎ 自動化できるものはツール化していこう 確認項目が多く 工数がかかる
Copyrights©3-shake Inc. All Rights Reserved. 8 背景 結合さんを作ろう refer: Rashni
Parichha
Copyrights©3-shake Inc. All Rights Reserved. 9 結合さんとは API の 正常系・異常系を試験するアプリケーション
• 3段階に分けて開発 a. OSS 負荷試験ツール Vegeta を使って,正常系試験 CLI 実装 ▪ なぜ Vegeta ? • Vegeta (Go製) -> チームで Go の開発者が多い • SRE チームで,負荷試験に流用したい b. kubernetes-event-exporter を使って試験自動化 ▪ Vegeta 改造 CLI を Pod (Pod: Kubernetes) 化 ▪ Webhook 連携の実装 c. DEV チームにデモ ▪ チーム全員で使いたくなるものを作っていきたい ▪ 機能改善や新機能など以降の開発は,DEVチームと共に
Copyrights©3-shake Inc. All Rights Reserved. 10 負荷試験ツール Vegeta とは Go言語製のHTTP負荷試験ツール
• Vegeta は まさに破壊王子 ◦ 軽量な平行処理を生かした(Groutine)パワフルさ ◦ 対象のサービス(Webサイト)を破壊 • ここが嬉しい ◦ インストールが簡単 -> すぐ利用できる ▪ Go製なのでツールがシングルバイナリ ◦ Package Import でカスタムできる ▪ go get -u github.com/tsenart/vegeta refer: フリー素材
Copyrights©3-shake Inc. All Rights Reserved. 11 Vegeta をカスタムしたツールの名前は... ファイナルフラッシュ(final-flash) アニメの名シーンを
貼る予定でしたが 社内の圧力により公開を断念.. 「くそったれええええ」 refer: フリー素材
Copyrights©3-shake Inc. All Rights Reserved. 12 ファイナルフラッシュ(final-flash) Vegeta ライブラリをインポート しカスタム
-> CLI で指定するフラッグ・コマンドは,コードでは構造体・関数で扱う vegeta.Rate{} と duration -> HTTP リクエストを送信する 割合と期間の設定 Freq: 頻度 Per : 単位時間あたり (秒・分・時)
Copyrights©3-shake Inc. All Rights Reserved. 13 ファイナルフラッシュ(final-flash) vegeta.Targeter (func) ->
Request の定義 (HTTP Method / URL / Body) -> Request Body を可変にしたい等の複雑なリクエストは,クロージャーを作成
Copyrights©3-shake Inc. All Rights Reserved. 14 ファイナルフラッシュ(final-flash) vegeta.Metrics -> 実行結果
(res) を貯めレポートを作成する attacker.Attack(targetter , rate, duration) -> 負荷試験の実行 attacker.Attack() で負荷開始 ↓ metrics に結果が溜まっていく ↓ レポート作成 (説明は割愛)
Copyrights©3-shake Inc. All Rights Reserved. 15 試験自動化を支える kubernetes-event-exporter Kubernetes の
Event を検知 (watch kubectl get event --all-namespaces) 独自のフィルタを通し,マッチしたイベントを外部に連携してくれるツール ↓ コンフィグはこんな感じ ↓ route: - どのイベントを除外するか - どのイベントを受け付けるか receivers: - 外部連携先の指定 - Layout に ペイロード指定 - 今回は - チャットアプリ - final-flash
Copyrights©3-shake Inc. All Rights Reserved. 16 そんなこんなで結合さんができました 結合さん = ファイナルフラッシュ
× kubernetes-event-exporter refer: Rashni Parichha
Copyrights©3-shake Inc. All Rights Reserved. 17 システムの活躍具合はいかほど ~実際の動作~ 各エンドポイントの正常系の試験結果をチャットアプリに通知 ->
正常系の時は,OK アイコンで教えてくれる -> おっ!とそれっぽく見せるため Summary も用意 deep stream
Copyrights©3-shake Inc. All Rights Reserved. 18 deep stream システムの活躍具合はいかほど ~実際の動作~
各エンドポイントの正常系の試験結果をチャットアプリに通知 -> 異常系の時は,エラーを添えて炎上アイコンで通知 -> エラーを見る限り,自分が犯人な気もしなくも...
Copyrights©3-shake Inc. All Rights Reserved. 19 システムの活躍具合はいかほど 結合さんを導入してみて良かった点 早期発見して,原因究明 +
対応する文化が出来上がってきた 👍 deep stream
Copyrights©3-shake Inc. All Rights Reserved. 20 チームのみんなからのフィードバック 導入から4ヶ月ほど経ち DEVチームに聞いてみた 重傷なデグレに
気付けるように! by 開発T リリース判断がしやすくなった 安心して機能改修やリファクタに望 める by PO 毎回パターンを確認しなくて 済むように! by 開発T deep stream deep stream (父)
Copyrights©3-shake Inc. All Rights Reserved. 21 まとめ • チーム内で課題が...! ◦
方針が定まっていない API バージョン更新 ◦ 開発環境での API における デグレーション • 取り組んだこと ◦ バージョン更新ルール整備 ◦ 定期的な正常系試験自動化 • フィードバック ◦ 神 • 今後の課題 ◦ Pod が起動してから試験開始まで待機時間を固定 している ▪ Probe 等のチェックを導入し効率化していきたい ◦ 他のチームにも積極的に使ってもらいたいので推していく 本を読む鯨
Copyrights©3-shake Inc. All Rights Reserved. 22 チーム全員が動きやすい環境を提供し 喜んでもらえるタイミングが一番やりがいある!!