Download - DigitalOcean: Microservices as the Cloud
DigitalOcean: Microservices as the Cloud
Phil Calçado @pcalcado
http://philcalcado.com
How this kind of talk usually goes like…
Big Bad Monolith
Big Bad Database
MAGIC
Super Awesome Microservices
All my stuff is W.I.P.
Iteration 1: The UNIX Way
Big Bad Database
Problem: Need more machines and
datacentres, need to scale
Only vertical scaling
Big Bad Database
Big Bad Database
Iteration 2: Building a VPS
Big Bad Database
Customer Tools
Service
Internal Tools
Service
Problem: VPS are so last week, people want the cloud
Cloud brings even more complexity
Big Bad Database
Customer Tools
Service
Internal Tools
Service
Big Bad Database
Customer Tools
Service
Internal Tools
Service
EVERYTHINGSERVICE
EVERYTHINGELSE
SERVICE
ENTERPRISESERVICE
BUS
Iteration 3: Building a Cloud
Building a cloud means more servers, services,
and datacentresi.e. more essential
complexity
Larger services == Larger state-space
Adding stuff here is easier than creating a new service.
Why?
Big Bad Database
Customer Tools
Service
Internal Tools
Service
https://www.flickr.com/photos/photophreak/
Because
chef/puppet/ansible /that-thing-on-hacker-news
can be a pain, but it’s not the fundamental problem
Everything was managed by chef.
Everything was a Pull Request.
Everything needed code review.
Everything was painful.
Everything was slow.
This is when I apply my bias experience
Back to basics
• Rapid provisioning
• Basic monitoring
• Rapid application deployment
http://martinfowler.com/bliki/MicroservicePrerequisites.html
Legacy Services Databases
How often do they change?
Couple times per month
Couple times per year
Couple times per day
Legacy Services Databases
How often do they change?
Chef for now
Chef
Something else
1. Rapid provisioning
you should be able to fire up a new server in a matter of hours
what about 55 seconds?
2. Basic monitoring
detecting technical issues but it's also worth monitoring business issues
3. Rapid application deployment
you need to be able to quickly deploy [services], both to test environments and to production
This is the first step…
…but experience tells me
…and next up
Pre-requisites
BFFs
Programming Language Thunderdome
Adopt GRPC or thrift
Build a services directory
Get bored and go do something else
You should consider being part of this
http://bit.ly/do-back-end-software-engineer
Phil Calçado @pcalcado
http://philcalcado.com