Vortragsfolien

Transcrição

Vortragsfolien
09.12.15
Stefan Toth, Stefan Zörner |
embarc GmbH
Ganz großes Kino?
Die Netflix-Architektur kennen und (ein)schätzen lernen.
Ganz großes Kino?
Die Netflix-Architektur kennen und
(ein)schätzen lernen.
Der Streaming-Dienst Netflix zählt mit seiner Architektur zu den
Vorreitern der Branche. Viele seiner Lösungen teilt er freimütig mit
der Community. Da klingt es verlockend sich Rosinen raus zu picken.
Aber ist das überhaupt möglich?
In diesem Workshop geben wir einen Überblick über technische und
organisatorische Facetten der Netflix-Architektur. Zur Sprache
kommen Arbeitsweise und Technologie-Stack sowie
Zusammenhänge zwischen Aspekten dieser Bereiche. Wir
ermöglichen den Teilnehmern zu reflektieren, wo dieses
Erfolgsmodell auf die eigene Situation (etwa das eigene
Unternehmen) übertragbar ist, und wo der geschenkte Gaul vielleicht
mehr Mist hinterlässt als Ihnen lieb ist.
Ganz großes Kino?
embarc.de
2
1
09.12.15
Stefan Toth
[email protected]
@st_toth
xing.to/sto
www.embarc.de
www.swamuster.de
Ganz großes Kino?
embarc.de
3
Stefan Zörner
n 
n 
Softwareentwickler + -architekt bei embarc in Hamburg
Vorher oose, IBM, Mummert + Partner, Bayer AG, …
Schwerpunkte:
n  Softwarearchitektur (Entwurf,
Bewertung, Dokumentation)
n  Java Technologien
[email protected]
@StefanZoerner
xing.to/szr
Ganz großes Kino?
embarc.de
4
2
09.12.15
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
4 Im eigenen Kontext
5 Fazit und weitere Informationen
Ganz großes Kino?
embarc.de
5
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
4 Im eigenen Kontext
5 Fazit und weitere Informationen
Ganz großes Kino?
embarc.de
6
3
09.12.15
Ganz großes Kino?
embarc.de
7
Was ist Netflix?
“Netflix is the world’s leading Internet television network with over 69
million members in over 60 countries enjoying more than 100 million
hours of TV shows and movies per day, including original series,
documentaries and feature films. Members can watch as much as
they want, anytime, anywhere, on nearly any Internet-connected
screen. Members can play, pause and resume watching, all without
commercials or commitments.”
è http://ir.netflix.com
Ganz großes Kino?
embarc.de
8
4
09.12.15
‚Netflix is the king of online streaming, using more
global bandwidth than cat videos and piracy combined.‘
Ganz großes Kino?
embarc.de
9
Warum ist es interessant?
 
 
Weil die Netflix
Architekturkonzepte „trendig“ sind
•  Cloud
•  Microservices
•  Reactive Extensions
•  NoSQL Datenbanken
•  ...
Weil sich viele fragen: Passt das auch zu uns?
Ganz großes Kino?
embarc.de
10
5
09.12.15
Netflix – Wie groß ist ‘groß’?
 
600+ Services und Applikationen
 
Milliarden Requests am Tag
 
> 2 Milliarden Stunden Filme und Serien
 
 
 
Ganz großes Kino?
10.000e Ec2 Instanzen in mehreren AWS
Regionen/Zonen
Cassandra NoSQL DB in einem
Regionen-übergreifenden, globalen Ring
mit Terabytes an Daten
Zu Spitzenzeiten 1/3 der InternetBandbreite in den USA (Downstream)
embarc.de
11
Netflix Architekturüberblick I
Ganz großes Kino?
embarc.de
12
6
09.12.15
Netflix Architekturüberblick II
Ganz großes Kino?
13
embarc.de
Was sind Microservices?
“In short, the microservice architectural style is an
approach to developing a single application as a suite of
small services, each running in its own process and
communicating with lightweight mechanisms, often an
HTTP resource API.”
(James Lewis, Martin Fowler)
Charakteristische Eigenschaften
  Zerlegung in relativ kleine (fachliche) Services
  Services sehr lose gekoppelt
  Services einzeln installierbar und upgradebar
  Dezentrale Datenhaltung
  Hoher Freiheitsgrad bei Technologieauswahl
