our journey to devops at microsoft · devops at microsoft data: internal microsoft engineering...

56
Azure DevOps Randy Pagels Azure Specialist - Application Development US Great Lakes Region

Upload: others

Post on 22-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Azure DevOps

Randy PagelsAzure Specialist - Application Development

US Great Lakes Region

Page 2: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

How Microsoft Engineering uses Azure DevOps

MS Engineering uses 1ES to build Azure DevOps, Windows 10, Visual Studio, Bing…etc.…using Azure DevOps

…building 146,000 times per day…deploying 82,000 times per day

… for millions of users + most of Microsoft.

Page 3: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft’s DevOps Tooling – enhanced by GitHub

Security

Package Registry

Actions

Page 4: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

The journey so far

Sprint 1August 2010

Sprint 29June 2012

VSTS Preview

Sprint 67June 2014

1ES

Sprint 102May 2017

Windows on Git Azure Pipelines

Sprint 140Sep 2018

Sprint 162Nov 2019

April 2015

VS CodeJuly 2014

Microsoft on GitHub

Nov 2016

Join Linux

FoundationOct 2018

GitHub

AcquiredMarch 2010

400 Open Source

Projects

8.8k open source projects

25k employees contributing

Page 5: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Before Azure DevOps

Page 6: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft Confidential

Page 7: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

One Engineering System (”1ES”)

Page 8: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft Confidential

One Engineering System with Azure DevOps

Page 9: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

1ES Growth

0

20,000

40,000

60,000

80,000

100,000

Engineer Users

Non-engineering Users

Page 10: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

DevOps at Microsoft

Data: Internal Microsoft engineering system activity, November 2019

442kPull Requests per

month

2.4m Private Git commits per

month

82,000Deployments per day

4.6m Builds per month

155pb Build artifacts managed

8.8kOpen Source Repos

24kEmployees contributing

to open source

28kWork items created/day

500kWork items updated/day

Azure DevOps is the toolchain of choice for Microsoft engineering with over 110,000 active internal users

https://aka.ms/DevOpsAtMicrosoft➔

Page 11: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Azure Networking

One Engineering System with Azure DevOps

Page 12: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft Confidential

Page 13: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 14: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft Confidential

Software Products

500GB+Source code

6000+Repos

Page 15: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Microsoft Confidential

7,300 Developers making code changes

11,000 Topic branches

367,000 Commits

33,000 Pull requests

9,700 Branch Integrations

10 commits per minute

1,100 pull requests per day

On Average, Each Month

Page 16: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

For 1 Day of Automated Lab Testing

Page 17: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 18: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 19: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Quantitively & Qualitatively

Page 20: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 21: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Original estimate

Completed hours

Lines of Code

Team capacity

Team burndown

Team story point velocity

# of bugs found

% code coverage

Things we don’t watchAcquisition

Engagement

Satisfaction

Churn

Feature Usage

Customer Usage

Time to Detect

Time to Communicate

Time to Mitigate

Which customers affected

Incident Prevention Items

Aging Prevention Items

SLA per Customer

Customer Support Metrics

Live Site Health

Time to Build

Time to Test

Time to Deploy

Time to Improve

Failed and flaky automation

Pipeline Velocity

Page 22: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 23: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 24: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Page 25: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Page 26: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 27: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 28: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Assume Breach

Initially double-blind test

Over time, eliminated blue team

Our defenders need to be our defenders

vs.

Shifted left to prevent top risks

Credential theft

Secret leakage

OSS vulnerabilities

Started with war games to the learn attacks and practice response

Page 29: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 30: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Alignment

Autonomy

“Let’s try to give our teams three things…. Autonomy, Mastery, Purpose”

Page 31: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 32: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 33: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Teams

Physical team rooms

Cross discipline

10-12 people

Self managing

Clear charter and goals

Intact for 12-18 months

Own features in production

Own deployment of features

Page 34: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

UI

API

Data

Page 35: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

UI

API

Data

Page 36: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Employee choice, not manager driven

Typically <20% change, but 100% get to make a choice

Cross-pollinate talent and micro-culture

Sticky Note Exercise - Self Forming Teams

Page 37: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Sprint3 weeks

1

Plan3 sprints

3

Season6 months

6

Strategy12 months

Teams are responsible for the detail

Leadership is responsible

for driving the big picture

Page 38: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

3 weeks

SpringFallSpring Fall

Page 39: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 40: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Managing the pipeline:

go fastHow do you

and

notbreak things?

Page 41: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

engineers on

your team# 5 ?x =

Page 42: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Rule: If your bug count exceeds your bug cap… stop working

on new features until you’re back under the cap.

5 50x =10

Page 43: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Composing Isolation Mechanisms

Old way of branching

Fixes Hot fixes

Release Service Pack

Integration/Main

Team A

Team B

Team C

Feature 1

Feature 2

Release

Page 44: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Using Trunk Based Development to avoid Merge Debt

Release Flow

Page 45: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 46: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 47: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 48: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Your aim won’t be perfect.

Control the blast radius.

1

Page 49: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 50: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 51: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Customer Obsessed

Production First Mindset

Team Autonomy + Enterprise Alignment

Shift Left Quality

Infrastructure as Flexible Resource

Page 52: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 53: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

Shared abstraction layer

Single master branch, multiple release branches

Update 1

Update 2

Update N

Azure DevOps (SaaS)

Azure DevOps Server

One code base with multiple delivery streams

Page 54: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits

After• 3-week sprints

• Vertical teams

• Team rooms

• Continual Planning & Learning

• PM & Engineering

• Continual customer engagement

• Everyone in master

• 8-12 person teams

• Publicly shared roadmap

• Debt paid as incurred

• Mockups in PPT

• Inner source

• Flattened organization hierarchy

• User satisfaction determines success

• Features shipped every sprint

Before• 4-6 month milestones

• Horizontal teams

• Personal offices

• Long planning cycles

• PM, Dev, Test

• Yearly customer engagement

• Feature branches

• 20+ person teams

• Secret roadmap

• Bug debt accumulated

• 100 page spec documents

• Private repositories

• Deep organizational hierarchy

• Success is a measure of install numbers

• Features shipped once a year

Page 55: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits
Page 56: Our Journey to DevOps at Microsoft · DevOps at Microsoft Data: Internal Microsoft engineering system activity, November 2019 442k Pull Requests per month 2.4m Private Git commits