67
#Architecture201x Stefan Tilkov | innoQ [email protected] @stilkov Thursday 6 February 14

Stefan Tilkov | innoQ [email protected] @stilkov · User Manual Werner Vogels, ... ROCA MVC Web Frameworks ... Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173

Embed Size (px)

Citation preview

#Architecture201xStefan Tilkov | innoQ

[email protected]@stilkov

Thursday 6 February 14

Disclaimer first

Thursday 6 February 14

Let’s start with the enterprise

Thursday 6 February 14

The J2EE(TM) 1.4 Tutorial, http://docs.oracle.com/cd/E17802_01/j2ee/j2ee/1.4/docs/tutorial-update2/doc/Overview7.html

Thursday 6 February 14

GỬI PHẢN HỒI, http://ejbvn.wordpress.com

Thursday 6 February 14

DB

Application

Browser

Thursday 6 February 14

DB

Backend

Frontend

Browser

Thursday 6 February 14

Assumptions to be challengedOne single system

One single environmentPredictable load

Clear & distinct rolesPlanned releases

Built because they have to be

Thursday 6 February 14

Somewhat Limited Agility

Thursday 6 February 14

Increased Desaster Potential

Thursday 6 February 14

Cut Things into Pieces

321

Thursday 6 February 14

Small, lightweight, focused apps

Thursday 6 February 14

My favorite programmer’s story

Thursday 6 February 14

Task: Read a file of text, determine the n most frequently used words, and print out a sorted list of those

words along with their frequencies.

Thursday 6 February 14

Donald Knuth Doug McIlroy

Dr. Drang, http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/

10-page literal Pascal program,

including innovative new data structure

tr  -­‐cs  A-­‐Za-­‐z  '\n'  |tr  A-­‐Z  a-­‐z  |sort  |uniq  -­‐c  |sort  -­‐rn  |sed  ${1}q

Thursday 6 February 14

Small, lightweight, focused apps

Thursday 6 February 14

Simple process run model

Thursday 6 February 14

Back to building servers

Thursday 6 February 14

Closer to the metal

Thursday 6 February 14

http://12factor.net

Thursday 6 February 14

Isolation and independence

Thursday 6 February 14

Polyglotism

Thursday 6 February 14

Built for replacement,not for re-use

Thursday 6 February 14

FAQ

Press Release

Customer Experience

User Manual

Werner Vogels, http://www.allthingsdistributed.com/2006/11/working_backwards.html

Thursday 6 February 14

Dismantled monolith

Backend & front-end services

(Re-Implementation in Node.js)

https://engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/

Thursday 6 February 14

DB

Service

Frontend

Browser

Service Service

Thursday 6 February 14

DB

Service

Frontend

Browser

Service Service

DB DB

Thursday 6 February 14

DB

Service

FE

Browser

Service Service

DB DB

FE FE

Thursday 6 February 14

Organization ⟷ Architecture

Thursday 6 February 14

Kraus, Steinacker, Wegner: Teile und Herrsche – Kleine Systeme für große Architekturen, http://bit.ly/152cXbx

Independent “Verticals”

REST-based macro architecture

Individual micro architecture

Thursday 6 February 14

App

DB

Browser

App App

DB DB

Thursday 6 February 14

Services as DNA

“Dogfooding”

Two-pizza rule

Steve Yegge, https://plus.google.com/110981030061712822816/posts/AaygmbzVeRq

Thursday 6 February 14

Tools

Play

Node.js

Modern Java EE containers

Akka

Embedded Jetty

vert.x 

DropWizard

Netty

Thursday 6 February 14

Thursday 6 February 14

Integrate pieces to form a whole

321

Thursday 6 February 14

Robust systemsUnreliable networks

Thursday 6 February 14

S1

S2 S3

Thursday 6 February 14

Tools

HystrixAkka

Finagle

Thursday 6 February 14

Smart aggregation

Thursday 6 February 14

REST APIs

Client-specific orchestration

Streaming architecture

Thursday 6 February 14

Browser

DB

Service

Frontend

Service Service

DB DB

MobileApp

Thursday 6 February 14

Browser

DB

Service

Frontend

Service Service

DB DB

MobileApp

Orch 1 Orch 2

Thursday 6 February 14

S1

S2 S3

S4 S5 S6

Thursday 6 February 14

Tools

ql.io 

StormRx

Playspray

Thursday 6 February 14

Web-native front-end integration

Thursday 6 February 14

Service Interface Service Interface

Client Logic

Thursday 6 February 14

Service Interface Service Interface

Client Logic

Thursday 6 February 14

Service Interface Service Interface

Client Logic

Thursday 6 February 14

Service Interface Service Interface

Presentation Logic

Orchestration Logic

Thursday 6 February 14

Business Logic Business Logic

Presentation Logic

Thursday 6 February 14

Business Logic Business Logic

Presentation Logic Presentation Logic

Thursday 6 February 14

Simple semantic HTML

Open Data

Single domain – no portal

“Google as the homepage”

Polyglot environment

https://gds.blog.gov.uk/govuk-launch-colophon/

Thursday 6 February 14

Tools & Approaches

RESTful HTTP

ROCA

MVC Web Frameworks

Thursday 6 February 14

Change & run efficiently

321

Thursday 6 February 14

Horizontal scaling

Thursday 6 February 14

Virtualized operating system as container

Thursday 6 February 14

Fully automated, repeatable deployment

Thursday 6 February 14

Transparent monitoring

Thursday 6 February 14

Small changesets

Everyone deploys

Fast deploys

Change flags

Graphs/metrics

Fix fast/roll forward

Ross Snyder, http://www.slideshare.net/beamrider9/continuous-deployment-at-etsy-a-tale-of-two-approaches

Thursday 6 February 14

Fully cloud-based

Self-made PaaS

Simian Army

Adrian Cockcroft, http://www.infoq.com/presentations/Netflix-Architecture

Thursday 6 February 14

Tools

PuppetMetrics

docker

Vagrant 

Chef

logstash

Zipkin

Packer

Thursday 6 February 14

Thursday 6 February 14

Summary

Thursday 6 February 14

Build smaller

Thursday 6 February 14

Aggregate smartly

Thursday 6 February 14

Merge run & change

Thursday 6 February 14

Thank you!Questions?Comments?

Stefan Tilkov, @[email protected]://www.innoq.com/blog/st/Phone: +49 170 471 2625

innoQ Deutschland GmbH

Krischerstr. 10040789 Monheim am RheinGermanyPhone: +49 2173 3366-0

innoQ Schweiz GmbH

Gewerbestr. 11CH-6330 ChamSwitzerlandPhone: +41 41 743 0116www.innoq.com

Ohlauer Straße 4310999 BerlinGermanyPhone: +49 2173 3366-0

Robert-Bosch-Straße 764293 DarmstadtGermanyPhone: +49 2173 3366-0

Radlkoferstraße 2D-81373 MünchenGermanyTelefon +49 (0) 89 741185-270

Thursday 6 February 14