haussmann fielding fowler: network-based architects

55
Network Based Architecture Haussmann, Fielding, Fowler HTTP, REST, Microservices Eric Horesnyi Tech2Day 2015 @StreamdataIO #Tech2Day

Upload: streamdataio

Post on 28-Jul-2015

592 views

Category:

Internet


2 download

TRANSCRIPT

Network Based Architecture Haussmann, Fielding, Fowler

HTTP, REST, Microservices

Eric Horesnyi

Tech2Day 2015

@StreamdataIO #Tech2Day

Realtime UX from any API

@StreamdataIO #Tech2Day  

Haussmann & Fielding

1853, Paris 2000, Irvine

@StreamdataIO #Tech2Day  

CHALLENGES IN PARIS IN 1853 Haussmann Fielding and Fowler

@StreamdataIO #Tech2Day  

Dropout

@StreamdataIO

Cholera, 1832 – 19,000 dropout

#Tech2Day  

Congestion

@StreamdataIO

1hab/sq mt density

#Tech2Day  

Slow & Unsecure

@StreamdataIO

Security threats: No inspection possible

obscure streets

No patches to remove viruses and threats

lack of air circulation

Poor latency: slow access lines

narrow streets

No backbone Street  in  Ile  de  La  Cité,  Early  XiXth  

#Tech2Day  

Unstable system

Full reboot 1789, 1815, 1830, 1848…

No backward compatibility

No service desk Restricted vote

DDOS in small access lines

Barricades

@StreamdataIO

Liberty  Leading  the  People,  July  28th,  1830'  by  Delacroix  

#Tech2Day  

INHERITED FEATURES Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

Inherited Properties

@StreamdataIO #Tech2Day  

DNS

.gov, .com and .fr follow same scheme

Seine is .root

Streets start there

Right/even

Left/Uneven

@StreamdataIO

Paris street numbering, 1805

#Tech2Day  

Famous heritage

@StreamdataIO

Napoleon, France 1804 Tim Berners-Lee, CERN 1990

Comment: // limited to ability to establish basic rules. I do not admire Napoleon for anything else.

#Tech2Day  

Separation of concerns

@StreamdataIO

Client Server

#Tech2Day  

Stateless

@StreamdataIO

All clients

are treated equal, no special

treatment, no

segregation

A server cannot treat a client, even if he is root, as part of itself: Affaires

Palais de Justice, Ile de la Cité

#Tech2Day  

Stateless

@StreamdataIO

Client access server via a network call

#Tech2Day  

SELECTION OF PROPERTIES FIELDING // HAUSSMANN REST // PARIS

Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

Mission

@StreamdataIO

Network performance throughput, small

overhead, bandwidth

User-perceived performance latency,

and completion

Network-efficiency avoid using the street too

much. Homeworking (differential data)

Napoleon  III  describing  his  mission  to  Haussmann,  1853    

#Tech2Day  

KPIs Haussmann // Fielding Scalable make it possible for Paris to grow

Simple no need for a city-user manual,

Modifiable ability to evolve in the future through change

Extensible add new neighborhood

Customizable specialize a building without impacting others

Configurable easily modify a building post-deployment

Reusable building can host a bakery then a cremerie

Visible to provide best security and auditability

Portable style should work well in other regions

Reliable susceptible to failure (no single event could stop water, gas or circulation for citizens)

@StreamdataIO #Tech2Day  

P1: Low-Entry Barrier

@StreamdataIO

A  popular  neighborhood  in  Paris  

#Tech2Day  

P2: Extensibility

@StreamdataIO

Streaming  =  Paris  Metro/Subway,  1900    

#Tech2Day  

P3: Distributed Hypermedia

@StreamdataIO #Tech2Day  

P4: Anarchic Scalability

@StreamdataIO

Paris  Metropole  today,  10m+  people  

#Tech2Day  

P6: Independant Deployment

@StreamdataIO

Ile  de  La  Cité  restructured,  embedding  legacy/sacred  Notre  Dame  

#Tech2Day  

WHY HAUSSMANN DECIDED TO MAKE PARIS RESTFUL

Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

REST=LCODC$SS&UI

@StreamdataIO #Tech2Day  

CSS=Client-Server-Stateless

Layer 1: sewage & gas

@StreamdataIO #Tech2Day  

Layer 2: street & boulevards

@StreamdataIO #Tech2Day  

Layer 3: roofs

@StreamdataIO #Tech2Day  

Layered Networks

Within a layer, a component connects to

its neighboor

Between two layers, gateways allow for

interaction

Each layer is autonomous

@StreamdataIO #Tech2Day  

Cache

@StreamdataIO

Le  Bon  Marché,  LeS  Bank  Grand  Magasin/Mall,  server  w/cache    

#Tech2Day  

Cache

@StreamdataIO

Opera,  a  server  with  cache    

#Tech2Day  

Code On Demand

@StreamdataIO

Les  Halles,  seXng  the  tone  for  all  restaurants  in  the  City  

#Tech2Day  

Uniform Interface = Genious

@StreamdataIO

Codified  UI,  by  floor  (header),  with  token/key,  proxy,  cache  

#Tech2Day  

