DigitalOcean: Microservices as the Cloud

Preview:

Citation preview

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

Recommended