qcon sao paulo keynote - microservices, an unexpected journey

184
QCON Sao Paulo 2015 MICROSERVICES : AN UNEXPECTED JOURNEY Sam Newman

Upload: sam-newman

Post on 15-Jul-2015

860 views

Category:

Technology


0 download

TRANSCRIPT

Q C O N S a o P a u l o 2 0 1 5

MICROSERVICES : AN UNEXPECTED JOURNEY

Sam Newman

@samnewman

@samnewmanhttps://www.flickr.com/photos/vinothchandar/8053137993

@samnewman

James Lewis @boicy

2010

@samnewman

James Lewis @boicy

2010

@samnewman

James Lewis @boicy

2010

@samnewman

Microapps

2011

@samnewman

Microapps

No hyphen

2011

@samnewman

2012

@samnewman

2012

@samnewman

Microapps

2012

@samnewman

Microapps

2012

@samnewman

Microapps

Microservices

2012

@samnewman

Microapps

Microservices

2012

Still no hyphen

@samnewman

@samnewman

2012

@samnewman

2012

2015

@samnewman

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

2015

@samnewman

https://www.eclipsecon.org/europe2014/session/scaling-and-orchestrating-microservices-osgi

@samnewman

https://www.eclipsecon.org/europe2014/session/scaling-and-orchestrating-microservices-osgi

“The OSGi community has been designing and developing microservices

since 1998”

@samnewman

2010

http://blog.osgi.org/2010/03/services.html

@samnewman

2010

http://blog.osgi.org/2010/03/services.html

“Maybe I should start a JSR to introduce µServices to the Java Standard Edition ...”

@samnewman

http://java.dzone.com/articles/introduction-micro-services-ba

2008

@samnewman

BEA's micro Service Architecture (mSA)

2006

@samnewman

2006

http://www.theregister.co.uk/2006/09/20/bea_soa_modular/

@samnewman

2006

http://www.theregister.co.uk/2006/09/20/bea_soa_modular/

“Hard details of SOA 360 are lacking, but BEA says MSA will use a number of key

protocols and standards including OSGi, SOAP, WSDL, SAML, JSP and JSR-168.”

@samnewman

Service Oriented Architecture

@samnewman

“Netflix embraces Service Oriented Architecture (SOA) composed of many small fine grained

services that do one thing and one thing well.”

http://techblog.netflix.com/2015/02/whats-trending-on-netflix.html

@samnewmanhttps://www.gartner.com/doc/302868?ref=ddisp

1996

@samnewmanhttps://www.gartner.com/doc/302868?ref=ddisp

1996

@samnewman

2000 - Now

@samnewman

https://www.flickr.com/photos/paldies/87571877

1998

@samnewman

Film: 2006

@samnewman

@samnewman

WS-

@samnewman

2003 - Now!

https://www.oasis-open.org/standards

@samnewman

Presentation

Business

Data Access

@samnewman

Presentation

Business

Data Access

@samnewman

Presentation

Business

Data Access

@samnewman

Presentation

Business

Data Access

@samnewman

2006

@samnewman

2006

@samnewman

1980s

RPC

@samnewman

1970s

Doug McIlroy

@samnewman

1970s

Doug McIlroy

‘|’

@samnewman

1970s

Doug McIlroy

‘|’

ls -al | grep ‘sam’

@samnewman

“(i) Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.”

@samnewman

“(i) Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input..”

@samnewman

“(iii) Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.”

@samnewman

1972

@samnewman

1972

“This paper discusses modularisation as a mechanism for improving the flexibility and comprehensibility of a system while allowing

the shortening of its development time"

@samnewman

@samnewman

1972

Module Paper

@samnewman

1972

Module Paper

1970s

UNIX

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

1996

SOA

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

1996

SOA

1998

SOAP

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

1996

SOA

1998

SOAP

2000

REST

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

1996

SOA

1998

SOAP

2006

AWS

2000

REST

@samnewman

1972

Module Paper

1970s

UNIX

1980s

RPC

1996

SOA

1998

SOAP

2006

AWS

2000

REST

2015The Year Of

Microservices!

@samnewman

2015

http://www.javaworld.com/article/2863409/soa/why-2015-will-be-the-year-of-microservices.html

@samnewman

???

2000

REST

1998

SOAP

2006

AWS

2015The Year Of

Microservices!

@samnewmanhttps://www.flickr.com/photos/expressmonorail/3694867130

The Future?

@samnewman

Get ready to photograph slides so everyone can tell Sam in a few

years how wrong he was

@samnewman

DOCKER INTEREST

@samnewman

@samnewman

DOCKER INTEREST

@samnewman

DOCKER INTEREST

Docker!

@samnewman

DOCKER INTEREST

Docker!

