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
880
3-shake, inc における 「Progressive Dellivery」導入までの悩みと取り組み (CNDT2021)
tozastation
1
350
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
130
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
2
1.8k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
140
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
120
setup-vp GitLab対応の裏側
naokihaba
0
150
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
450
すこし踏み込む CancellationToken
htkym
2
1.6k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
230
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Six Lessons from altMBA
skipperchong
29
4.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
510
The untapped power of vector embeddings
frankvandijk
2
1.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Navigating Team Friction
lara
192
16k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
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 チーム全員が動きやすい環境を提供し 喜んでもらえるタイミングが一番やりがいある!!