Upgrade to Pro — share decks privately, control downloads, hide ads and more …

超越監控:Grafana K6 帶你探索應用程式的深淵

Marcus
August 02, 2023

超越監控:Grafana K6 帶你探索應用程式的深淵

#COSCUP #帶你讀原碼

這場分享將帶領會眾進入 Grafana K6 工具的世界,介紹 Grafana K6 的基本概念和功能,常見的測試情境與用途,介紹核心程式碼 run.go 的流程與重要模組關係。

Marcus

August 02, 2023
Tweet

More Decks by Marcus

Other Decks in Technology

Transcript

  1. 2 Agenda 1 WHAT : k6 簡介 HOW : Code

    Q&A 4 3 2 WHY : 傳統監控工具的挑戰
  2. 3 I’m ▸ 後端打雜工 ▸ #自我學習 #吸收新知 #分享 COSCUP 2022

    - 現代化 End to End 測試工具 Playwright COSCUP 2021 - 初試 Casbin - 快速搭建符合 99% 產品都需要的 高彈性可維護之授權控制系統 Hello! Fb : 粉絲團 Marcus
  3. 4 Agenda 1 WHAT : k6 簡介 HOW : Code

    Q&A 4 3 2 WHY : 傳統監控工具的挑戰
  4. 傳統監控工具的挑戰 : 維運 6 複雜應用程式的挑戰 可視化的挑戰 大規模用戶負載的挑戰 Monitor Dashboard High

    concurrency Ref : https://marcus116.blogspot.com/2020/03/tgonext-monolith-soa-microservices-system-architecture-evolution.html
  5. 大規模用戶負載的挑戰 : 性能評估 13 預防性的性能評估 • 使用壓測工具模擬大量的並發使用者,並進行不同負載條件下的 測試。 故障排除和問題解決 •

    壓力測試可以重現問題,監控則可以提供實時數據以及性能指標 的變化情況,從而更好地進行故障排除和問題解決。 持續監控和迭代優化 • 壓力測試可以定期執行,以確保系統在不同負載下的性能穩定性 • 監控則可以提供實時數據,讓你能夠隨時了解系統的運作狀態 Ref : https://octopus.com/devops/
  6. 14 Agenda 1 WHAT : k6 簡介 HOW : Code

    Q&A 4 3 2 WHY : 傳統監控工具的挑戰
  7. About k6 15 • Since 2016 • CNCF Project Load

    Impact • Go • Performance Engine • CLI & API • 開發者體驗++ Developer • Reliability Testing tool • Load testing、E2E • Integration Testing • Chaos Testing、Functional Testing Testing tool
  8. 16 Load testing is the process of putting demand on

    a structure or system and measuring its response.
  9. Common Types of load tests 測試類型 目的 持續時間 主要應用場景 Smoke

    Testing 驗證基本功能是否正常 短期 新功能的首次部署或系統更新後的快速測 試 Load Testing 測試系統在預期負載下的性能 中長期 確保應用程式在預期使用者數量下維持穩 定的性能 Stress Testing 測試系統在超出設計預期負載時的 表現 短期 確定應用程式的性能和容錯能力是否能夠 滿足需求 Soak Testing 測試系統在長時間使用下的穩定性 長期 確保應用程式在長時間使用後不會出現性 能下降或資源耗盡的問題 19
  10. 20 Common Types of load tests System loading Test Durations

    (Mins) max designed operation capacity Normal expected operation Capacity ?
  11. 30 Agenda 1 WHAT : k6 簡介 HOW : Code

    Q&A 4 3 2 WHY : 傳統監控工具的挑戰
  12. Code Flow : run.go 37 CLI Test Script interacts with

    sends commands to Execution Virtual Users manages HTTP Module interacts with communicates with DNS Resolver interacts with Cookie Jar TLS Config communicates with WebSocket Module gRPC Module HTTP, SQL Module communicates with Metrics Engine collects metrics using Thresholds Checks & VUs API checks against communicates with Test Results
  13. Code Module : run.go • Run.go • Scheduler.go • Engine.go

    • Runner.go 38 Ref : https://miro.com/app/board/uXjVMyGtL9k
  14. 最後 • 官方架構文件資源有限 • 原碼建議閱讀 • K6.go • Executor.go •

    Http.go • Metrics.go • 官方文件 Test types、Test strategies • 設定目標 (SLOs)、選擇合適的測試方式與策略 39 Ref : https://community.grafana.com/t/k6-architecture/99296/3
  15. Reference link • K6 Docs • K6 learn • Testing

    Guides • K6 video @ youtube • 讓我們用 k6 來進行壓測吧 • 如何量測系統的容量? 40