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
結合さん作ってみた (Vegeta × Kubernetes Event Exporter)
Search
RyoTozawa
April 28, 2021
Programming
800
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
890
3-shake, inc における 「Progressive Dellivery」導入までの悩みと取り組み (CNDT2021)
tozastation
1
350
Other Decks in Programming
See All in Programming
ChromeでローカルLLM
ryu1013
0
180
AI Augmentation Techniques with Liberty
ivargrimstad
0
170
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
170
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.4k
AmebaブログはKMPから卒業します
kmars0605
0
310
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
250
R8 の設定見直しでアプリサイズ削減
andpad
0
240
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.4k
Railsバージョンを4倍にした話
optim
0
840
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
130
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
140
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
190
Featured
See All Featured
Music & Morning Musume
bryan
48
7.5k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
590
Rails Girls Zürich Keynote
gr2m
96
14k
WCS-LA-2024
lcolladotor
0
940
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
570
KATA
mclloyd
PRO
35
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Product Roadmaps are Hard
iamctodd
55
13k
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 チーム全員が動きやすい環境を提供し 喜んでもらえるタイミングが一番やりがいある!!