Ganz großes Kino?
embarc.de
14
7
09.12.15
Im Prinzip…
Schichten
Ganz großes Kino?
Vertikalen
embarc.de
15
Microservices eingeordnet …
Ganz großes Kino?
embarc.de
16
8
09.12.15
Microservices bei Netflix
Funktionalität
  Netflix-System besteht aus 600+ Services
  Beispiele für Services („Applications“)
•  Registrierung (Sign-up)
•  Suche (Search)
•  Empfehlungen (Recommendation)
•  Bewertungen (Ratings)
•  Leihhistorie (Rental History)
•  ...
Ganz großes Kino?
embarc.de
17
Beispiel für eine Service-Trennung
Ganz großes Kino?
embarc.de
18
9
09.12.15
Verwendete Technologien
Plattformen
Apache HTTP Server
Apache Tomcat
Bottle (Python)
...
Programmiersprachen
Java
Groovy
Scala
Python
JavaScript
Clojure
Dart
Ruby
C++
...
Ganz großes Kino?
Persistenz
Cassandra
RDBMS (MySQL)
in-memory caches
Amazon S3
CDN
...
embarc.de
19
Konsequenzen für Netflix
➜  Neue Technologien sind leicht ausprobiert
➜  Technologie-Stack kann nach und nach modernisiert werden
(keine langfristige Binding)
➜  Fehler in einem Service haben wenig Einfluss auf andere
Services (Resilience-Grundlage)
➜  Gute Time-to-Market für neue Funktionalität
Herausforderungen
  Die Gesamtmenge der verwendeten Technologien
ist sehr heterogen
  Abstimmung / Koordination schwierig
  Jedes Service-Team muss Know-How für
eigentlich querschnittliche Themen haben
Ganz großes Kino?
embarc.de
20
10
09.12.15
Deployment bei Netflix
Antwort auf Koordinationsproblem bei Deployments?
Antwort auf Komplexität bei Teamabhängigkeiten?
Unterstützte Anarchie
 
 
 
 
 
ca. 100 Deployments pro Tag
Teams arbeiten selbstverantwortlich und unabhängig
Keine Qualitätssicherungsabteilung
Keine Release Engineers
Keine Gesamtkoordination von Releases / Deployments
Ganz großes Kino?
embarc.de
21
Komplette Automatisierung ...
Ganz großes Kino?
embarc.de
22
11
09.12.15
Konsequenzen für Netflix
 
 
 
Schnelles Rollback (bzw. Fallback)
Billige Tests in Produktionsumgebung statt teurer
Testumgebung (die schwer realistisch zu gestalten ist)
Toolkette abstrahiert und entkoppelt Entwickler von zentralen
Einstellungen und Konfigurationen
Herausforderungen
  Mehrfache Hardware erforderlich
  Koordinationsprobleme auf First-come-first-serve
heruntergebrochen
  Hohe Grad an Werkzeugunterstützung und
Automatisierung notwendig
  Hohe Anforderungen an Logging und Monitoring
Ganz großes Kino?
embarc.de
23
Netflix Cloud Stack
The Netflix Open Source Platform Components fill gaps in Amazon Web
Services. The goal is to make cloud infrastructure more robust, flexible and
glitch free.
Ganz großes Kino?
embarc.de
24
12
09.12.15
Netflix Open Source Services
Ganz großes Kino?
embarc.de
25
Netflix OSS eingeordnet …
Ganz großes Kino?
embarc.de
26
13
09.12.15
Konsequenzen für Netflix
➜  Anforderungen an Entwickler sinken
➜  Architektur-Prinzipien werden unterstützt (Serviceaufbau,
Kommunikation, Verwendung von 3rd Party etc.)
➜  „Open-sourcing“ von Projekten fördert:
  Ein Mindestmaß an Dokumentation (Wiki, Techblog)
  Sauberes Design
  Bild als interessanter Arbeitgeber
