Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly...
Transcript of Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly...
1@pritianka #velocityconf@pritianka #velocityconf
CD with Kubernetes: The Prequel
2#velocityconf@pritianka
Speaker
Priyanka SharmaDirector of Technical Evangelism - GitLab
Board Member - Cloud Native Computing Foundation@pritianka
3#velocityconf@pritianka
The Real Hero
Marin Jankovski (and his team)Engineering Manager, Delivery
@maxlazio
4#velocityconf@pritianka
Agenda
Cloud native development and accelerating cycle time is increasingly important to business survival.
To succeed, engineering leaders must embrace CI/CD and be thoughtful of how to leverage new tech. This is GitLab’s story to moving a large scale production system to continuous delivery.
● How we did it - legacy first
● The value CD brought to GitLab
● DevOps - achievement unlocked
● The business imperative - cycle time compression
Business survival depends upon a radically faster DevOps lifecycle
which can only be enabled by shifting left
Speeding Up Release Cycle Time is Critical to Business
What you initially thought the goal was
What the initial optimal solution was
Optimal solution moved to
Cycle time compression may be the most underestimated force in determining winners & losers in tech. — Marc Andreessen
How: Small, very small changes unlock velocity
MVP
MVF
MVF MVF MVC MVCMVC
MVCMVC
MVC
Release management at GitLab (2013-2018)
1. Monthly release on the 22nd
2. Rotating Release Manager role
3. Manual actions
4. Semi - automated
But our reality was different
9#velocityconf@pritianka
Agenda
Cloud native development and accelerating cycle time is increasingly important to business survival.
To succeed, engineering leaders must embrace CI/CD and be thoughtful of how to leverage new tech. This is GitLab’s story to moving a large scale production system to continuous delivery.
● How we did it - legacy first
● The value CD brought to GitLab
● DevOps - achievement unlocked
● The business imperative - cycle time compression
10
Release management at GitLab (2018)
● July - Release management team formed ● October - renamed to Delivery team with expanded mandate - Kubernetes migration
Let’s make releases easier!
11
1. GitLab.com is a live system -> No downtime2. GitLab still needs to release at the same cadence -> No delays3. Migration to Kubernetes is a multi month project -> No time4. Engineering organization ready for Continuous Delivery? -> ???
Our constraints
#velocityconf@pritianka
What the delivery team spent time (2018)
13#velocityconf@pritianka
Tackling 80% of the pie
This would bring:
1. No release delays2. Repeatable and faster deploys to enable no downtime 3. More time for our Kubernetes migration4. More space to prepare the org for Continuous Delivery
The game plan
14@pritianka #velocityconf
GOVERNED
Develop and operate with confidence
EFFICIENTCollaborate
without waiting
VISIBLE Real time view across
the entire lifecycle
GitLab runs on GitLab
15@pritianka #velocityconf
GitLab runs on GitLab, uses Ansible, and does not yet use k8s for CD
16@pritianka #velocityconf
Before
17@pritianka #velocityconf
Good enough solution
18@pritianka #velocityconf
We’ve used a number of GitLab features:
1. GitLab CI scheduled pipelines with GitLab API to automate Deploysa. Create branchesb. Cherry-pick merge requestsc. Create issues
2. GitLab project mirroring for CE and EE3. GitLab CI for reducing manual RM work
a. Multi project pipelinesb. Deploymentc. Automated QA
4. GitLab Chatops to reduce context switching and do everything from Slacka. All release publishing tasks are triggered through Chatops
Automation with existing tools
19@pritianka #velocityconf
Expanded pipeline
🔍
20#velocityconf@pritianka
Agenda
Cloud native development and accelerating cycle time is increasingly important to business survival.
To succeed, engineering leaders must embrace CI/CD. This is GitLab’s story to moving a large scale production system to continuous delivery.
● How we did it - legacy first
● The value CD brought to GitLab
● DevOps - achievement unlocked
● The business imperative - cycle time compression
21@pritianka #velocityconf@pritianka #velocityconf
Commit to Canary in 2 hours
22@pritianka #velocityconf@pritianka #velocityconf
From weekly to daily deploys
23@pritianka #velocityconf@pritianka #velocityconf
All developers in on call rotation within 3 weeks
24#velocityconf@pritianka
Agenda
Cloud native development and accelerating cycle time is increasingly important to business survival.
To succeed, engineering leaders must embrace CI/CD. This is GitLab’s story to moving a large scale production system to continuous delivery.
● How we did it - legacy first
● The value CD brought to GitLab
● DevOps - achievement unlocked
● The business imperative - cycle time compression
25#velocityconf@pritianka
What does the Release team spend their time in 2019?
26#velocityconf@pritianka
More frequent deploys
27@pritianka #velocityconf
Our culture shift
Quality is a priority
No hot-patching unless p1 and s1
Every engineer is on the on-call rotation
All aboard the k8s boat!
Next up
image: CC0: by: https://pixabay.com/en/users/kliempictures-3066210/ link:https://pixabay.com/en/container-container-ship-port-1611490/
First service running in Kubernetes!
#velocityconf@pritianka
Resources
● Automated scheduled deployments design● Automated deployments process● Automated deployment transition● Report from GitLab 10.4 release ● Kubernetes work
○ Kubernetes configuration decisions○ Container Registry production readiness review○ Container Registry work epic
#velocityconf@pritianka
Rate today’s session!
32#velocityconf@pritianka
Thank you!
Priyanka SharmaDirector of Technical Evangelism - GitLab
Board Member - Cloud Native Computing Foundation@pritianka
33@pritianka #velocityconf
GitLab is the first single application for the entire DevOps lifecycle
Manage Plan Create Verify Package Secure Release Configure Monitor Defend
Since 2016 Since 2011 Since 2011 Since 2012 Since 2016 Since 2017 Since 2016 Since 2018 Since 2016 Coming soon:
Cycle Analytics
DevOps Score
Audit Management
Authentication and
Authorization
Coming soon:
Code Analytics
Workflow Policies
Kanban Boards
Project Management
Agile Portfolio Management
Service Desk
Coming soon:
Value Stream Management
Requirements Management
Quality Management
Source Code Management
Code Review
Wiki
Snippets
Web IDE
Coming soon:
Design Management
Live Coding
Continuous Integration (CI)
Code Quality
Performance Testing
Coming soon:
System Testing
Usability Testing
Accessibility Testing
Compatibility Testing
Container Registry
Maven Repository
NPM Registry
Coming soon:
Rubygem Registry
Linux Package Registry
Helm Chart Registry
Dependency Proxy
SAST
DAST
Dependency Scanning
Container Scanning
License Management
Coming soon:
SecretDetection
IAST
RASP
Continuous Delivery (CD)
Release Orchestration
Pages
Review Apps
Incremental Rollout
Feature Flags
Coming soon:
Release Governance
Auto DevOps
Kubernetes Configuration
ChatOps
Serverless
Coming soon:
PaaS
Chaos Engineering
Runbook Configuration
Cluster Cost Optimization
Metrics
Logging
Cluster Monitoring
Tracing
Error Tracking
Coming soon:
Synthetic Monitoring
Incident Management
Status Page
Runtime Application
Self Protection
Web Application
Firewall
Threat Detection
BehaviorAnalytics
Vulnerability Management
Data Loss Prevention
Container Network Security
34@pritianka #velocityconf
15Xfaster builds
Ticketmaster migrated from Jenkins to GitLab to speed up build time.
Public Case Study
35@pritianka #velocityconf
120XIncreased QA
efficiency
Paessler AG automated QA tasks down from 1 hour to 30 seconds.
Public Case Study
36@pritianka #velocityconf
26Xfaster release cycles
SVN was a blocker to adopting DevOps. Axway implemented GitLab and went from yearly to biweekly deployments.
Public Case Study
OKAY for now - replace with Goldman Sachs when we can