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
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
570
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
130
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.5k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
610
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
300
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
160
Webフレームワークの ベンチマークについて
yusukebe
0
180
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.2k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
610
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
How to train your dragon (web standard)
notwaldorf
97
6.7k
WENDY [Excerpt]
tessaabrams
11
38k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Design in an AI World
tapps
1
250
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
RailsConf 2023
tenderlove
30
1.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
New Earth Scene 8
popppiees
3
2.4k
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 チーム全員が動きやすい環境を提供し 喜んでもらえるタイミングが一番やりがいある!!