monoliths to microservices - practical tips for ci, cd and devops in the microservice world
TRANSCRIPT
Monoliths to MicroservicesPractical Tips For CI, CD and DevOps in the Microservices world
@dwmkerr
Dave Kerr
Senior Expert, McKinsey & Company
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
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
Tip: Keep pipelines simple.
Build: turn code into artifacts
Deploy: put artifacts somewhere
@dwmkerr
Source
http://www.dwmkerr.com/simple-continuous-integration-for-docker-images/
Tip: Keep pipelines simple... by embracing make.
Step 1: rip out logic from your build system to create primitive
commands
@dwmkerr
Tip: Keep pipelines simple... by embracing make.
Step 2: call primitive commands from your build system
@dwmkerr
Tip: Keep pipelines simple... by embracing make.
Step 3: when things get complicated, put them into ./scripts
@dwmkerr
Tip: Keep pipelines simple... by embracing make.
Demo
github.com/dwmkerr/beautifully-simple-app-ci
@dwmkerr
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!
Tip: Craft Dockerfiles for your projects
Demo
github.com/dwmkerr/docker-dynamodb
@dwmkerr
Tip: Use the sandbox
Code Sample
github.com/dwmkerr/terraform-aws-openshift
@dwmkerr
Tip: Use the sandbox
Demo
github.com/dwmkerr/terraform-aws-openshift
@dwmkerr
@dwmkerr
Don’t forget to share your toys!
…it’ll help you find bugs, get more ideas and build a group to
collaborate with.
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
Tip: Co-locate microservice code & deployment config
• jenkins / circle / gitlab / whatever
• k8s / openshift / swarm / whatever
• src / test
• README!
@dwmkerr
Tip: Co-locate microservice code & deployment config
If I change the logic for my
healthcheck, does my config change?
@dwmkerr
@dwmkerr
npm install -g tldr
…if I can leave you with one gift
github.com/dwmkerr/effective-shell