implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic...

37
implementing microservices Remmelt Pit @remmelt_ [email protected]

Transcript of implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic...

Page 1: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

implementing microservicesRemmelt Pit@[email protected]

Page 2: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 3: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 4: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

since2003

Page 5: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

12,000auctions

Page 6: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 7: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 8: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 9: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 10: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

~2M uniquevisitors/month

Page 11: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

modularsite & admin & API

Page 12: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

trouble!scalability

Page 13: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

trouble!stability

Page 14: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

basicallywe wanted to go faster

Page 15: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 16: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

Rapid ProvisioningBasic MonitoringRapid App DeploysDevOps Culture— Martin Fowler

Page 17: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenge #1getting started

Page 18: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

RTFM

Page 19: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

RTFMWTFM

Page 20: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 21: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 22: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 23: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

acceptance criteria:

API endpoint: GET /highestbid → json

Events: BidAcceptedEvent{ ..., "bid_amount":12.34, ... }

Page 24: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenge #2monolith first?

Page 25: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

distributed monolith— Tareq Abedrabbo

Page 26: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenge #3building things

Page 27: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 28: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

#! /bin/sh

IMAGE=bvaauctions/auction-queryTAG=$(git rev-parse --short HEAD)

docker run --rm \ -v "$PWD":/usr/src/project \ -w /usr/src/project \ -v "$HOME"/.m2:/root/.m2 \ maven:3.3-jdk-8 \ mvn -B clean verify

docker build -t $IMAGE:$TAG .docker push $IMAGE:$TAG

Page 29: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenge #4monitoring

Page 30: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler
Page 31: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenge #5hidden complexity

Page 32: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

ls -l | grep "str" | wc -l

Page 33: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

services with theguts on the outside— Gartner

Page 34: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

tech challenges

1. getting started → start small2. monolith first? → iterate quickly3. building things → automate4. monitoring → aggregate & visualise5. hidden complexity → be aware

Page 35: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

TODO

—chaos monkey—failure modes (simulate slow network)—mesos/coreos/kubernetes?—kpi monitoring—bulkheads, circuit breakers—e2e testing with fake data in

production

Page 36: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler

Q?

Page 37: implementing microservicesgotocon.com/dl/goto-amsterdam-2015/slides/...Rapid Provisioning Basic Monitoring Rapid App Deploys DevOps Culture — Martin Fowler