Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala...

86
Fast but Not Loose: Typesafe Clients in a Distributed Service Architecture, a retrospective Eric Bowman VP Architecture @ Gilt Groupe @ebowman [email protected] #gotoaar #gilttech #gotocon Monday, September 30, 13

Transcript of Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala...

Page 1: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Fast but Not Loose:Typesafe Clients in a

Distributed Service Architecture, a retrospective

Eric BowmanVP Architecture @ Gilt Groupe

@[email protected]

#gotoaar #gilttech#gotocon

Monday, September 30, 13

Page 2: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 3: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 4: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•Scala

•Play

•PostgreSQL

•MongoDB

•Voldemort

•Kafka

•Aster Data

•Mahout

•Jersey

•SBT

•Docker

•Continuous Delivery

Microservices

Monday, September 30, 13

Page 8: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://upload.wikimedia.org/wikipedia/commons/7/79/Operation_Upshot-Knothole_-_Badger_001.jpg

Monday, September 30, 13

Page 9: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 10: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 11: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 12: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 13: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 14: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 15: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 16: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://blog.verwilst.be/wp-content/uploads/2008/12/java.gif

Monday, September 30, 13

Page 17: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

user_service order_service payment_service product_service cart_service

swift

pagegen

Monday, September 30, 13

Page 18: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://megmurph.com/wp-content/uploads/2013/03/success-1.jpg

Monday, September 30, 13

Page 19: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front End

Service X

Service Y

Service Z

Monday, September 30, 13

Page 20: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front End

Service X

Service Y

Service Z

Monday, September 30, 13

Page 21: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front End

Service X

Service Y

Service Z

Content from Service X

Content from Service Y

Content from Z

Monday, September 30, 13

Page 22: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front-End Tier

Service Tier

Data Tier

Monday, September 30, 13

Page 23: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front-End Tier

Service Tier

Data Tier

CachingLight Computation

Orchestration

Monday, September 30, 13

Page 24: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front-End Tier

Service Tier

Data Tier

CachingLight Computation

Orchestration

CachingHeavier Computation

Separation of Concerns

Monday, September 30, 13

Page 25: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Front-End Tier

Service Tier

Data Tier

CachingLight Computation

Orchestration

CachingHeavier Computation

Separation of Concerns

Data Access(Disk/SSD/RAM)

Monday, September 30, 13

Page 26: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•Runtime Temperature•Development Temperature

Front-End Tier

Service Tier

Data Tier

CachingLight Computation

Orchestration

CachingHeavier Computation

Separation of Concerns

Data Access(Disk/SSD/RAM)

Monday, September 30, 13

Page 27: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Data Source

Service

JDBC ➾ HashMap ➾ JSON

http://gilt.com

Javascript Application

Front End

JSON ➾ HashMap ➾ JSON

Monday, September 30, 13

Page 28: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Chaos Grows Quickly

Data Source

Service

JDBC ➾ HashMap ➾ JSON

http://gilt.com

Javascript Application

Front End

JSON ➾ HashMap ➾ JSON

Monday, September 30, 13

Page 29: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://gilt.com

Javascript Application

Front End

JSON ➾ HashMap ➾ JSON

JSON ➾ HashMap ➾ JSON

JSON ➾ HashMap ➾ JSON

Service

JDBC ➾ HashMap ➾ JSONData Source

Service

JDBC ➾ HashMap ➾ JSONData Source

Service

JDBC ➾ HashMap ➾ JSONData Source

Monday, September 30, 13

Page 30: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://gilt.com

Javascript Application

Front End

JSON ➾ HashMap ➾ JSON

JSON ➾ HashMap ➾ JSON

JSON ➾ HashMap ➾ JSON

Service

JDBC ➾ HashMap ➾ JSONData Source

Service

JDBC ➾ HashMap ➾ JSONData Source

Service

JDBC ➾ HashMap ➾ JSONData Source

Service

JSON ➾ HashMap ➾ JSON

JSON ➾ HashMap ➾ JSON

Monday, September 30, 13

Page 31: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://www.recruitmenttakeout.com/wp-content/uploads/2013/04/brian.png

Monday, September 30, 13

Page 32: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•Fast

•Service Decomposition

•Implicit core model was good

Monday, September 30, 13

Page 33: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•Org Scaling

•APIs

•Implicit core model was ... implicit

Monday, September 30, 13

Page 34: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

A data model and APIs for services

Monday, September 30, 13

Page 35: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

A data model and APIs for services

(aka, RPC)

Monday, September 30, 13

Page 36: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png

core service

core service

core service

core service

Legacy

Monday, September 30, 13

Page 37: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png

core service

core service

core service

core service

Legacy

commons.jar

core clients

core data model

async client framework

Greenfield

Monday, September 30, 13

Page 38: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://git-scm.com/images/logos/downloads/Git-Logo-2Color.png

core service

core service

core service

core service

Legacy

commons.jar

core clients

core data model

async client framework

Greenfield

•Users•Sales•Products•Skus•Assets•Targeting•Auth

Monday, September 30, 13

Page 39: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

service

client

core

Monday, September 30, 13

Page 40: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

service

client

