Top Banner
Monoliths to Microservices Practical Tips For CI, CD and DevOps in the Microservices world @dwmkerr Dave Kerr Senior Expert, McKinsey & Company
46

Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Jan 22, 2018

Download

Technology

Dave Kerr
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Monoliths to MicroservicesPractical Tips For CI, CD and DevOps in the Microservices world

@dwmkerr

Dave Kerr

Senior Expert, McKinsey & Company

Page 2: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Who am I?

@dwmkerr

Page 3: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

I am a technology consultant.

@dwmkerr

Page 4: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World
Page 5: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Which is closer to this…

@dwmkerr

Page 6: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World
Page 7: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

What am I going to talk about?

@dwmkerr

Page 8: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

The Project.

@dwmkerr

…or ‘come back WebSphere, all is forgiven’.

Page 9: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

2016 – new digital banking

application launched to critical

acclaim

@dwmkerr

Page 10: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Digital garage setup, experienced

product team, streets paved with

gold.

@dwmkerr

Page 11: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

An effective product

team will rapidly surface

technological and organisational

issues.

@dwmkerr

Page 12: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

I once caught a monolith

thiiiiiiiis big

Page 13: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Solution

Rebuild

Stack

Refresh

105 people

60 devs

5 tech leads

2 architects

9 months

React Native

Node.js

Kubernetes

GraphQL

DevOps 2.0

Hiring

Overhaul

New HR processes

> 50 new hires

Sometimes there are no easy answers…

Extensive

Training

Backend

Frontend

Scrum / Agile

PMO

Let’s talk about this…

@dwmkerr

Page 14: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Our vision is to replace large complicated systems

with small and simple unitsMobile Web

Monolith

Integrator ESB SC

CI/

CD

Art

efa

cts

AP

M

Logs

Core

Card

man

agem

ent

Tran

sfer

s

Frau

d

ATM

sw

itch

Inte

rban

k sw

itch

File

Man

agem

ent

…etc…

Map

/R

edu

ce

…etc…

Spar

k

Data lake

Internal Gateway

API Gateway

Bill paymentsProfile &

preferencesReferralsP2P payments

2FA, TX signing, soft-

Token

Contacts & groups

StatementsDevice

management

CardsIdentity

managementNotifications &

inboxAccounts

& transfers

Mobile Web

Existing server applications

Enterprise integration

Core platforms & databases

Service zones

Devops zone

Analytics zone

ExistingRetired New

Don’t forget to mix in some

Page 15: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

People were nervous about all of

the changes…

@dwmkerr

Page 16: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

Page 17: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Hic sunt dracones.…practical tips for devops in the microservice world…

Page 18: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple

@dwmkerr

Page 19: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple.

Build: turn code into artifacts

Deploy: put artifacts somewhere

@dwmkerr

Page 20: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Source

http://www.dwmkerr.com/simple-continuous-integration-for-docker-images/

Page 21: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple... by embracing make.

Step 1: rip out logic from your build system to create primitive

commands

@dwmkerr

Page 22: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple... by embracing make.

Step 2: call primitive commands from your build system

@dwmkerr

Page 23: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple... by embracing make.

Step 3: when things get complicated, put them into ./scripts

@dwmkerr

Page 24: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Keep pipelines simple... by embracing make.

Demo

github.com/dwmkerr/beautifully-simple-app-ci

@dwmkerr

Page 25: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Craft Dockerfiles for your

projects

@dwmkerr

Page 26: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World
Page 27: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Craft Dockerfiles for your projects

A project’s baseline image for a Node 8 microservice. Handles: build-time proxies, NPM registry, non-root users,

version tracking and allows the base OS to be changed. This Dockerfile is sneaky – no file system changes, only

instructions for later builds!

Page 28: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Craft Dockerfiles for your projects

Page 29: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Craft Dockerfiles for your projects

Demo

github.com/dwmkerr/docker-dynamodb

@dwmkerr

Page 30: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

Tip: Use the sandbox…and share your toys!

Page 31: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Use the sandbox

Code Sample

github.com/dwmkerr/terraform-aws-openshift

@dwmkerr

Page 32: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Use the sandbox

Demo

github.com/dwmkerr/terraform-aws-openshift

@dwmkerr

Page 33: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

Don’t forget to share your toys!

…it’ll help you find bugs, get more ideas and build a group to

collaborate with.

Page 34: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

…one more thing…

Page 35: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

Don’t forget to fall madly in love

with Terraform!

Page 36: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

Tip: Make a microservice manifest

…say that fast five times…

Page 37: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Make a microservice manifest

Page 38: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Make a microservice manifest

Page 39: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: The developer’s machine

comes first

@dwmkerr

Page 40: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: The developer’s machine comes first

• Never sacrifice developer experience

• Use docker-compose liberally

• You should be able to deploy to production from anyone’s machine, as long

as they have credentials

@dwmkerr

Page 41: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Co-locate code and

deployment configuration

@dwmkerr

Page 42: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Co-locate microservice code & deployment config

• jenkins / circle / gitlab / whatever

• k8s / openshift / swarm / whatever

• src / test

• README!

@dwmkerr

Page 43: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Co-locate microservice code & deployment config

If I change the logic for my

healthcheck, does my config change?

@dwmkerr

Page 44: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Tip: Love the shell

@dwmkerr

Page 45: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

@dwmkerr

npm install -g tldr

…if I can leave you with one gift

github.com/dwmkerr/effective-shell

Page 46: Monoliths To Microservices - Practical Tips For CI, CD And DevOps in the Microservice World

Thanks!A lot of this stuff is on my blog and GitHub.

@dwmkerr

dwmkerr.com

github.com/dwmkerr

linkedin.com/in/dwmkerr