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