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
- GitHub: Projects / Project boards (Kanban Style)
- Azure DevOps - Azure Boards (ไปๆมาๆ เหมือนเน้นจากการ Task บน GitHub มากกว่า)
- Kanban Style - Core และมี View Calendar
- Delivery Plan และ Link GitHub (ใช้ Azure Boards ใน GitHub Marketplace)
- Note: Azure Boards have direct integration with Azure Repos, but it can also be integrated with GitHub to plan and track work linking commits, PRs, and issues.
- Azure DevOps (Widgets)
- Lead Time -Show elapsed time from the creation of work items to their completion
- Cycle Time - Show elapsed time to complete work once they are marked as active
- Burndown - Trend of the work remaning ทั้ง Team / Sprint ทั้งหมด
- Burnup - ตรงข้าม Burndown
- Velocity - How much work that team can complete during sprint
- Cumulative Flow Diagram (CFD) - find bottleneck + check consistently delivering value จาก work items (over time)
- Azure Board มันเชื่อมกับ MS Team แจ้ง Notification ผ่าน MS Team ได้ด้วยนะ
- Key enable the Third-party application access via OAuth setting for the Azure DevOps
- Ref Use Azure Boards with Microsoft Teams - Azure Boards | Microsoft Learn
- Lab1: Agile plan and portfolio management with Azure Boards - Training
- Knowledge Check: Plan Agile with GitHub Projects and Azure Boards
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 เพิ่มมา)
- Knowledge Check: Introduction to source control
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
- Community - Popular
- Distributed development
- Trunk-based development - Short Feature Branch ดูเพิ่ม trunkbaseddevelopment.com / Trunk-based Development | Atlassian
- Pull requests (Git) / Merge Request (GitLab) - มันจะทำให้เกิด Faster release cycle
- 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)
- Create an empty Git repo (or multiple empty repos).
- Get-latest from TFS.
- 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 ใหญ่มาก - 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 sent to your email.