[AZ-400] Implement continuous feedback

อันนี้จะเป็นวง Monitor และ ว่าหลังจาก CI/CD จบแล้ว มา Monitor เพื่อให้ได้ Feedback กลับมา

Implement tools to track usage and flow

Understand the loop
  • Understand the inner loop
    • inner loop - มองว่าเราแตก Branch มา Dev (Experiment) / Build + Test (Feedback) / Commit (Tax-เค้ามองว่ามันไม่ได้สร้าง Value หรือ บอก Feedback)
    • Tangled loops - loop ใหญ่กว่า อันนี้มองว่าเป็นเอา Code จาก inner loop ส่ง Pull Request / Merge Request เข้าไป
    • Loop optimization - ทำยังไงให้ Loop มันสั้นลง
      • Refactor Code ให้มัน codebase เล็กลง ปรับเป็น Share Lib กับส่วนอื่นแทน
      • หรือ จะเป็นการเพิ่ม Skill
      • หรือ ลดเวลาให้ได้ Feedback ได้เร็ว เช่น Test ต่อ DB มา Mack TextFile เป็นต้น
    • No silver bullet solution สำหรับรับ Feedback แต่เราต้องตามว่าเมื่อไหร่ที่มันช้า มีปัญหา และมาจัดการกับมัน
  • Introduction to continuous monitoring - แนวคิดเดียวกับ CI/CD แหละ โดย Tool ที่ใช้ Azure Monitor โดยการทำ
    • Enable monitoring for all your applications
    • Enable monitoring for your entire infrastructure
    • Combine resources in Azure Resource Groups
    • Ensure quality through continuous deployment - จาก Azure Pipeline
    • Create actionable alerts with actions
    • Prepare dashboards and workbooks - เจ้า Azure Monitor จะเอาข้อมูล Metrics, Logs มาใช้สร้าง
    • Continuously optimize จาก Application Insights track end-user behavior and engagement และ Impact Analysis
KQL - Tabular expression Ref: MustLearnKQL/MustLearnKQL_Book.pdf at main · rod-trent/MustLearnKQL (github.com)
  • KQL - Kusto Query Language - ภาษาคล้าย SQL + Powershell //มันชอบคั่นด้วย Pipe เพื่อดูข้อมูลที่สนใจ โครงสร้างของ Query ทั่วไป (Tabular expression) ตามรูปด้านบนเลย
    • Tabular expression > Source | Operator1 | Operator2 | RenderInstruction
    • let - set a variable เพื่อเอาทำ Function / View หรือเอามาทำ Logic จากข้อมูลที่ได้ Tabular expression
    • set - control how a query executes and returns results หรือเอามาทำ Query Limit
//Tabular expression หรือกำหนด Take n ไว้ก็ตาม
//สุดท้ายมันจะกรองมาแสดงผลตาม truncationmaxsize and truncationmaxrecords
set truncationmaxsize=1048576;
set truncationmaxrecords=1105;
MyTable | where User=="UserId1"
---------------------------------
//ยึดตาม Take n 
set notruncation;
MyTable | take 1000000   

Develop monitor and status dashboards

  • สำหรับวิธีการทำ Dashboard มี Azure มี 5 แบบ
Toolsจุดเด่นจุดด้อย
Azure Dashboards- Supports both metrics and logs.
- Combine data from multiple sources
- View with Azure RBAC
- Automatic refresh
- Log charts are limited to the last 30 days
- data series is limited to 10
- No interactivity with dashboard data
Azure Monitor-View Designer- Rich visualizations for log data.
- Interactive supports multi-level drill-in
- Integrates into Log Analytic management model with workspaces and monitoring solutions.
- create custom visualizations with log data. 
- Supports logs but not metrics.
- No personal views //เห็นเหมือนกันทุกคน
- No automatic refresh.
Azure Monitor-Workbooks- Supports both metrics and logs
- parameters enabling interactive reports
- Document-like flow
- No automatic refresh.
- เหมือนกับการหา Insight มากกว่าดูภาพรวม Dashboard
Power BI- Rich visualizations.
- ง่ายกับการแชร์
- logs visualization in
real-time.
- Supports logs but not metrics.
- Realtime ไหม ขึ้นกับ License Power BI
Build your own custom applicationทำได้หมดตามที่ API เปิดให้ใช้ Effort มากเยอะ

Share knowledge within teams

  • Share acquired knowledge within development teams
    • เพราะไม่มีใครอยู่ตลอดไป //NO HERO
  • Introduction to Azure DevOps project wikis
    • รองรับ Mark Down และ GitHub Flavored Markdown (GFM) ถ้าเป็นพวก Diagram ใช้ตัว Mermaid
    • สร้างเอง หรือ Publish Code as Wiki (ให้มันแปลง readme หรือ .md มาให้ แต่ต้องเป็น admin ของ repo)
    • ส่วนถ้าอยากแก้ไข Wiki สิทธิ Contributor
Work item สามารถถูกสร้างจาก Application Insights

