[AZ-400] Get started on a DevOps transformation journey

Introduction to DevOps

  • อันนี้ใน Blog ผมมีสรุปนะ ภาษาไทย แต่ผมจะ Quote Keyword ที่คิดว่าสำคัญ
  • DevOps
    • PDCA - Optimize validated learning
    • Continuous Delivery - quickly fix bugs and respond to change
    • Definition of Done is working software collecting telemetry against the intended business goals.
    • Monitoring and Logging of running - create a hypothesis and quickly validate or disprove strategies
    • Infrastructure as Code (IaC) / Microservices / Containers are the next evolution in virtualization
    • DevOps may hurt at first. เปลี่ยนอะไรก็ต้องมีนเจ็บคนแรกเสมอ
    • คนที่มาทำ DevOps ไม่ควรมาวุ่นกับงานประจำนะ และควรอาจจะมี Expert มาช่วย
    • กำหนด Goal ที่วัดได้ (measurable target) และ Timeline เช่น
      • Reduce the time spent on fixing bugs by 60%.
      • Reduce the time spent on unplanned work by 70%.
      • Reduce the out-of-hours work required by staff to no more than 10% of total working time.
      • Remove all direct patching of production systems.
  • Knowledge Check: Introduction to DevOps

Choose the right project

  • greenfield DevOps (เริ่มใหม่เลย) vs brownfield projects (ของเก่า)
    • greenfield > There was no existing codebase.
    • greenfield > No existing team dynamics of politics. Possibly no current, rigid
    • greenfield > No technical debt. (ยังไม่ Code 55)'
    • อีกอันตรงข้าม
  • systems of record เน้น accuracy and security เช่น core bank reflects bank balance VS systems of engagement (R&D)
  • Identify groups to minimize initial resistance กำหนดกลุ่ม Canary > Early adopters > Users บอก Goal ที่ละนิด และตอบ Org ได้
  • จาก Goal ที่วัดได้ (measurable target) และ Timeline มากำหนด KPI >> Identify project metrics and key performance indicators (KPIs) - Training
  • Knowledge Check: Choose the right project

Describe team structures

  • Agile + Cross Functional จบ
  • และ Key อื่นๆ Collaboration tools / Physical tools / Project management tools / Screen recording tools (อันนี้น่าสนใจ ช่วยงาน Review Code / Fixed Bugs)
  • Knowledge Check: Describe team structures

Choose the DevOps tools

  • Azure DevOps (SaaS) : Azure Boards / Azure Pipelines / Azure Repos / Azure Artifacts / Azure Test Plans (Not for .NET only)
  • GitHub (SaaS) : เก็บ Code และ GitHub Project + Project boards
  • Explore an authorization and access strategy ** ใช้MS Account / GitHub / Azure AD
    • personal access tokens (PAT) เอามา integrate with Azure DevOps เช่น NuGet / Git
    • Security groups เอาไปเปิด Config เช่น third-party applications to access via OAuth
    • Multifactor authentication
  • Migrate or integrate existing work management tools - Jira มี Tools migrate ให้นะ
  • Migrate or integrate existing test management tools Microsoft Test Manager > Azure Test Plans
  • Design a license (ของ DevOps Solution) management strategy
    • ดู Task งานเดิม If you have multiple teams building their solutions, you don't want to wait in the queue to start building yours.
    • Probably, you want to pay for parallel jobs and make your builds run in parallel without depending on the queue availability.
  • Knowledge Check: Choose the DevOps tools

Plan Agile with GitHub Projects and Azure Boards

ภาพนี้อธิบายชัดดี Kanban: Lead Time & Cycle Time | Agile Dictionary (agile-academy.com)

Introduction to source control

  • DevOps foundational practices - Version Control สำคัญขนากไหน มีทุก Level เลย ขนาด Source Control มี stakeholders ด้วยนะ Distributed teams / Strict processes and workflows. / Siloed or Hierarchical organizations.
  • What is source control?
    • เก็บ Version แต่ต้องจัดการ Risk + Security ด้วยนะ มันเก็บ Asset องค์กร
    • Benefits: Create workflows (Enable Collaboration / versions - history of changes) ถ้ามี Automate Task ช่วยลด effort
    • Values - Traceability / Manageability / Efficiency / Collaboration / Learning / Reusability (2 อันนั้นพอเป็นระเบียบ Manageability มันจะได้ Value เพิ่มมา)

Describe types of source control systems

  • source control type
    • Centralized source control เช่น SVN / Team Foundation Version Control (TFVC)
    • Distributed source control - (2 Phase Comit - Local / Remote) เช่น Git
  • Examine and choose Git
  • Understand objections to using Git เพราะเจอคำถามแนวๆนี้บ่อยๆ migrating to Git
    • I can overwrite history - ทำได้ Force Push
    • I have large files - Git ไม่ควรเอา Binary ไฟล์ใหญ่ๆ ยัดลงไป ถ้าจะทำจริงๆ ไปยัดลง Storage แทน อย่าง Azure Artifacts / Blob หรือ ถ้าเลี่ยงไม่ได้ใช้ Git LFS
    • There is a steep learning curve.
  • Describe working with Git locally - Training - ถ้าใช้ Git ได้อยุ่แล้วข้ามได้เลยครับ
  • Knowledge Check: Describe types of source control systems

Work with Azure Repos and GitHub

  • Azure Repos - เป็นได้ 2 mode Centralized/Distributed Source Control
    • Semantic code search / Web hooks and API integration:
    • Code reviews: threaded discussion and continuous integration for each change
    • Automation with built-in CI/CD
    • Protection of your code quality with branch policies - เช่น บังคับให้ Review ก่อน Merge ปล. ฝั่ง GitLab มี Approval นะ
  • GitHub บ้าง Introduction to GitHub
  • Migrate from TFVC to Git (restructure your repo)
    1. Create an empty Git repo (or multiple empty repos).
    2. Get-latest from TFS.
    3. Copy/reorganize the code into the empty Git repos.
      - ถ้าใช้ TFVC : single-branch import เอา History มาได้ 180 วัน
      ถ้าอยากได้หลาย branch และ keep branch relationships ใช้ Git-TFS
      - แต่จากประสบการณ์ Cut Off น่าจะดีกว่า เคยเอาจาก SVN มาแล้ว .git ใหญ่มาก
    4. Commit and push, and you are there!
  • GitHub Codespaces - เขียน Code บน Cloud สิ
  • Lab2: Version Control with Git in Azure Repos - Training | Microsoft Learn
  • Knowledge Check: Work with Azure Repos and GitHub

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.