UXD Exchange
Powered by Red Badger
Meet Microplatforms.By Stu Harris@StuartHarris
Wifi: Red Badgerp/w: RedBadger2014
@redbadgerteam
Privileged & confidential
Hello. We are Red Badger
We bring together the best in strategic services, user experience and technical delivery using Lean and Agile processes.Founded in 2010 by Stuart, Cain and David, we help large organisations improve their speed to market whilst focusing on delivering value to their users and customers. We work with our clients to understand their problems and validate ideas in order to deliver improved process efficiencies, strategic enhancements and new digital products and services (or make significant improvements to existing ones).
Over the last 7 years we’ve built an incredible team of over 100 really talented individuals.
8
The “mmmm!” Stack
Deploy a Microservices application as though it was a Monolith, from a
Monorepo to a Microplatform...
Monorepo
Web
Gat
eway
Exp
erie
nce
AP
I
Pro
cess
AP
I 1
Pro
cess
AP
I 2
Sys
tem
AP
I 1
Sys
tem
AP
I 2
Sys
tem
AP
I 3
Time
db77f39
986b8b6
CI -> CD -> CDP -> Kaizen
The fastest sustainable way to deliver value into the hands of the customers.
Lowest RiskHighest Quality
Lowest CostHighest VelocityHappiest teams
Enterprise architecture -> Evolutionary architectureCultureSeparate concepts of deploy (tech decision) and release (business decision)Feature flagsHumans think, computers do
Smallest possible MTTRError budgets (1 - SLO), Google SRE
Everything as code
● Application as code● Tests as code● Pipeline as code
○ Jenkinsfile○ circle.yml
● Immutable infrastructure as code○ Terraform
● Containers as code○ Dockerfile
● Service orchestration as code○ compose-file.yml
Everything as code
● All possible changes are code changes● Humans are not allowed in● Auditable, helps with governance● Enables evolution (knowledge is
captured and built on)
1. Webhook triggers on push to [Github Enterprise]. [Jenkins] pulls and starts build.2. [Nexus 3/IQ] holds scanned and approved base images (Docker) and dependencies (NPM, Maven, etc).3. Docker build with no Internet access. Unit tests and code quality as part of build. Images tagged with commit SHA.4. Private registry for untested images. Disposable and used only to deploy for testing.5. Pull by tag (SHA). Resolve to content hash (for idempotency). Deploy one instance (of full application) per open PR.6. Static analysis. Code quality. Integration tests. BDD-style automated functional tests. Manual testing.7. [Nexus 3] holds tested images (release candidates), tagged with commit SHA.8. Deploy includes resolve by content hash. Smoke tests (golden path synthetics) in each environment (UAT to Prod). User testing.9. Zero downtime rolling deploy. Canary releases. Blue/green with ramp-up.
Github Enterprise
Private registry
Nexus 3
PRMicroplatform
UATMicroplatform
Pul
l
Build + Unit Tests
Pus
h
Dep
loy
Test
Pus
h
Dep
loy
Smoke Test
ProductionMicroplatform
Dep
loy
Smoke Test
JenkinsMicroplatform
Nexus 3 + IQ
Get
Confidence
1 2
3
4
5
7
86
All branches Master branch only
9
Sha
red
serv
ices
Jenk
ins
pipe
line
Pla
tform
s
> cat ~/.ssh/configHost bastion Hostname 52.50.162.185 User admin IdentityFile ~/.ssh/id_rsaHost mgrA Hostname 10.0.31.253 User core ProxyCommand ssh bastion -W %h:%p
> nohup ssh -nNT -L /tmp/docker.sock:/var/run/docker.sock mgrA &
> export DOCKER_HOST=unix:///tmp/docker.sock
> docker node ls
Tunnel to remote Docker server