Design processes to automate application analytics

  • Assisting DevOps with augmented Search
    • Augmented Search algorithm analysis: errors, risk factors, and problem indicators.
    • Automatically identifies
  • Integrate telemetry
    • telemetry
      • insights on which features end users use most, detect bugs and issues
      • provide better visibility into the performance without asking for feedback directly from users
    • telemetry data comes from application logs, infrastructure logs, metrics, and events.
    • Telemetry enables you to answer questions such as:
      • Are your customers using the features you expect? How are they engaging with your product?
      • How frequently are users engaging with your app, and for what duration?
      • What settings options do users select most? Do they prefer certain display types, input modalities, screen orientation, or other device configurations?
      • What happens when crashes occur? Are crashes happening more frequently when certain features or functions are used? What is the context surrounding a crash?
    • Challenges of telemetry - เก็บยังไงไม่ให้ user รู้สึกว่าติดตามข้อมูลส่วนบุคคล ถ้ามาไป user อาจจะปิดได้
  • Examine monitoring tools and technologies
    • Application Performance Management (APM) solutions
      • that intelligently monitor, analyze, and manage cloud, on-premises, and hybrid applications and IT infrastructure.
      • helps identify the root cause of issues
    • advanced features
      • Synthetic Monitoring - ensure tested and operate successfully from different points of presence เช่น Web / Mobile
      • Alert Management - อันนี้นึกถึงภาพของ IRP ในมุม Security พอมี Case แล้ว Noti หรือ Assign คนได้
      • Deployment Automation - avoid potential duplication and erroneous information
      • Analytics
  • Knowledge check: Design processes to automate application analytics

Manage alerts, blameless retrospectives and a just culture

  • Examine when get a notification
    • Application Insights automatically analyzes the performance ของ web application โดยได้ Smart Notification ในกรณี
      • Response time degradation - Response Request ช้าลง
      • Dependency duration degradation - API ที่เราไปเรียก ตอบสนองช้าลง
      • Slow performance pattern
    • smart detection notifications: default ส่งให้ owners/ contributors / reader's access ถ้าจะเอาออกก็มาแก้
  • Explore how to fix it - จาก Notification มีการจัดการได้ ดังนี้
    • Triage -ช่วยบอก user/service ที่กระทบ เอามาประเมิน Priority
    • Scope - โดนทุก Zone หรือบางส่วน ?
    • Diagnose - ตรวจสอบเพิ่มเติม จาก Profiler / snapshot debugger.
  • Improve performance
    • Triage - มันอาจจะแสดงสัญญาณบางอย่างจาก Graph และว่ามีปัญหา เช่น % traffic ลดลงไป จากเคสนี้ เราต้องไปดูว่าเกิดจากอะไร Network หรือป่าว ลองดูจาก availability tests  หรือ Slow Page Load (อาจจะมี Error บางอย่าง)
    • Diagnose slow page loads
      • ใช้ performance metrics มาช่วยหาว่าทำไม Send Request Time สูง, server responds ช้า, request มีขนาดใหญ่
      • Set up dependency tracking - บางทีตัวที่ช้า อาจจะ External Service
      • หรือติดปัญหา Render แต่ละ Component ลองดู availability tests  ในแต่ละ region การดึง JS / CSS / Image มีปัญหาอะไร Block ไหม
      • High Client Processing time - ต้องลองดู Client Script(JS) มีอะไรที่ทำงานผิดปกติไหม
    • Improve slow pages
      • Slow loading (large files) - แก้ให้เป็น asynchronously / script bundling. Break the main page into widgets / ถ้า request ส่งด้วย json (มันมีใครส่งด้วยอย่างอื่นเหรอ ?) ตัว json มันบีบได้อีกนะ
      • Slow server dependencies: เพิ่ม CDN หรือลองดูว่า External Service ที่ใช้อยู่ใน region เดียวกันไหม ?
      • Capacity issues: - เพิ่ม Spec เอาตามข้อมูล metric นะ
    • Note: script bundling ดูจากอันนี้ก็ดีนะ
Ref: Speed up Google Maps(and everything else) with async & defer | by Nikhil John
  • Understand server response time degradation //response time degradation (เหวี่ยง)
    • สังเกตุได้อย่างไร อาจจะดู metric ที่ได้เทียบกับค่าย้อนหลัง 7 วันก่อน
      • 90th percentile response time (เอา 90% ส่วนใหญ่ที่ได้) ปล. 90th percentile เหมือนเลขที่อยากได้ บางตำราบอกเอาที่ 95th หรือ 80th
        ดูอันนี้เพิ่ม Metric ที่สําคัญของ Load Testing? | HowToAutomate.in.th
      • Count of this operation requests
    • Correlation between degradation กับ related dependencies ดูใน Application Insight ดังนี้
      • Profiler traces 
      • Performance reports in Metric Explorer
      • Search for this call to view specific call properties.
      • Failure reports - If count > 1 it means that there were failures in this operation 
  • Reduce meaningless and non-actionable alerts - หลังจากใช้กันมานาน เราต้องมาปรับ Alert ให้เหมาะสม
  • สุดท้าย ฺBlameless retrospective + ทำให้ DevOps เป็น Culture มี PDCA ที่ดี
  • Knowledge check: Manage alerts, blameless retrospectives and a just culture

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.