Resilient Software Design Patterns

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Programmieren 2 Java Überblick

Struts 2 Das Imperium schlägt zurück?

Warum EJB Technologie (1)?

Web-Services Implementierung mit Java

Robuste Anwendungen mit Hystrix

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Schritt 4: Hallo Enterprise Bean

Themen. Web Service - Clients. Kommunikation zw. Web Services

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Delegatesund Ereignisse

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart

Java Einführung Methoden in Klassen

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Vergleich verschiedener OO-Programmiersprachen

.NET-Networking 2 Windows Communication Foundation

Anwendung der Aspektorientierung : Security

Richard Bubel & Martin Hentschel

6 Speicherorganisation

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Vererbung. Martin Wirsing. Ziele. Vererbung

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

5. Tutorium zu Programmieren

Deployment. Arthur Zaczek

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Java Einführung Methoden. Kapitel 6

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Zend PHP Cloud Application Platform

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Programmiertechnik Methoden, Teil 2

Test-Driven Design: Ein einfaches Beispiel

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Spezifikation DPD und primetime WebService Shopfinder Gültig für Paketversender in Österreich. Version 3.3.0

JAVA - Methoden - Rekursion

Java Einführung Programmcode

Typumwandlungen bei Referenztypen

Arbeitsblatt zu Methoden

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Tagesprogramm

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

JAVA - Methoden

Remote Method Invocation

Einführung in die Informatik

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Java-Schulung Grundlagen

JAX-RS 2.0 REST mit Java EE 7

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmierprojekt. Anne0e Bieniusa Sommersemester 2014

Einführung in Google Web Toolkit

Reversi: Server und manueller Spieler

1 Abstrakte Klassen, finale Klassen und Interfaces

Programmiertechnik Klassenmethoden

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Mobile und Verteilte Datenbanken

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Große Übung Praktische Informatik 1

-Testen verteilter Anwendungen

5. Übung zur Vorlesung Service-orientierte Architekturen

Nathan Burgener. Design by Contract. Modul SWE

Java - Webapplikationen

3 Objektorientierte Konzepte in Java

Handbuch für die Erweiterbarkeit

Ich liebe Java && Ich liebe C# Rolf Borst

Java Einführung Abstrakte Klassen und Interfaces

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Algorithmen und Datenstrukturen 07

5. Übung zu Software Engineering

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Programmierung mit Java

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

Enterprise JavaBeans Überblick

Java Kurs für Anfänger Einheit 5 Methoden

Übung: Algorithmen und Datenstrukturen SS 2007

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Übungen zu Softwaretechnik

Javakurs zu Informatik I. Henning Heitkötter

Transkript:

Resilient Software Design Patterns Version: 17.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de

Ihr Sprecher Thorsten Maier Trainer, Berater, Entwickler Orientation in Objects GmbH Resilient Software Design Patterns 2

Resilient Software? 3

Resilient Software? Widerstandsfähig gegen Fehler 4

Warum? 5

Warum? weil jeder Ausfall viel Geld kostet und viele User verärgert 6

Warum? weil jeder Ausfall viel Geld kostet und viele User verärgert 7

Was ist daran neu? 8

Was ist daran neu? mehr User mehr Daten schnellere Anpassungen 9

Wie machen wir eine Software resilient? 10

Wie machen wir eine Software resilient? Redundanz 11

Wie machen wir eine Software resilient? Redundanz Isolation 12

Wie machen wir eine Software resilient? Redundanz Isolation Lose Kopplung 13

Wie machen wir eine Software resilient? Redundanz Isolation Lose Kopplung Fallback 14

Wie machen wir eine Software resilient? Redundanz Isolation Lose Kopplung Fallback 15

ISOLATION 16

17

18

BULKHEADS 19

Bulkheads im Kleinen: Methodenaufrufe 20

public int fakultaet(int n) { return (n == 0)? 1 : n * fakultaet(n - 1); } Mögliche Probleme? 21

public int fakultaet(int n) { if (n < 0) { throw new IllegalArgumentException(); } return (n == 0)? 1 : n * fakultaet(n - 1); } Schon besser 22

Validierung der Aufrufparameter Datentypen korrekt? Wertebereiche eingehalten? Vorbedingungen erfüllt?!= null Kreditkartennummer valide Freundliche Rückgabewerte Niemals null zurückliefern Datenmengen beschränken 23

Bulkheads im Großen: Software-Bausteine 24

3 Bausteine 25

Anwendung mit 3 Bausteinen Orientation in Objects GmbH Resilient Software Design Patterns 26

Anwendung mit 3 Bausteinen Deployment auf einem Server 27

Anwendung mit 3 Bausteinen Baustein wird 4 mal benötigt 28

Anwendung mit 3 Bausteinen Nachteile Änderung an wird nur 2 mal benötigt erfordert Reploy von Baustein wird 4 mal benötigt 29

Anwendung mit 3 Bausteinen Unabhängige Artefakte Baustein wird 4 mal benötigt 30