core

•RESTful•Scala clients•All APIs futures-based•Case class schema

Monday, September 30, 13

Page 41: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

service

client

core

client

core

service

Compile/RuntimeDependency

Monday, September 30, 13

Page 42: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

ConsumerServiceClient

Core Core

“Embassy Soil”

Monday, September 30, 13

Page 43: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

ConsumerServiceClient

Core Core

•Easy functional testing•Service response capture•Test linking•Upgradable•Emergent Regression•Automated upgrades•Compile farmers

Monday, September 30, 13

Page 44: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

ConsumerServiceClient

Core Core

Monday, September 30, 13

Page 45: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•Environment ⊕ Config•Live updates•Indirection•Circuit Breaker

ConsumerServiceClient

Core Core

Monday, September 30, 13

Page 46: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 47: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

“All of this is completely wrong.”*

*Not an actual quoteMonday, September 30, 13

Page 48: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

1.The network is reliable2.Latency is zero3.Bandwidth is infinite4.The network is secure5.Topology doesn't change6.There is one administrator7.Transport cost is zero8.The network is homogeneous

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 49: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

1.The network is reliable

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 50: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

1.The network is reliable

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 51: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

2.Latency is zero

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 52: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

2.Latency is zero

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 53: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

3.Bandwidth is infinite

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 54: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

3.Bandwidth is infinite

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 55: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

4.The network is secure

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 56: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

4.The network is secure

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 57: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

5.Topology doesn't change

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 58: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

5.Topology doesn't change

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 59: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

6.There is one administrator

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 60: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

6.There is one administrator

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 61: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

7.Transport cost is zero

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 62: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

7.Transport cost is zero

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 63: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

8.The network is homogeneous

https://blogs.oracle.com/jag/resource/Fallacies.html

Monday, September 30, 13

Page 64: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

8.The network is homogeneous

https://blogs.oracle.com/jag/resource/Fallacies.html

Resolved

Monday, September 30, 13

Page 65: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

“Still Wrong.”*

*Possibly an actual quoteMonday, September 30, 13

Page 66: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Convenience Over Correctness

http://steve.vinoski.net/blog/2008/07/01/convenience-over-correctness/Monday, September 30, 13

Page 67: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Database

Database Model

Service Backend

Service Model

Service Frontend

Client/Server Serialization Model

Client Backend

Client Data Model

Client Layer

Public Data Model

Monday, September 30, 13

Page 68: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Database

Database Model

Service Backend

Service Model

Service Frontend

Client/Server Serialization Model

Client Backend

Client Data Model

Client Layer

Public Data Model

•So many models•Corners are cut•Typesafe helps•Conflation?•Just the data

Monday, September 30, 13

Page 69: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

“Works in Practice for some use cases”

Database

Database Model

Service Backend

Service Model

Service Frontend

Client/Server Serialization Model

Client Backend

Client Data Model

Client Layer

Public Data Model

•So many models•Corners are cut•Typesafe helps•Conflation?•Just the data

Monday, September 30, 13

Page 70: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

“Works in Practice for some use cases”“No free silver bullet lunches.”

Database

Database Model

Service Backend

Service Model

Service Frontend

Client/Server Serialization Model

Client Backend

Client Data Model

Client Layer

Public Data Model

•So many models•Corners are cut•Typesafe helps•Conflation?•Just the data

Monday, September 30, 13

Page 71: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

However...

Monday, September 30, 13

Page 72: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

•No machine generated stubs•Embassy-Oriented Programming•Lots of indirection•Type-system support for failures

However...

Monday, September 30, 13

Page 73: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

What Actually Sucks about RPC:

Monday, September 30, 13

Page 74: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

What Actually Sucks about RPC:•Remote objects •Failures•Idempotency

Monday, September 30, 13

Page 75: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Ignoring all that was Too Easy.

Monday, September 30, 13

Page 76: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Monday, September 30, 13

Page 77: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Batch Jobs

Monday, September 30, 13

Page 78: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

1.The network is reliable2.Latency is zero3.Bandwidth is infinite4.The network is secure5.Topology doesn't change6.There is one administrator7.Transport cost is zero8.The network is homogeneous

Monday, September 30, 13

Page 79: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Law of Instrument

Monday, September 30, 13

Page 80: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Pulling data.

Monday, September 30, 13

Page 81: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Pushing code.

Monday, September 30, 13

Page 82: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

SOA, Reloaded

Monday, September 30, 13

Page 83: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

SOA, Reloaded•CRUD•Event Streams•Batch Processing•Lambda Architecture•CQRS

Monday, September 30, 13

Page 84: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Client

Service

DB

Monday, September 30, 13

Page 85: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

Client

Fast Storage

Service

Kafka

Data Warehouse

Batch Jobs

DB

CEP

Clickstream data

Monday, September 30, 13

Page 86: Fast but Not Loosejaoo.dk/dl/goto-aar-2013/slides/EricBowman_FastButNotLooseTypesafe... · •Scala •Play •PostgreSQL •MongoDB •Voldemort •Kafka •Aster Data •Mahout

http://tech.gilt.com

join us.new york & dublin

Monday, September 30, 13