Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly...

36
1 @pritianka #velocityconf @pritianka #velocityconf CD with Kubernetes: The Prequel

Transcript of Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly...

Page 1: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

1@pritianka #velocityconf@pritianka #velocityconf

CD with Kubernetes: The Prequel

Page 2: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

2#velocityconf@pritianka

Speaker

Priyanka SharmaDirector of Technical Evangelism - GitLab

Board Member - Cloud Native Computing Foundation@pritianka

Page 3: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

3#velocityconf@pritianka

The Real Hero

Marin Jankovski (and his team)Engineering Manager, Delivery

@maxlazio

Page 4: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 5: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

Business survival depends upon a radically faster DevOps lifecycle

which can only be enabled by shifting left

Page 6: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 7: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

How: Small, very small changes unlock velocity

MVP

MVF

MVF MVF MVC MVCMVC

MVCMVC

MVC

Page 8: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 9: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 10: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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!

Page 11: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 12: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

#velocityconf@pritianka

What the delivery team spent time (2018)

Page 13: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 14: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

14@pritianka #velocityconf

GOVERNED

Develop and operate with confidence

EFFICIENTCollaborate

without waiting

VISIBLE Real time view across

the entire lifecycle

GitLab runs on GitLab

Page 15: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

15@pritianka #velocityconf

GitLab runs on GitLab, uses Ansible, and does not yet use k8s for CD

Page 16: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

16@pritianka #velocityconf

Before

Page 17: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

17@pritianka #velocityconf

Good enough solution

Page 18: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 19: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

19@pritianka #velocityconf

Expanded pipeline

🔍

Page 20: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 21: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

21@pritianka #velocityconf@pritianka #velocityconf

Commit to Canary in 2 hours

Page 22: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

22@pritianka #velocityconf@pritianka #velocityconf

From weekly to daily deploys

Page 23: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

23@pritianka #velocityconf@pritianka #velocityconf

All developers in on call rotation within 3 weeks

Page 24: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 25: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

25#velocityconf@pritianka

What does the Release team spend their time in 2019?

Page 26: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

26#velocityconf@pritianka

More frequent deploys

Page 27: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 28: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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/

Page 29: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

First service running in Kubernetes!

Page 31: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

#velocityconf@pritianka

Rate today’s session!

Page 32: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

32#velocityconf@pritianka

Thank you!

Priyanka SharmaDirector of Technical Evangelism - GitLab

Board Member - Cloud Native Computing Foundation@pritianka

Page 33: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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

Page 34: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

34@pritianka #velocityconf

15Xfaster builds

Ticketmaster migrated from Jenkins to GitLab to speed up build time.

Public Case Study

Page 35: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

35@pritianka #velocityconf

120XIncreased QA

efficiency

Paessler AG automated QA tasks down from 1 hour to 30 seconds.

Public Case Study

Page 36: Prequel CD with Kubernetes: The - O'Reilly...Release management at GitLab (2013-2018) 1. Monthly release on the 22nd 2. Rotating Release Manager role 3. Manual actions 4. Semi - automated

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