Microservices :-(

@samnewman

DOCKER INTEREST

Docker Microservices :-(

@samnewman

DOCKER INTEREST

Docker Microservices :-(

Pirates

@samnewman

THE YEAR OF DOCKER IN THE ENTERPRISE

@samnewman

THE YEAR OF DOCKER IN THE ENTERPRISE 2015

@samnewman

THE YEAR OF DOCKER IN THE ENTERPRISE 2015?

@samnewman

@samnewman

Infrastructure As A Service (IAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

2016+

@samnewman

MESOS

@samnewman

MESOS 2016

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

2016+

@samnewman

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

2016+

@samnewman

DATA GRAVITY

@samnewman

DATA GRAVITY

Service

Machine

@samnewman

DATA GRAVITY

Service

Machine

Data Store

@samnewman

DATA GRAVITY

Service

Machine

Data Store

@samnewman

DATA GRAVITY

Service

Machine

Data Store

@samnewman

Data

Service

ServiceService

Service

@samnewman

Data

ServiceService Service

Service

@samnewman

@samnewman

ACTOR-BASED SYSTEMS?

@samnewman

ACTOR-BASED SYSTEMS?

@samnewman

ACTOR-BASED SYSTEMS?

service discovery

@samnewman

ACTOR-BASED SYSTEMS?

service discovery

load balancing

@samnewman

ACTOR-BASED SYSTEMS?

service discovery

load balancing

auto-scaling

@samnewman

ACTOR-BASED SYSTEMS?

service discovery

load balancing

auto-scaling

comms

@samnewman

ACTOR-BASED SYSTEMS?

service discovery

load balancing

auto-scaling fault tolerance

comms

@samnewman

http://www.reactivemanifesto.org/

@samnewman51

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

2016+

@samnewman51

Infrastructure As A Service (IAAS)

Platform As A Service (PAAS)

Container As A Service (CAAS)

Today

2015 - 2016

2016+

@samnewman

A single-purpose, single-language runtime hosted on a minimal system

Unikernels

@samnewman

53

Machine

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

Xen

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

Xen

App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

Xen

App App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

Xen

App App App

UNIKERNELS V CONTAINERS

@samnewman

53

Machine

Kernel

Operating System

Docker

OS

App

OS

App

OS

App

Machine

Kernel

Xen

App App App

UNIKERNELS V CONTAINERS 2016+

@samnewman

“There’s no future where there’s less servers”

- Luke Kanies

@samnewman

The Data Center

@samnewman

Storage

The Data Center

@samnewman

Storage Compute

The Data Center

@samnewman

Storage Compute Network

The Data Center

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3 Docker / EC2

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3 Docker / EC2

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3 Docker / EC2

VLan, OpenFlow

@samnewman

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3 Docker / EC2

VLan, OpenFlow

SDN

@samnewman

???

Storage Compute Network

The Data Center

Virtualisation Virtualisation

S3 Docker / EC2

VLan, OpenFlow

SDN

@samnewman

@samnewman

$50 million in funding over 5 years

@samnewman

$50 million in funding over 5 years

Bought last year by VMWare for $1.26 billion

@samnewman

http://www.forbes.com/sites/benkepes/2014/08/06/docker-raising-monster-funding-round-because-vmware-disruption/

@samnewman

http://www.forbes.com/sites/benkepes/2014/08/06/docker-raising-monster-funding-round-because-vmware-disruption/

“…at a huge $400 million valuation"

@samnewman

@samnewman

2015!

@samnewman

@samnewman

@samnewman

Perimeter

@samnewman

Perimeter

THE CRISPY OUTER SHELL PATTERN

@samnewmanhttp://commons.wikimedia.org/wiki/File:Beaumaris_plan,_Cadw.jpg

@samnewman

http://commons.wikimedia.org/wiki/File:Beaumaris_aerial.jpg#mediaviewer/File:Beaumaris_aerial.jpg

@samnewman

Kernel

@samnewman

Kernel

@samnewman

Kernel

@samnewman

Kernel

@samnewman

Kernel

Today!

@samnewman

Kernel

OS

@samnewman

Kernel

OS

Machine-level firewalls

@samnewman

Kernel

OS

@samnewman

Kernel

OS

Database

Service

@samnewman

Kernel

OS

Database

Service

Data at transit

@samnewman

Kernel

OS

Database

Service

Data at rest

Data at transit

@samnewman

Service Service

Service

Service Service

Service

@samnewman

Service Service

Service

Service Service

Service

@samnewman

Service Service

Service

Service Service

Service

@samnewman

Service Service

Service

Service Service

ServiceVLANS

SDN

@samnewman

Service Service

Service

Service Service

ServiceVLANS

SDN API Gateways

@samnewman

Service Service

Service

Service Service

ServiceVLANS

SDN API Gateways

@samnewman

Service Service

Service

Service Service

ServiceVLANS

SDN

Repsheet

API Gateways

@samnewman

Service Service

Service

Service Service

ServiceVLANS

SDN

Repsheet

API Gateways

@samnewman

@samnewman

Repsheet

@samnewman

Repsheet

@samnewman

Repsheet

User-centred behavioural security

@samnewman

Repsheet

User-centred behavioural security

2016+

@samnewman

Repsheet

User-centred behavioural security

2016+Now!

@samnewman

Repsheet

User-centred behavioural security

2016+Now!

Or 2017 :-(

@samnewman

Service

@samnewman

Service

Service

@samnewman

Service

Service

Service

@samnewman

Service

Service

Service

Service

@samnewman

Service

Service

Service

Service

@samnewman

Service

Service

Service

FUNCTIONAL REACTIVE GOES MAINSTREAM

Service

@samnewman

Service

Service

Service

FUNCTIONAL REACTIVE GOES MAINSTREAM

Service

2015!

@samnewman

https://github.com/reactive-streams/reactive-streams-io/issues/1

@samnewman

@samnewman

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Sam Newman @samnewman

http://samnewman.io/

THANKS!