netflix oss in der praxis - jug saxony day...rxjava ist eine umsetzung von rx.net auf basis der jvm...
TRANSCRIPT
Senacor Technologies AG
Netflix OSS in der Praxis
Dr. Michael Menzel, Senacor Technologies AG
JUG Saxony Day 2016
Senacor Technologies AG
Digitalisierung
Netflix OSS in der Praxis, JUG Saxony Day 2016 2
Senacor Technologies AG 3
DIGITALISIERUNG IM BANKENUMFELD
Blue Chips FinTecs
Bank
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG 4
DIGITALISIERUNG IM BANKENUMFELD
Digitalisierung ändert die Kundenerwartung
4 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG 5
DIGITALISIERUNG IM BANKENUMFELD
Digitalisierung ändert die Kundenerwartung
5 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG 6
DIGITALISIERUNG IM BANKENUMFELD
Digitalisierung ändert die Kundenerwartung
6 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG 7
DIGITALISIERUNG IM BANKENUMFELD
Digitalisierung ändert die Kundenerwartung
7 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
DIGITALISIERUNG IM BANKENUMFELD
8
Geschwindigkeit
Startup- fähigkeit
Agilität
Kurze Releasezyklen
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
STATUS-QUO: MULTI-KANAL-ARCHITEKTUR
9
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Middleware Application
Service Service …
Middleware Application
Service Service …
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Backend
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
Fro
nte
nd
…
An
ford
eru
ng
en
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
6 Monoliths.
600 Services. 25 Clients. 45 Backends. Gewachsene Codebasis seit 1995.
(Erinnert sich jemand an J2EE 1.2?)
10
Senacor Technologies AG
Was nun?
11 11 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
HANDLUNGSBEDARFE
12 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
HANDLUNGSBEDARFE
13 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
HANDLUNGSBEDARFE
14 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
HANDLUNGSBEDARFE
15 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
E2E-commitment durch Vertical-Feature-Teams
ARCHITEKTUR ANPASSUNG
16
Loan Team
UI
Service
Database
Ops
Savings Team
UI
Service
Database
Ops
Trading Team
UI
Service
Database
Ops
Vertical Feature Teams Organisation führt zu
Architektur Produkte statt Projekte
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
MICROSERVICE-ARCHITEKTUR
17
Web Frontend Clients
Services Layer
SAP … Backend Systems
Mic
roserv
ice
Mic
roserv
ice
…
Mic
roserv
ice
-> Umsetzung der Services auf Basis von Spring Boot
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
MICROSERVICE-ARCHITEKTUR
Routing und Load-Balancing
Service Discovery
Externe Konfiguration
Service-Komposition
Resilience
Logging, Monitoring und Security
18 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
ROUTING UND LOAD-BALANCING
19
Web Frontend Clients
Services Layer M
icro
serv
ice
Mic
roserv
ice
…
Mic
roserv
ice
Adresse2:Port2
Adresse1:Port1
Serviceverfügbarkeit unter einheitlicher Domäne -> Reverse Proxy
Technische und fachliche Entkopplung durch Versionierung
http://<domain>:<port>/bank-accounts/v1.0/
CORS ?
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
ROUTING UND LOAD-BALANCING
20
Web Frontend Clients
Services Layer M
icro
serv
ice
Mic
roserv
ice
…
Mic
roserv
ice
ZUUL Reverse Proxy and Load Balancer
Proxy
Netflix OSS in der Praxis, JUG Saxony Day 2016
Zuul: Statische Routen-Konfiguration
zuul: routes: bankaccounts: path: /bank-accounts/v1.0/** url: http://Adresse1:Port1
Senacor Technologies AG
ROUTING UND LOAD-BALANCING
21
Load-balancer und Fehlertoleranz
zuul: routes: bankAccounts: path: /bank-accounts/v1.0/** serviceId: bankAccounts bankAccounts: ribbon: listOfServers: Adresse1:Port1, Adresse2:Port2
Ribbon: Client-side Load-Balancer Hystrix: Circuit-Breaker Bibliothek zur Umsetzung von Fehlertoleranz
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
BLAUPAUSE MICROSERVICE-ARCHITEKTUR
Routing und Load-Balancing
Service Discovery
Externe Konfiguration
Service-Komposition
Resilience
Logging, Monitoring und Security
22 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
ZUUL Reverse Proxy and Load Balancer
SERVICE DISCOVERY
23
Web Frontend Clients
Services Layer Eure
ka
Serv
ice R
egis
try
Proxy
bank-a
ccounts
: 1.0
.1
bank-a
ccounts
: 2.0
.0
…
bank-a
ccounts
: 1.0
.1
Service-Registrierung beim Start-Up
Heartbeat-Mechanismus
Master/Slave Registry betrieb
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
SERVICE DISCOVERY
24
ZUUL-Konfiguration mit Service-Registry
zuul: routes: bankAccounts: path: /bank-accounts/v1.0/** serviceId: bankAccounts eureka: client: serviceUrl: defaultZone: <URL Registry>
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Service-Aufrufe mit Feign
Einfache Erzeugung von Rest-Clients mit Eureka-Anbindung
Definition über Interface und Annotationen
Aktivierung von Feign-Clients: @EnableFeignClients
@FeignClient("users-service") interface UserClient { @RequestMapping(method = RequestMethod.GET, value = "/user") User getUser(); }
SERVICE DISCOVERY
25 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
BLAUPAUSE MICROSERVICE-ARCHITEKTUR
Routing und Load-Balancing
Service Discovery
Externe Konfiguration
Service-Komposition
Resilience
Logging, Monitoring und Security
26 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
EXTERNE KONFIGURATION
27
Web Frontend Clients
Services Layer M
icro
serv
ice
Mic
roserv
ice
…
Mic
roserv
ice
Configura
tion
Serv
er
ZUUL Reverse Proxy and Load Balancer
Eure
ka
Serv
ice R
egis
try
Proxy
Config-Server
Aktivierung über @EnableConfigServer
GIT-Konfiguration über spring.cloud.configrepo.server.git.uri = <uri>
Config-Client
Aktivierung über
cloud: config: enabled: true uri: <url>
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
EXTERNE KONFIGURATION
28
Web Frontend Clients
Services Layer M
icro
serv
ice
Mic
roserv
ice
…
Mic
roserv
ice
Configura
tion
Serv
er
ZUUL Reverse Proxy and Load Balancer
Eure
ka
Ser
vice
Reg
istr
y
Proxy
Config-Client
Dynamische Properties über @RefreshScope
Aktualisierung über /refresh
Optional: Push über Message Bus
PUSH Beispiele dynamische Parameter
Feature Toggles
Endpunkt-Adressen
Fachliche Parameter
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Archaius:
Framework zum Zugriff auf Properties
Basis ist Apache Commons
Unterschiedliche Quellen: Properties-Dateien, URLs, Datenbanken
Typsicherer Zugriff
Callbacks bei Änderung
EXTERNE KONFIGURATION
29 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
BLAUPAUSE MICROSERVICE-ARCHITEKTUR
Routing und Load-Balancing
Service Discovery
Externe Konfiguration
Service-Komposition
Resilience
Logging, Monitoring und Security
30 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Clientseitige Servicekompositionen führen zu Kommunikationsoverhead
SERVICE COMPOSITION
Netflix OSS in der Praxis, JUG Saxony Day 2016
100 ms
Browser
200 ms 300 ms 400 ms 500 ms 600 ms
Services
31
Server Request Latency Network Latency
Senacor Technologies AG
Clientseitige Servicekompositionen führen zu Kommunikationsoverhead
SERVICE COMPOSITION
Netflix OSS in der Praxis, JUG Saxony Day 2016
Browser Services
32
Net
flix
AP
I
Server Request Latency Network Latency
7 Netzwerkaufrufe zu einem zusammengefasst
Senacor Technologies AG
Wie lässt sich die API gestallten?
SERVICE COMPOSITION
Netflix OSS in der Praxis, JUG Saxony Day 2016
Einzelner Datensatz
Mehrfache Datensätze
Synchron ObjektIterable
Stream
Asynchron
Callback
Future
CompletableFuture
Observable
33
Senacor Technologies AG
SERVICE COMPOSITION MIT RXJAVA
Netflix OSS in der Praxis, JUG Saxony Day 2016
The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators
https://rx.codeplex.com
34
Senacor Technologies AG
ReactiveX basiert auf dem Observable-Pattern
SERVICE COMPOSITION MIT RXJAVA
Netflix OSS in der Praxis, JUG Saxony Day 2016
Observable Observer register
onNext(T) onError(Throwable t) onCompleted()
35
Senacor Technologies AG
RxJava ist eine Umsetzung von Rx.Net auf Basis der JVM
SERVICE COMPOSITION MIT RXJAVA
Netflix OSS in der Praxis, JUG Saxony Day 2016
LINQ, .NET Framework 3.5 Spracherweiterung zur Abfrage und Transformation von Daten 19.11.2007
RxJS, Rx for JavaScript 17.03.2010
Rx.NET, .NET Framework 4 Rx = Observables + LINQ + Schedulers Asynchrone, Push-basierte Datenverarbeitung 17.11.2009
RxJava, Reactive Extensions for the JVM, started by Netflix02.2013
36
Senacor Technologies AG
Events in Streams können gefiltert und transformiert werden
SERVICE COMPOSITION MIT RXJAVA
Netflix OSS in der Praxis, JUG Saxony Day 2016 37
Senacor Technologies AG
ZUUL Reverse Proxy and Load Balancer
SERVICE COMPOSITION MIT RXJAVA
38
Web Frontend Clients
Services Layer Eure
ka
Serv
ice R
egis
try
Proxy
SAP … Backend Systems
Mic
roserv
ice
Mic
roserv
ice
…
Mic
roserv
ice
Configura
tion
Serv
er
Core
Serv
ice
Core
Serv
ice
Rest Endpoint
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
BLAUPAUSE MICROSERVICE-ARCHITEKTUR
Routing und Load-Balancing
Service Discovery
Externe Konfiguration
Service-Komposition
Resilience
Logging, Monitoring und Security
39 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Resilient software design
Resilience: The system stays responsive in the face of
failure with a graceful degradation of service if required
RESILIENCE, ROBUSTNESS AND SCALABILITY
Insulation
Redundancy
Fallback
Loose coupling
40 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
RESILIENCE, ROBUSTNESS AND SCALABILITY
Circuit Breaker Die Sicherung unterbricht den Stromkreis
anstatt eines Hausbrandes – seit 1879
41 41 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Synchronen, blockierende Systeme können die Verfügbarkeit von Diensten einschränken
RESILIENCE, ROBUSTNESS AND SCALABILITY
42
Microservice Backend
Req
uests
Tim
e o
ut
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Hystrix isoliert den Backend-Zugriffe
RESILIENCE, ROBUSTNESS AND SCALABILITY
43
Microservice
x x
Backend
Fail f
ast
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
ZUUL Reverse Proxy and Load Balancer
ARCHITEKTUR
44
Web Frontend Clients
Services Layer Eure
ka
Serv
ice R
egis
try
Proxy
SAP … Backend Systems
Mic
roserv
ice
Mic
roserv
ice
…
Mic
roserv
ice
Configura
tion
Serv
er
Core
Serv
ice
Core
Serv
ice
Process Service
Hystrix
Hystrix
Hystrix Hystrix-Integration
Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Fazit
45 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
ZUUL Reverse Proxy and Load Balancer
FAZIT
46
Web Frontend Clients
Services Layer
Proxy
SAP … Backend Systems
Mic
roserv
ice
Identity
Pro
vid
er
…
Mic
roserv
ice
Configura
tion
Serv
er
Core
Serv
ice
Core
Serv
ice
Process Service
Netflix OSS in der Praxis, JUG Saxony Day 2016
Loggin
g u
nd
Monitoring
Eure
ka
Serv
ice R
egis
try
Senacor Technologies AG
FAZIT
Zuerst planen, …
47 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
FAZIT
sonst …
48 Netflix OSS in der Praxis, JUG Saxony Day 2016
Senacor Technologies AG
Netflix OSS in der Praxis
Dr. Michael Menzel, Senacor Technologies AG
JUG Saxony Day 2016