Herausforderungen
  Netflix-Spezifika in Entwicklung recht prominent
  Neues Projekt auf dieser Basis hat Overhead
Ganz großes Kino?
embarc.de
27
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
2
Ganz großes Kino?
4 Im eigenen Kontext
5 Fazit und weitere Informationen
embarc.de
28
14
09.12.15
Netflix Open Source Services
➔  https://github.com/netflix
Ganz großes Kino?
29
embarc.de
Alle Projekte bei Netflix OSS
(Programmiersprachen: Java, JavaScript, Python)
Ganz großes Kino?
embarc.de
30
15
09.12.15
Mission Statement
In einem Beispiel kurz aufzeigen:
  Wie sich einzelne wichtige Technologien
“anfühlen”,
  was sie leisten,
  wie ein Technologiestack zum eigenen
Start aussehen könnte,
  Wie es weitergehen kann …
➔  https://github.com/embarced/mss2015beispiel
Ganz großes Kino?
embarc.de
31
Fachliche Inspiration
Homepage des Summit, Idee: kleinen Ausschnitt mit Services abbilden
➔  http://microservices-summit.de
Ganz großes Kino?
embarc.de
32
16
09.12.15
Überblick
Services
Ganz großes Kino?
embarc.de
33
Spring Boot
➔  http://projects.spring.io/spring-boot/
Ganz großes Kino?
opinionated view of
Spring Boot takes an
tions.
ready Spring applica
building productionnvention over
Spring Boot favors co
up
designed to get you
configuration and is
ssible.
ing as quickly as po
and runnembarc.de
34
17
09.12.15
„Hello World“ mit Spring (+ Groovy) ...
➔  https://twitter.com/rob_winch
Ganz großes Kino?
embarc.de
35
... in Java (mit Spring Boot).
package hello;
import
import
import
import
org.springframework.boot.*;
org.springframework.boot.autoconfigure.*;
org.springframework.stereotype.*;
org.springframework.web.bind.annotation.*;
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
public String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
Ganz großes Kino?
embarc.de
36
18
09.12.15
1. Service: Trainer
Ganz großes Kino?
embarc.de
37
@RestController
package de.embarc.msssc.trainer;
import …
@RestController
public class TrainerService {
@Autowired
TrainerBackend backend;
@RequestMapping("/alleTrainer")
public List<TrainerInfo> alleTrainer() {
return backend.alleTrainer();
}
@RequestMapping("/trainer/{id}")
public TrainerDetails trainerDetails(@PathVariable String id) {
TrainerDetails result = backend.trainerDetails(id);
if (result == null) {
throw new ResourceNotFoundException();
}
return result;
}
@ResponseStatus(value = HttpStatus.NOT_FOUND)
class ResourceNotFoundException extends RuntimeException {
}
}
Ganz großes Kino?
embarc.de
38
19
09.12.15
Domänen-Modell
Ganz großes Kino?
embarc.de
39
Start der Spring Boot Applikation
 
 
Service starten mit „gradlew bootRun“
Default Serverport: 8080
Ganz großes Kino?
embarc.de
40
20
09.12.15
Zugriff mit curl (1)
stefans-mbp:~ stefanz $ curl localhost:8080/alleTrainer
[{"id":"ah","name":"Alexander
Heusingfeld","email":"[email protected]"},
{"id":"tf","name":"Thilo Frotscher","email":"[email protected]"},
{"id":"cl","name":"Dr. Carola
Lilienthal","email":"[email protected]"},{"id":"al","name":"Arne
Limburg","email":null},{"id":"pr","name":"Peter
Roßbach","email":"[email protected]"},{"id":"lr","name":"Lars
Röwekamp","email":"[email protected]"},
{"id":"pt","name":"Philipp Tarasiewicz","email":null},
{"id":"st","name":"Stefan Toth","email":"[email protected]"},
{"id":"mv","name":"Michael Vitz","email":"[email protected]"},
{"id":"ew","name":"Eberhard Wolff","email":"[email protected]"},
{"id":"sz","name":"Stefan Zörner","email":"[email protected]"}]
stefans-mbp:~ stefanz $
Ganz großes Kino?
embarc.de
41
Zugriff mit curl (2)
stefans-mbp:~ stefanz $ curl localhost:8080/trainer/st
{"id":"st","name":"Stefan
Toth","email":"[email protected]","vorname":"Stefan","nachname":"Toth",
"firma":"embarc","homepage":"http://www.embarc.de/stefantoth/","twitter":"st_toth","beschreibung":"Stefan Toth arbeitet als
Entwickler, Softwarearchitekt und Berater bei der embarc GmbH. Seine
Schwerpunkte liegen in der Konzeption und der Bewertung mittlerer bis
großer Softwarelösungen sowie der Verbindung dieser Themen zu agilen
Vorgehen. Er ist Autor zahlreicher Artikel und des Buchs Vorgehensmuster
für Softwarearchitektur.","info":{"id":"st","name":"Stefan
Toth","email":"[email protected]"}}
stefans-mbp:~ stefanz $
Ganz großes Kino?
embarc.de
42
21
09.12.15
Zugriff mit Browser
Ganz großes Kino?
embarc.de
43
Java Client mit Netflix Feign
➔  https://github.com/Netflix/feign
Ganz großes Kino?
r…
java http clients easie
g
itin
wr
es
ak
m
n
ig
Fe
is
t your code to http ap
Feign aims to connec
ad and code. Via
with minimal overhe
rs and error handling,
customizable decode
ed
write to any text-bas
you should be able to
44
http api.embarc.de
22
09.12.15
to feign = … ?
Ganz großes Kino?
45
embarc.de
FeignClient
TrainerClient
Ganz großes Kino?
embarc.de
46
23
09.12.15
FeignClient (1/2)
package de.embarc.msssc.trainer.client;
import feign.Feign;
import feign.Logger;
...
import java.util.List;
public class FeignClient {
public interface TrainerClient {
@RequestLine("GET /alleTrainer/")
List<Trainer> getAll();
@RequestLine("GET /trainer/{id}")
Trainer getTrainerById(@Param("id") String id);
}
public static class Trainer {
String id;
String name;
public String toString() {
return id + " (" + name + ")";
}
}
...
Ganz großes Kino?
embarc.de
47
FeignClient (2/2)
....
public static void main(String... args) {
Decoder decoder = new GsonDecoder();
TrainerClient client = Feign.builder()
.decoder(decoder)
.logger(new Logger.ErrorLogger())
.logLevel(Logger.Level.BASIC)
.target(TrainerClient.class, "http://localhost:8080");
List<Trainer> trainers = client.getAll();
System.out.println(trainers);
Trainer first = client.getTrainerById(trainers.get(0).id);
System.out.println(first);
}
}
Ganz großes Kino?
embarc.de
48
24
09.12.15
Spring Cloud Netflix
➔  http://cloud.spring.io/spring-cloud-netflix/
Ganz großes Kino?
provides Netflix OSS
Spring Cloud Netflix
g Boot apps through
integrations for Sprin
g
d binding to the Sprin
autoconfiguration an
g
in
r Spring programm
he
ot
d
an
t
en
m
on
vir
En
model idioms.
ly
tations you can quick
no
an
e
pl
sim
w
fe
a
With
rns
e the common patte
enable and configur
n and build large
inside your applicatio
tflix
with battle-tested Ne
s
em
st
sy
ed
ut
rib
st
di
embarc.de
49
nts …
compone
Service Registry: Eureka
➔  https://github.com/Netflix/eureka
Ganz großes Kino?
load
for resilient mid-tier
ry
st
gi
re
ice
rv
Se
S
AW
r … Eureka is a REST
balancing and failove
ate Transfer) based
(Representational St
cloud
ily used in the AWS
service that is primar
ad
for the purpose of lo
for locating services
s.
r of middle-tier server 50
ve
ilo
fa
d
an
embarc.de
g
in
nc
la
ba
25
09.12.15
Eureka mit Spring Boot
package de.embarc.msssc.serviceregistry;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
server:
port: ${PORT:8761}
application.yml
eureka:
client:
registerWithEureka: false
fetchRegistry: false
Ganz großes Kino?
embarc.de
51
Ganz großes Kino?
embarc.de
52
26
09.12.15
Trainer-Service in Eureka
package de.embarc.msssc.trainer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
...
dependencies {
build.gradle
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.cloud:spring-cloud-starter-eureka'
runtime 'org.springframework.boot:spring-boot-starter-actuator'
testCompile 'junit:junit'
}
...
Ganz großes Kino?
embarc.de
53
Ganz großes Kino?
embarc.de
54
27
09.12.15
Webseite
Ganz großes Kino?
embarc.de
55
Ganz großes Kino?
embarc.de
56
28
09.12.15
Spring Boot Applikation
package de.embarc.msssc.webseite;
import
import
import
import
org.springframework.boot.SpringApplication;
org.springframework.boot.autoconfigure.SpringBootApplication;
org.springframework.cloud.client.discovery.EnableDiscoveryClient;
org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
...
dependencies {
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
compile 'org.springframework.cloud:spring-cloud-starter-eureka'
compile 'org.springframework.cloud:spring-cloud-starter-feign'
runtime 'org.springframework.boot:spring-boot-starter-actuator'
}
...
Ganz großes Kino?
embarc.de
build.gradle
57
TrainerClient (Feign)
package de.embarc.msssc.webseite.clients;
import
import
import
import
org.springframework.cloud.netflix.feign.FeignClient;
org.springframework.web.bind.annotation.PathVariable;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
@FeignClient("trainer")
public interface TrainerClient {
@RequestMapping(method = RequestMethod.GET, value = "/trainer/{id}")
public Trainer getTrainerById(@PathVariable("id") String id);
@RequestMapping(method = RequestMethod.GET, value = "/alleTrainer/")
public List<Trainer> getAll();
}
Ganz großes Kino?
embarc.de
58
29
09.12.15
HomeController mit Feign-Client
package de.embarc.msssc.webseite.controller;
import de.embarc.msssc.webseite.clients.Trainer;
import de.embarc.msssc.webseite.clients.TrainerClient;
import
import
import
import
import
org.springframework.beans.factory.annotation.Autowired;
org.springframework.stereotype.Controller;
org.springframework.ui.ModelMap;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
@Controller
public class HomeController {
@Autowired
private TrainerClient trainerClient;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(ModelMap model) {
List<Trainer> trainers = trainerClient.getAll();
model.addAttribute("allTrainers", trainers);
return "home";
}
}
Ganz großes Kino?
embarc.de
59
home.html, Thymeleaf-Template
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Willkommen</title>
<link rel="stylesheet" href="/style.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
...
<img src="images/mss_logo.png"/>
<h1>Willkommen beim Microservices Summit</h1>
...
<h2>Ihre Trainer</h2>
<ul>
<li th:each="trainer : ${allTrainers}">
<a th:href="'detail_'+${trainer.id}+'.html'"
th:text="${trainer.name}">Max Mustermann</a>
</li>
</ul>
...
</body>
</html>
Ganz großes Kino?
embarc.de
60
30
09.12.15
Ganz großes Kino?
embarc.de
61
DetailController mit Feign-Client
package de.embarc.msssc.webseite.controller;
import de.embarc.msssc.webseite.clients.Trainer;
import de.embarc.msssc.webseite.clients.TrainerClient;
import
import
import
import
import
import
org.springframework.beans.factory.annotation.Autowired;
org.springframework.stereotype.Controller;
org.springframework.ui.ModelMap;
org.springframework.web.bind.annotation.PathVariable;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class DetailController {
@Autowired
private TrainerClient trainerClient;
@RequestMapping(value = "/detail_{id}.html", method = RequestMethod.GET)
public String detail(@PathVariable String id, ModelMap model) {
Trainer trainer = trainerClient.getTrainerById(id);
model.addAttribute("trainer", trainer);
return "detail";
}
}
Ganz großes Kino?
embarc.de
62
31
09.12.15
Ganz großes Kino?
embarc.de
63
Fehlertoleranz: Hystrix
➔  https://github.com/Netflix/Hystrix
Ganz großes Kino?
ry
d fault tolerance libra
an
y
nc
te
la
a
is
rix
st
Hy
ote
ints of access to rem
designed to isolate po
op
3rd party libraries, st
d
an
s
ice
rv
se
s,
em
syst
d enable resilience in
cascading failure an
re is
systems where failu
complex distributed
64
e.
inevitablembarc.de
32
09.12.15
Spring Boot Applikation
package de.embarc.msssc.webseite;
import
import
import
import
import
org.springframework.boot.SpringApplication;
org.springframework.boot.autoconfigure.SpringBootApplication;
org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
org.springframework.cloud.client.discovery.EnableDiscoveryClient;
org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
...
dependencies {
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
compile 'org.springframework.cloud:spring-cloud-starter-eureka'
compile 'org.springframework.cloud:spring-cloud-starter-hystrix‘
compile 'org.springframework.cloud:spring-cloud-starter-feign'
runtime 'org.springframework.boot:spring-boot-starter-actuator'
}...
Ganz großes Kino?
embarc.de
build.gradle
65
HomeController (1/2)
package de.embarc.msssc.webseite.controller;
import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
import ...
@Controller
public class HomeController {
@Autowired
private TrainerClient trainerClient;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(ModelMap model) {
AlleTrainerCommand cmd = new AlleTrainerCommand();
List<Trainer> trainers = cmd.execute();
model.addAttribute("allTrainers", trainers);
return "home";
}
...
}
Ganz großes Kino?
embarc.de
66
33
09.12.15
HomeController (2/2)
...
private class AlleTrainerCommand extends HystrixCommand<List<Trainer>> {
AlleTrainerCommand() {
super(HystrixCommandGroupKey.Factory.asKey("DefaultGroup"));
}
@Override
protected List<Trainer> run() {
return trainerClient.getAll();
}
@Override
protected List<Trainer> getFallback() {
return Collections.emptyList();
}
}
}
Ganz großes Kino?
embarc.de
67
Ganz großes Kino?
embarc.de
68
34
09.12.15
Ganz großes Kino?
embarc.de
69
Edge Service: Zuul
➔  https://github.com/Netflix/feign
Ganz großes Kino?
mic
ice that provides dyna
Zuul is an edge serv
d
resiliency, security, an
routing, monitoring,
ts
es
front door for all requ
e
th
is
ul
Zu
...
e.
or
m
d of
b sites to the backen
from devices and we
tion.
ix streaming applica
the Netflembarc.de
70
35
09.12.15
Quelltexte
➔  https://github.com/embarced/mss2015beispiel
Ganz großes Kino?
embarc.de
71
Mögliche nächste Schritte …
 
 
 
 
Web Client als SPA
Betrieb in Docker Containern
Hystrix mit Annotationen statt JavaKlassen für Commands
...
Ganz großes Kino?
embarc.de
72
36
09.12.15
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
3
4 Im eigenen Kontext
5 Fazit und weitere Informationen
Ganz großes Kino?
73
embarc.de
Conway …
“
The technical architecture is hugely important for
the way we are organized. The organizational
structure must play in harmony with the
technical architecture. Many companies
can’t use our way of working because their
architecture won’t allow it.
- Henrik Kniberg (about Spotify)
Ganz großes Kino?
embarc.de
“
74
37
09.12.15
Autonome Systemteile
Vertikalen / Services / Self-Contained-Systems
Ganz großes Kino?
embarc.de
75
Microservices bei Netflix (org.)
Teams vollumfänglich für ihre Services verantwortlich
•  Entwicklung
•  Release und Deployment
•  Betrieb
Keine klassische Management-Steuerung
Keine Beeinflussung durch andere Teams oder
eine zentrale Instanz
•  Wenige technologische Vorgaben
•  Release nach Belieben
“Freedom & Responsibility”
Ganz großes Kino?
embarc.de
76
38
09.12.15
Architekten?
Ganz großes Kino?
embarc.de
77
Generell…
bessere Chancen eine Gruppe an
Menschen zu finden die einer Architektenrolle gerecht werden
Man hat
können
schneller wenn mehrere Leute auf
Anforderungsänderungen oder technische Probleme reagieren
Man ist
können.
besseres System bauen, wenn die
Entwickler annehmen, dass Architektur ihr Problem
Man wird ein
ist
: “Nobody takes care of a problem
like the owner does”
Ganz großes Kino?
embarc.de
78
39
09.12.15
Cross-funktional
Analyst
(RE)
Architekt
Designer
Entwickler
Problem
Ganz großes Kino?
Build
Engineer
Ops
Lösung
79
embarc.de
Keine Firma arbeitet völlig anarchisch
Kein
Architekt
Architektur
Agent
Architektur Klassischer
Owner
Architekt
Über die Zeit
Ganz großes Kino?
embarc.de
80
40
09.12.15
Wertemuster und die Spirale
Ein Wertemuster beschreibt
die Art, wie ein Mensch über die Welt
denkt (und nicht was er denkt)
Farbig codierte Ebenen
stellen diese Wertemuster in Spiral Dynamics
dar und ordnen sie nach Komplexität.
Es wird keine Bewertung im Sinne
von „besser“ oder „schlechter“ vorgenommen
Ganz großes Kino?
embarc.de
81
Orange
vielfältig, effizient, wissenschaftlich, strategisch
Ganz großes Kino?
embarc.de
82
41
09.12.15
Orange
vielfältig, effizient, wissenschaftlich, strategisch
§  Ziel ist der maximale Erfolg und Gewinn
§  Reflexion: Strategien wechseln falls nötig
§  Individualität und Andersartigkeit (besser sein) sind hoch
angesehen und werden belohnt
§  Wettbewerb und Leistung stehen klar im Vordergrund
§  Über Anderen stehen durch klare Kriterien wie Geld,
Auszeichnungen, Titel, Statussymbole
Ganz großes Kino?
embarc.de
83
Blau
absolutistisch, gehorsam, ordentlich, autoritär
Ganz großes Kino?
embarc.de
84
42
09.12.15
Blau
absolutistisch, gehorsam, ordentlich, autoritär
§  Regeln und Herrschaft sind nicht mehr Personengebunden
§  Es gibt einen klaren, dauerhaften Kodex an den sich auch
die Vorgesetzten / Leiter halten
§  Regeleinhaltung und Strukturen sind SEHR wichtig
§  Einheitlichkeit muss gewahrt bleiben
§  Fokus auf negativen Sanktionen gegenüber Fehlverhalten
Ganz großes Kino?
embarc.de
85
Grün
personalistisch, kommunitaristisch, egalitär
Ganz großes Kino?
embarc.de
86
43
09.12.15
Grün
personalistisch, kommunitaristisch, egalitär
§  Besonderer Wert auf Gleichberechtigung und Gleichheit Rigorose Ziel- und Hierarchieablehnung
§  Orientierung in die Gruppe, Relativierung aller Abstufungen
§  Ziele sind weniger über Außen definiert, sondern betreffen
vor allem die Zufriedenheit der Gruppenmitglieder
§  Direkte Konfliktklärung, höhere persönliche Bindung
untereinander
Ganz großes Kino?
embarc.de
87
Freiheit, Verantwortung, orange …
Aber Wie schafft Netlix es, dass:
§  Freiheit nicht ausgenutzt wird
§  Verantwortung mit den richtigen Attributen/
Zielen verbunden wird
§  ...
Ganz großes Kino?
embarc.de
88
44
09.12.15
Klare Qualitätsziele / Treiber
“Netflix-Members are able to watch tv
series and films – as much as they
want, any time, everywhere, on every
internet-connected device out there.”
“Amazon is customer obsessed! If
only one customer complains, we take
the feedback and improve the system”
“Available everywhere, Great user
experience, More convenient than
piracy, Fast, reliable, always available,
Scalable for many, many users.”
Ganz großes Kino?
embarc.de
89
Prinzipien…
Nicht
Mit Fremden sprechen
Ganz großes Kino?
embarc.de
90
45
09.12.15
Prinzipien - Einige Beispiele...
§  Create a Separate Data Store for Each Microservice
Do not use the same back-end data store across microservices.
Choose the database that best suits the service. No share database
structures!
§  Do not standardize on the internals of services.
Standardize the „arcs“ of the network, not the internal nodes.
§  Self service infrastructure – All infrastructure that is needed
should be available as a self service entity.
That way, there is no need to wait for another team to get hardware,
setup a storage cluster or do configuration changes.
Ganz großes Kino?
embarc.de
91
Simian Army for Governance
Konformität und Qualitätseigenschaften
durch „Chaos“ in der
Produktivumgebung:
§  Chaos Monkey
§  Chaos Gorilla
§  Chaos Kong
§  Latency Monkey
§  Conformity Monkey
§  Security Monkey
§  Janitor Monkey
§  ...
Ganz großes Kino?
embarc.de
92
46
09.12.15
Tech-Blogs
Ganz großes Kino?
embarc.de
93
Tech-Blogposts analysiert
13
24
Warum? Wie?
Ganz großes Kino?
Motivation,
Problem,
Zweck
Beispiele,
Anwendung,
Tutorials
Was?
Wohin noch?
Terminologie,
Hintergrund,
Detail,
Weitere Optionen,
Verwandte Themen
Pläne & Ausblick
embarc.de
94
47
09.12.15
Communities of Practice
Netflix Engineering Meetups
Gilt Councils
Yelp Meetups (2014 approx. 70)
Google Talks
…
Ganz großes Kino?
embarc.de
95
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
4
Ganz großes Kino?
4 Im eigenen Kontext
5 Fazit und weitere Informationen
embarc.de
96
48
09.12.15
Übung – Microservice Vorteile
Ganz großes Kino?
embarc.de
97
Übung - Microservice Herausforderungen
Ganz großes Kino?
embarc.de
98
49
09.12.15
Agenda
1 Einstieg und Überblick
2 Starten mit Netflix-Technologien
3 Arbeitsweise bei Netflix & Co.
5
Ganz großes Kino?
4 Im eigenen Kontext
5 Fazit und weitere Informationen
embarc.de
99
Netflix-Architektur: Blog-Serie
➔  http://www.embarc.de/tag/netflix-blogserie/
Ganz großes Kino?
embarc.de
100
50
09.12.15
Spicken erlaubt!
Unsere Architektur-Spicker
beleuchten die konzeptionelle
Seite der Softwareentwicklung.
ç
Spicker #2:
„Quantitative Analyse“
•  Bei welchen Qualitätsmerkmalen helfen quantitative
Analysen weiter?
•  Welche Tools und Metriken
sind verbreitet und wie helfen
sie Ihnen?
•  Wie gehen Sie sinnvoll mit
Ergebnissen um?
PDF, 6 Seiten
Kostenloser Download.
Ganz großes Kino?
è  http://architektur-spicker.de
101
embarc.de
Vielen Dank.
Wir freuen uns auf Eure Fragen!
[email protected]
[email protected]
@StefanZoerner
@st_toth
xing.to/szr
xing.to/sto
51
09.12.15
Spicken erlaubt!
Unsere Architektur-Spicker
beleuchten die konzeptionelle
Seite der Softwareentwicklung.
ç
Spicker #1:
„Der Architekturüberblick“
•  Welche Zutaten gehören in
einen Architekturüberblick?
•  Welche Formen bewähren
sich in welchen Situationen?
•  Wie fertigen Sie einen
Architekturüberblick an?
PDF, 4 Seiten
Kostenloser Download.
Ganz großes Kino?
è  http://architektur-spicker.de
embarc.de
103
Wir teilen unser Wissen gerne mit
Ihnen... und auch bei Ihnen!
Sie haben eine Community of
Practice und suchen inhaltliche
Anregungen oder Abgleich? Sie
planen ein Team-Event und
wollen es neben der sozialen
Komponente auch fachlich
ausrichten?
LASSEN SIE UNS NEUE THEMEN
AUFZEIGEN UND IMPULSE SETZEN!
è  http://www.embarc.de/leistungen/impulsvortraege/
52

Documentos relacionados