Anwendung mit 3 Bausteinen Unabhängige Artefakte Baustein wird 4 mal benötigt Flexible Skalierung auf 3 Server 31

Vorteile Unabhängige Artefakte Isolierte Entwicklung Isolierte Fehler Isoliertes Deployment Flexible Skalierung auf 3 Server 32

Nachteil Unabhängige Artefakte Kommunikation über Prozess- und Netzwerkgrenzen Verteilte Datenverarbeitung Flexible Skalierung auf 3 Server 33

8 Irrtümer der verteilten Datenverarbeitung Netzwerk ist ausfallsicher Latenzzeit = 0 Datendurchsatz Netzwerk ist sicher Netzwerktopologie ist stabil 1 Netzwerkadministrator Kosten des Datentransports = 0 Netzwerk ist homogen Bill Joy, Tom Lyon, L Peter Deutsch und James Gosling 34

In Kürze: Zuverlässigkeit und Konsistenz existieren nicht mehr 35

Verhalten und Standorte der Komponenten unseres Systems verändern sich ständig 36

Komponenten liefern unzuverlässige Daten oder verschwinden völlig 37

Ok, wir brauchen ISOLATION Aber wie kommen die Teile wieder zusammen? 38

LOSE KOPPLUNG 39

LOSE KOPPLUNG synchron asynchron 40

Startet gerade? nicht erreichbar Mit wem kann / soll ich kommunizieren? 41

Startet gerade? nicht erreichbar Als Architekt lassen sich alle Probleme mit Boxes and Lines lösen 42

2. Dienst finden 3. Dienst nutzen Verzeichnisdienst 1. registrieren 43

2. Dienst finden 3. Dienst nutzen Verzeichnisdienst 1. registrieren Als Entwickler brauchen wir etwas mehr 44

2. Dienst finden 3. Dienst nutzen Eureka 1. registrieren @SpringBootApplication @EnableEurekaServer public class Application { public static void main(string[] args) { //... } } 45

Security? 46

Security! 47

Soll ich mich etwa 2x einloggen? 48

Meine Session wird geteilt External Session Store 49

Netter Nebeneffekt: Anwendung wird zustandslos! External Session Store 50

@EnableRedisHttpSession public class SpringSessionConfig { @Bean public JedisConnectionFactory connectionfactory() { return new JedisConnectionFactory(); } } Redis 51

Problem: Doppelte Implementierung Redis 52

External Session Store Security API Gateway 53

External Session Store Security Zuul @EnableZuulProxy @EnableDiscoveryClient @SpringBootApplication public class ZuulProxy { public static void main(string[] args) { SpringApplication.run(ZuulProxy.class, args); } } 54

LOSE KOPPLUNG synchron asynchron 55

Asynchrone Kommunikation Entkoppelt Sender und Empfänger Verhindert Fehlerketten Sender muss nicht warten Sender Message Queue Empfänger Orientation in Objects GmbH Resilient Software Design Patterns 56

Starbucks Does Not Use Two-Phase Commit Kunde Kassierer Becherwarteschlange Ausgabe Barista http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html Orientation in Objects GmbH Resilient Software Design Patterns 57

JmsTemplate jmstemplate = context.getbean(jmstemplate.class); jmstemplate.convertandsend("coffeeorderqueue", new CoffeeOrder("Thorsten", "Cappuccino")); Kassierer coffeeorderqueue Barista @Component public class Barista { } @JmsListener(destination = "coffeeorderqueue") public void receivemessage(coffeeorder coffeeorder) { System.out.println("Received <" + coffeeorder + ">"); } Orientation in Objects GmbH Resilient Software Design Patterns 58

Weiche zeitliche Anforderungen Strict Consistency Eventual Consistency türschloss = geschlossen letzte_reise = 523km (engl. irgendwann nicht eventuell ) 59

Exactly Once- Kommunikation notwendig Sender toggletuerschloss() Empfänger tuerschloss=offen Nicht idempotent 60

At Least Once- Kommunikation möglich Sender schliessetuerschloss() Empfänger tuerschloss=offen Idempotent! 61

FALLBACK 62

2. Dienst finden 3. Dienst nutzen Verzeichnisdienst 1. registrieren zur Erinnerung 63

Instanz fällt kurz NACH der Auswahl aus 64

Circuit Breaker 65

Circuit Breaker 66

Circuit Breaker errorcount = 3 67

Hystrix @HystrixCommand(fallbackMethod = "fallback") public String readstring() { return remoteservicecall(); } public String fallback() { return "Fallback result"; } 68

Alternative finden Hystrix Eureka registrieren 69

Resilient Software Design Patterns?! 70

Bulkheads Parameter Checking Microservice Async Communication Discovery Service Exactly Once- und At Least Once- Location Transparency Kommunikation External Session Store Circuit Breaker Idempotenz Eventual Consistency Stateless API Gateway 71

??? Fragen?? Orientation in Objects GmbH? Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de 72

Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de