Uniformity = beauty inside

@StreamdataIO

Uniformity  in  APIs  brings  harmony  in  UX  

#Tech2Day  

Uniformity = pattern beauty

@StreamdataIO

Uniformity  brings  fractal  harmony:  s`ll  there  from  a  distance  

#Tech2Day  

HAUSSMANN URBANIST // FOWLER CONTINUOUS DELIVERY & MICROSERVICES

Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

Continuous Delivery

@StreamdataIO

Resilient  Water  Induc`on,  requiring  aqueducts  and  reservoirs  

#Tech2Day  

Microservices

Not too big/high

Autonomous components

Own API

Standard protocol

Scalable @StreamdataIO

Rue  Montorgueil,  Paris  2e  

#Tech2Day  

Continuous Delivery

@StreamdataIO

Aqueduct,  Arcueil   Reservoir,  Arcueil  

#Tech2Day  

Zoning

@StreamdataIO

Quar`er  Panthéon,  a  zone  dedicated  to  Our  Big  Men  

#Tech2Day  

Lead by example

@StreamdataIO

Opera,  an  Hypermedia  API  >  great  UX  >  trac`on  for  API  owners  

#Tech2Day  

Cut Corners

@StreamdataIO

Cut  corners  vs  straight  corners:  a  design  choice    

#Tech2Day  

And  x2  exemplar:  conduct  the  most  difficult  transforma`ons  

Polyglot

@StreamdataIO

XVIII  architecture  encapsulated,  if  API  complies  

#Tech2Day  

SUSTAINABLE SYSTEMS? PARIS 160 YEARS LATER HTTP REST 16 YEARS LATER

Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

UX performance: City of Lights

@StreamdataIO #Tech2Day  

20m  unique  visitors  a  year  

Reproductible

@StreamdataIO

Chicago  aSer  the  Burnham  Plan,  designed  in  1909  

#Tech2Day  

@StreamdataIO

Durable

Courneuve,  1986,  20y  lifespan  Monolith  

#Tech2Day  

Evolvable

@StreamdataIO

Tour  Eiffel  under  construc`on,  evolu`on  built  years  aSer  Haussmann  had  leS  office  

#Tech2Day  

DAYTODAY LIFE IN A RESTFUL CITY

Haussmann Fielding Fowler

@StreamdataIO

Incomplete Protocol: Velib

Leverage reusable assets

Share same layer as existing traffic

But incomplete protocol: collisions, missing RFC

for cars

Rate-limited API, realtime difficult

@StreamdataIO #Tech2Day  

Error Handling in your code

@StreamdataIO

Gare  Montparnasse,  1895  –HTTP  or    REST  does  not  prevent  from  good  error  handling,  contrib  @rit    

HTTP//PARIS DICTIONARY, MAPS & RESSOURCES

Haussmann Fielding Fowler

@StreamdataIO #Tech2Day  

Lost in Translation

Code Civil HTTP

Paris Web

Boulevards Internet Backbone

Streets Access Lines

Street Numbers URI

Light in the streets Authentication

Concierge Proxy

Cellar Cache

Carriage Request/Response

Subway/Metro Streaming

Homeworking Differential update over JSON Patch

Pierre de Carrière JSON

Compagnon du Devoir API Developer

Haussmann Architect

Beaux Arts Apple, Android and JS Developers

Façade API

Haussmann Façade RESTful API

Utilities (gas, water) Cloud/PaaS

Annonces Parisiennes Criteo

Grands Magasins Amazon

Opera Deezer

Theaters Netflix

Prefecture NSA

Bibliotheque Nat. Wiki

Senat W3C

Assemblee Nationale IETF

Louvre Pinterest

Bois de Boulogne MineCraft

Bois de Vincennes Facebook

Bon Marché Ebay

Eiffel Tower Twitter

Latin Quarter Udacity, Coursera MOOCs

Left bank spirit Android

Right bank spirit Apple iPhone

@StreamdataIO #Tech2Day  

To go deeper

Paris Architecture & Urbanism: Musée Carnavalet, Cité Chaillot

Haussmann: Haussmann à Paris : Architecture et urbanisme Seconde moitié du XIXe siècle, Book, 2012

HTTP: Tim Berners-Lee & Team, Cern, 1990

REST: Network-Based Architecture Style, Thesis, Fielding 2000

Continuous Delivery : Farley & Humbl, 2010

Microservices : Microservices in a Nutshell, Fowler & Lewis, Thoughtworks, 2014

Web Corp Organization: How Google Works, Eric Schmidt, 2014

Design & UX : Jonathan Ive, Apple by The New Yorker, 2015

Microservices Building Microservices, Sam Newman, O’Reilly Book, 2015

Code Civil : on github by Steeve

@StreamdataIO #Tech2Day  

To go deeper

UX/API articulation at Netflix : Dan Jacobson blog

API best practices:

Kin Lane APIEvangelist,

Jason Harmon,

ProgrammableWeb,

Mike Amundsen,

Steve Klabnik,

Mark O’Neill,

Runscope inc. Neill & Darrel ,

Guillaume Laforge, and many more

@StreamdataIO #Tech2Day