This document provides an overview of implementing DevOps for the Microsoft platform. It discusses DevOps practices like continuous integration, continuous deployment, and release management using tools like Team Foundation Server. The agenda includes discussing DevOps concepts, why organizations adopt DevOps, and how to establish an automated CI/CD pipeline for code, databases, and releases.
4. Today’s business and technical needs are pushing traditional delivery approaches to the breaking
point
Delivery Challenges
5. Definitions
Applying agile techniques to operations
Getting development and operations to work
together
DevOps is the last mile of Agile
How to deploy software with speed and
confidence
DevOps is about accelerating software
deployment
Characteristics
Treating “Infrastructure as Code” is fundamental
to DevOps
Automating the work of setting up and
maintaining systems infrastructure
Making it defined, efficient, testable, auditable
and standardized
Automated Testing is part of your pipeline
Automated CI / CD pipeline
Automated application deployment
Logging & Traceability of all changes
What is DevOps
7. Do we really need DevOps?
Developers always want to deliver changes as soon as
possible.
Operations want reliability and stability.
8.
9. Ops / ITIL Values:
•Procedure Driven
•Stability
•Availability/Uptime
•Controlled/Frozen environment
•Infrequent Updates
Results in:
Long Lead Time
Limiting the # of Changes
Infrequent Deployments
Agile Dev Values:
•Business Driven
•Responsive to Change
•Real Time
•Constantly up to date
environment
•CI / CD Environment
Results in:
Short Sprints (2-3 wk)
Lots of small changes
Frequent Deployments
Ops vs Dev
10. 7Cs OF DevOps
1. Communication
2. Collaboration
3. Controlled Process
4. Continuous Integration
5. Continuous Deployment
6. Continuous Testing
7. Continuous Monitoring
Agile mantra “People over
Process over Tools”. With the right people, we establish the
right process and choose the right tools to deliver the end
Results
• People – Communication & Collaboration
• Process – Source Control Check-ins, Code Review, Code
Quality, Change Control, RCAs
• Tools – For Continuous Delivery (achieve by the
combination
of Continuous Integration, Continuous Deployment and
Continuous Testing) and Continuous Monitoring
14. Hard To Achieve DevOps without automation
Automate Provisioning - Infrastructure as Code
Automate Builds – Continuous Integration
Automate Deployments – Defined Deployment Pipeline and Continuous
Deployments with appropriate configurations for the environments
Automate Testing – Continuous Testing, Automated tests after each
deployment
Automate Monitoring – Proper monitors in place sending alerts
Automate Metrics – Performance Metrics, Logs
17. 7/13/201717
CI to Trunk Enables Release On Demand
Epic/Feature Branch A
Trunk
Release 1
Epic/Feature Branch B
Epic/Feature Branch C
Check-Ins
Check-Ins
CI Builds &
Test Runs
Trunk Merges
Release Label
CI Builds &
Test Runs
Release Label
Reverse
Integration
Forward
Integration
With selective merging, integration to trunk can continue without
dependency to release timing considerations.
Check-in LabelCI Build
Check-Ins
Selective
Merge
Release Hardening Fix Check-In
Release Label
19. Process Activities and Timelines
Activity Branch Performed By Proposed Time Line Validation
Check In Feature Developers Anytime Build should not break
Merge Trunk
Leads/Designated People
Often!
At minimum, upon story
QA,BA and PO signed off
Trunk Build should not break (Db and
Website)
Forward Integration Feature Developers
Often! At minimum, at
Sprint Start (Monday India
Day)
Build should not break
Release Branch Trunk
RM with Dev Team Leads
Leads
Per Release Calendar
Confirm Required Change sets are
available per Team wise and Build
successful
Post Release Release Developers ASAP
The intended Release fix validated on a
a lower branch
Reverse Integration Trunk
Leads/Designated People
After Hotfix is validated Trunk Build should not break
20. Continuous Integration
- First step in DevOps Journey
- Provides immediate feedback for the team
- Provides immediate feedback on code quality
when underlying process are automated
22. Database Deployment
- Why DB deployment is different from Code
- Challenges with DB Deployment
- Principles of DB deployment
- What are our options
- How you can get started
24. Why Continuous Delivery?
Get faster time to market and respond with greater agility to customer feedback. Design and automate release pipelines across your environments to any target
platform.
Ship with confidence:
Raise the quality bar with every release: Configure tasks for all of your release checkpoints – performance, A/B, functional, security, beta testing and
more. No more release day nightmares.
Orchestrate deployments across targets:
Get control of your deployments:
Manual or automated gates for approval workflows: Enable sign-off for deployments using pre or post deployment approvals. Automatic
notifications ensure collaboration and release visibility among team
End-to-end traceability
Track the status of releases and deployments including commits and work items in each environment.
As of VS 2017: There is no need of separate release management server. Only Agents and Pool
In 2017: To support automated builds, we need to configure.
Lee Thomson describes this as a wall of confusion between development
and operations. This wall of confusion not only exists
between the mindsets of the two teams but also with the tools they
use. Development uses some tools and operation uses some other
tools to perform the same stuff.
Dev Ops Focuses both the Apps team’s drive for agility
responsiveness and the NOC’s concern with quality and
stability on the ultimate goal of providing business value
For our devops definition, we will refer to Microsoft’s website and their interpretation
Merging from Dev to Trunk
Merge one story at a time.
All change sets for the story from the dev branch should be merged and checked-in to trunk in a single trunk change set.
The trunk change set should be associated with the story PBI
The trunk change set should have comments in the following format:
“<Product/Initiative/Epic Name> - <Feature Name> - <PBI#> : <Story Name>”
Trunk Usage Guidelines
Do not perform direct check-ins on the Trunk branch. All code in trunk should be from merges from other trunk-derived branches.
Code should be merged into trunk after it has been accepted as [Done] by the BA/PO. Code that is [Done] should not be held in dev branches.
Teams should regularly forward integrate from the Trunk into dev branches. It is recommended that this be done at least once per sprint. Teams ultimately determine how often to forward integrate into their own branches.