Konzeption eines Qualitätsmanagement-Werkzeuges für die ... · • Richtlinien für die Best...
Embed Size (px)
Transcript of Konzeption eines Qualitätsmanagement-Werkzeuges für die ... · • Richtlinien für die Best...

SWAR #13
Felix Hohlwegler – SS2019

Nachholtermine
Felix Hohlwegler – SS2019
Analyse
• Nachholtermin
• Vorlesung
• ??
• Übung:

Wiederholung
Felix Hohlwegler – SS2019

AWS CodePipeline
• CI Build Server
• AWS CodePipeline ist ein vollständig verwalteter Continuous-Delivery-Service, mit dem Sie Ihre
Veröffentlichungs-Pipelines für schnelle und zuverlässige Updates von Anwendungen und Infrastruktur
automatisieren können.
Felix Hohlwegler – SS2019
https://aws.amazon.com/de/codepipeline/

Continuous Deployment
• Grundlagen
• Produktivsetzung der Software auf Knopfdruck
• jede Produktivsetzung verspricht bessere Qualität als die vorherige
• Aufhebung des Phasenmodells der Softwareentwicklung
• umfassende Tests vor Go-Live
• Geschwindigkeit
Felix Hohlwegler – SS2019

Continuous Deployment
• Was ist Continuous Delivery?
• Techniken, Prozesse und Werkzeuge, mit deren Hilfe kurze Entwicklungszyklen
und die schnelle Auslieferung von Software-Updates oder produktiven Endsystemen
ermöglicht werden
• Menge von Validierungen, die vor Go-Live „passed“ sein müssen
Felix Hohlwegler – SS2019

Schritte zum CD
Felix Hohlwegler – SS2019
Continuous Deployment
Continuous Pipeline
Deployment Automation
Continuous Integration
Configuration Management
Automated Testing
Agile Development

Build Management
• bisher wurde die Software über die IDE gebaut
• Jenkins ist unabhängig von der IDE - es wird ein Buildprozess gebraucht
• Was macht ein Buildprozess?
• Code kompilieren
• Ausführen automatischer Tests
Felix Hohlwegler – SS2019

Build Management
• Build Tools
• Shell Scripts
• Make
• Rake
• Grunt
• Gulp
• Composer
• SBT
• Ant
• Maven
• Gradle
• …. Felix Hohlwegler – SS2019

ANT
Felix Hohlwegler – SS2019

MAVEN
• MAVEN
• Software Management Tool
• Basiert auf einem Project Object Model (POM)
• XML Datei
• Beinhaltet alle Projekt und Konfigurationsdetails
• Verwaltet Project Build
• Stellt Reportings bereit
• Verwaltung der Dokumentation an einem zentralen Ort
Felix Hohlwegler – SS2019

MAVEN
• MAVEN ist mehr als ein Build Tool
• Build Prozess
• Einheitliches Build System
• Abhängigkeit Management
• Dokumentationstool
• Qualitätsinformationen
• Richtlinien für die Best Practices Entwicklung
Felix Hohlwegler – SS2019

MAVEN
• MAVEN in 5 Minutes
• Java muss installiert sein
• Maven Installieren https://maven.apache.org/download.cgi
• mvn –version
• mvn archetype:generate -DgroupId=com.mycompany.app
-DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4 -DinteractiveMode=false
Felix Hohlwegler – SS2019

MAVEN
Felix Hohlwegler – SS2019

Gradle
Felix Hohlwegler – SS2019
• Gradle vs. Maven
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>de.htwg.examples</groupId>
<artifactId>example</artifactId>
<version>0.1-SNAPSHOT</version>
</project>
apply plugin: 'java'

Gradle
Felix Hohlwegler – SS2019
• Dependency Management
• Voll kompatibel mit Maven und Ivy und deren Repos
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core',
version: '3.6.7.Final'
}
dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
build.gradle
short way

Themenblock 12
Felix Hohlwegler – SS2019

Ziele
• Sie wissen, was Microservices sind
• Sie wissen, wie man eine Microservice Architektur entwirft
• Sie wissen, wie man Microservices Deployed
• Sie wissen, was Docker ist
Felix Hohlwegler – SS2019

Microservices
• Was sind Microservices?
• Es existiert keine formelle Definition
• Es gibt kein Standardmodell (Architektur)
• Was sind Microservices?
• Wesentliche Eigenschaft: unabhängiges Deployment
• Keine Monolithen
• Modularisierung
• Deployment einer „Einheit“ ohne alle deployen zu müssen
Felix Hohlwegler – SS2019

Microservices
• Was sind Microservices?
• Am Ende entsteht ein verteiltes System
• Mit einem nicht zu unterschätzendem Komplexitätsgrad
Felix Hohlwegler – SS2019

Microservice Vs.
Monolithic Application
Felix Hohlwegler – SS2019

Microservices
• Monolith vs. Microservice
Felix Hohlwegler – SS2019https://www.redhat.com/de/topics/microservices/what-are-microservices

Microservices
Felix Hohlwegler – SS2019
Microservices Monolithic Architecture
Jede Einheit der gesamten Anwendung sollte die kleinste sein und in der Lage, ein bestimmtes Geschäftsziel zu erreichen.
Eine einzige Codebasis für alle Unternehmensziele
Die Inbetriebnahme des Dienstes ist relativ schnell. Die Inbetriebnahme des Dienstes erfordert mehr Zeit.
Die Fehlerisolierung ist einfach. Selbst wenn ein Dienst ausfällt, kann ein anderer weiterhin funktionieren.
Die Fehlerisolierung ist schwierig. Wenn eine bestimmte Funktion nicht funktioniert, geht das gesamte System aus. Um dieses Problem zu lösen, muss die Anwendung neu erstellt, erneut getestet und auch neu bereitgestellt werden.
Sollten lose gekoppelt sein, damit Änderungen, die in dem einen Bereich vorgenommen werden, den anderen nicht beeinflussen.
Die monolithische Architektur ist eng miteinander verbunden. Änderungen in einem Modul des Codes wirken sich auf das andere aus.

Microservices
Felix Hohlwegler – SS2019
Microservices Monolithic Architecture
Unternehmen können mehr Ressourcen für Services bereitstellen, die einen höheren ROI generieren.
Da Dienste nicht isoliert sind, ist eine individuelle Ressourcenzuweisung nicht möglich.
Microservices bleiben immer konsistent und kontinuierlich verfügbar.
Entwicklungswerkzeuge werden überlastet, da der Prozess von Grund auf neu beginnen muss.
Die Daten werden zusammengeführt. Dies ermöglicht es dem einzelnen Microservice ein für seine Bedürfnisse am besten geeignetes Datenmodell zu übernehmen.
Die Daten sind zentralisiert.
Kleine, fokussierte Teams. Parallele und schnellere Entwicklung
Großes Team und erheblicher Aufwand für das Teammanagement sind erforderlich.
Eine Änderung des Datenmodells eines Microservice hat keinen Einfluss auf andere Microservices.
Änderung des Datenmodells betrifft die gesamte Datenbank

Microservices
Felix Hohlwegler – SS2019
Microservices Monolithic Architecture
Interaktion mit anderen Mikroservices über klar definierte Schnittstellen
Nicht anwendbar
Microservices arbeiten nach dem Prinzip, das sich auf Produkte und nicht auf Projekte konzentriert.
Legen Sie Wert auf das gesamte Projekt.
Keine Querabhängigkeiten zwischen den Codebasen. Sie können verschiedene Technologien für verschiedene Microservices verwenden.
Eine Funktion oder ein Programm hängt von anderen ab.

Microservice Vs. SOA
Felix Hohlwegler – SS2019

Microservices
• Von der SOA zum Microservice
• Unterschiede
• Microservices können Stateless miteinander kommunizieren
• Microservices sind fehlertoleranter, da sie weniger von einander
abhängen
• Sprachunabhängige APIs
• Vergleich
• Microservices erscheinen im Vergleich zu einer SOA
gar nicht so neu
Felix Hohlwegler – SS2019

Microservices
• Von der SOA zum Microservice
• Vergleich
• Umsetzung aufgrund des Fortschritts der Containerisierung
deutlich einfacher
Felix Hohlwegler – SS2019

Microservices
Felix Hohlwegler – SS2019
Parameter SOA Microservice
Ausführungsart In der SOA werden Softwarekomponenten der Außenwelt zur Nutzung in Form von Services ausgesetzt.
Micro Service ist ein Teil von SOA. Es handelt sich um eine Implementierung von SOA.
Abhängigkeit Die Geschäftseinheiten sind abhängig. Sie sind unabhängig voneinander.
Größe der Software
Die Software ist größer als jede herkömmliche Software.
Die Größe der Software ist bei Microservices immer klein.
Technology Stack
Der Technologie-Stack ist im Vergleich zu Microservice kleiner.
Microservice Technologie-Stack könnte sehr groß sein.
Art der Anwendung
Monolithisch in der Natur Full stack in nature
Unabhängig und fokussiert
SOA-Anwendungen sind für die Ausführung mehrerer Geschäftsaufgaben konzipiert.
Sie sind so konzipiert, dass sie eine einzige Geschäftsaufgabe erfüllen.

Microservices
Felix Hohlwegler – SS2019
Parameter SOA Microservice
Deployment Der Bereitstellungsprozess ist zeitaufwändig.
Die Bereitstellung ist unkompliziert und weniger zeitaufwändig.
Kosten -Effektivität
Kostengünstiger Weniger wirtschaftlich.
Skalierbarkeit Geringer im Vergleich zu Microservices. Highly scalable.
Business logic Geschäftslogik-Komponenten werden innerhalb einer einzigen Servicedomäne gespeichert Einfache Protokolle (HTTP mit XML JSON)Die API wird mit SDKs/Clients gesteuert
Geschäftslogik kann domänenübergreifend leben Enterprise Service Bus wie Schichten zwischen Diensten Middleware

Microservice Vorteile
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Schnellere Markteinführung
• Kleinere Entwicklungszyklen in einer Microservice-Architektur
• Schnellere Implementierung
• Schnellere Updates
• Agiler
• Deployment von Updates einzelner Komponenten
nicht der gesamten Applikation
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Hochgradig skalierbar
• Applikation kann über viele Services verteilt werden
• Applikation kann über mehrere Server verteilt werden
• Applikation kann über mehrere Infrastrukturen verteilt werden
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Robustheit
• Services haben keinerlei Auswirkung aufeinander
• Wenn ein Service ausfällt, kollabiert nicht die gesamte
Applikation, dies wäre bei Monolithischen Applikationen der Fall.
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Einfache Implementierung
• Erhöhte Modularität
• Kleinere Einheiten
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Besserer Zugriff
• Einzelne Einheiten der Applikation können besser verstanden
werden
• Einfache Aktualisierung
• Ideal in Kombination mit agilen Methoden
Felix Hohlwegler – SS2019

Microservices
• Vorteile
Felix Hohlwegler – SS2019
Typ Beschreibung
Simpler to Deploy Es werden nur Teile einer Applikation deployed
Simpler to Understand Einzelpersonen müssen nur Teile einer Applikation kennen.Den Code zu verstehen ist deutlich einfacher, Funktionen sind isolierter und haben weniger Abhängigkeiten.
Reusability Across Business Kleine Services wie Bezahlsystem oder Login System können von allen Applikationen einer Firma verwendet werden.
Faster Defect Isolation Wenn ein Test schief geht, ist dies schneller auf einen Service zurückzuführen
Minimized Risk of Change Technologie oder Sprach Lock verhindern, change on the fly without risk

Microservice
Herausforderungen
Felix Hohlwegler – SS2019

Microservices
• Herausforderungen
• Entwicklung
• Abhängigkeiten zwischen Services müssen identifiziert werden
➔ Benötigt Zeit
• Ein Build genügt nicht mehr aus, ein Build kann weitere Builds
voraussetzen, um wieder eine lauffähige Applikation zu haben
• Auswirkung auf Daten muss berücksichtigt werden
Felix Hohlwegler – SS2019

Microservices
• Herausforderungen
• Tests
• Integrations-Tests werden komplexer
• End-To-End Tests werden aufwendiger und wichtiger
• Probleme in einem Service können Probleme in anderen
Services verursachen
Felix Hohlwegler – SS2019

Microservices
• Herausforderungen
• Versionierung
• Update auf neue Versionen kann Abwärtskompatibilität
beeinträchtigen
• Komplexe Business Logik kann Builds komplex gestalten
• Es können unterschiedliche Versionen für unterschiedliche
Kunden hochgefahren werden
• Wartungsaufwand steigt
Felix Hohlwegler – SS2019

Microservices
• Herausforderungen
• Implementierung
• Ersteinrichtung ist aufwendig
• Investition in Automatisierung
• Komplexität in welcher Reihenfolge das Rollout ablaufen muss
Felix Hohlwegler – SS2019

Microservices
• Herausforderungen
• Protokollierung
• Zentrale Stelle für Protokollierung
• Überwachung
• Es gilt viele Services zu überwachen, die auf unterschiedlichen
Technologien/Frameworks basieren.
• Debugging
• Remote Debugging keine Option (Dutzende oder Hunderte Services)
Felix Hohlwegler – SS2019

Microservices
• Vorteile
• Mehr Offenheit
• Sprachunabhängige APIs
• Jeder Entwickler kann in seiner bevorzugten Sprache entwickeln
Felix Hohlwegler – SS2019

Die sechs Merkmale von
Microservices
Felix Hohlwegler – SS2019

Microservices
• 1.) Mehrere Komponenten
• Aufteilung der Applikation in mehrere einzeln entwickelte Komponenten-
Dienste
• Separates deployen jeder einzelnen Komponente
• Viele Remote-Aufrufe
• Erhöhte Komplexität
Felix Hohlwegler – SS2019

Microservices
• 2.) Für die Geschäftswelt gedacht
• Früher Monlithisch: verschiedene Teams hatten Fokus auf einen spezifischen
Teil (z.B. UI, Datenbank, ..)
• Jetzt funktionsübegreifende Teams (Full-Stack developer)
• spezifische Produkte auf der Grundlage eines oder mehrerer individueller
Dienste herstellen
Felix Hohlwegler – SS2019

Microservices
• 3.) Einfaches Routing
• empfangen Anfragen
• bearbeiten sie
• erzeugen eine entsprechende Antwort
• Kein Message Rounting, Choregraphie
• Microservices haben „intelligente“ Endpunkte, die Informationen
verarbeiten und Logik anwenden und „dumme“ Rohre durch welche
Informationen fließen
Felix Hohlwegler – SS2019

Microservices
• 4.) Dezentralisierung
• Dezentrale Governance wird von der Mikroservice-Community favorisiert
• Bereitstellung von Tools und Services „weltweit“
Felix Hohlwegler – SS2019

Microservices
• 5.) Failure Resistant
• Mikroservices sind auf die Bewältigung von Misserfolgen ausgelegt
• Da mehrere einzigartige und unterschiedliche Dienste miteinander kommunizieren,
ist es durchaus möglich, dass ein Dienst aus dem einen oder anderen
Grund ausfällt
• Client muss dies abfangen
• Gutes Monitoring wird vorausgesetzt
Felix Hohlwegler – SS2019

Microservices
• 5.) Evolution
• evolutionäres Design
• ideal für evolutionäre Systeme, bei denen Sie die Art der Geräte, die eines
Tages auf Ihre Anwendung zugreifen könnten, nicht vollständig
voraussehen können
Felix Hohlwegler – SS2019

Microservice Beispiele
Felix Hohlwegler – SS2019

Microservices
• weit verteilte Architektur
• empfängt täglich mehr als eine Milliarde Anrufe von mehr als 800 verschiedenen
Gerätetypen bis hin zu seiner Streaming-Video-API
• Jeder API-Aufruf fordert dann etwa fünf weitere Aufrufe des Backend-Service an.
Felix Hohlwegler – SS2019

Microservices
Felix Hohlwegler – SS2019https://medium.com/netflix-techblog/growth-engineering-at-netflix-accelerating-innovation-90eb8e70ce59

Microservices
Felix Hohlwegler – SS2019https://medium.com/netflix-techblog/growth-engineering-at-netflix-accelerating-innovation-90eb8e70ce59

Microservices
• Core umfasst mehrere autonome Anwendungen
• die jeweils die Geschäftslogik für verschiedene Funktionsbereiche ausführen
Felix Hohlwegler – SS2019

Microservices
Felix Hohlwegler – SS2019https://de.slideshare.net/kasun04/microservices-at-ebay

Microservices
Felix Hohlwegler – SS2019https://de.slideshare.net/kasun04/microservices-at-ebay

Microservices
Felix Hohlwegler – SS2019https://de.slideshare.net/kasun04/microservices-at-ebay

Microservices
Felix Hohlwegler – SS2019https://de.slideshare.net/kasun04/microservices-at-ebay

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Microservices
Felix Hohlwegler – SS2019
https://de.slideshare.net/kevingoldsmith/microservices-at-spotify

Felix Hohlwegler – SS2019

Docker
• Open Source Software zur Bereitstellung von Applikationen
• Containerisiert
• Beinhalten alle Pakete
• Leicht zu transportieren (als Datei)
• Gewährleistung der Trennung
Felix Hohlwegler – SS2019

Docker
Felix Hohlwegler – SS2019
https://de.wikipedia.org/wiki/Docker_(Software)#/media/File:Docker-linux-interfaces.svg

Docker
• Image:
• Speicherabbild eines Containers
• Besteht aus Layern
• Ist Portabel
• Kann in Repositorys gespeichert werden
• Container
• Aktive Instanz eines Images
• Layer
• Teil eines Images
• Enthält Befehl / DateiFelix Hohlwegler – SS2019

Docker
• Dockerfile
• Textdatei, welche ein Image mit Befehlen bezeichnet
• Jeder Befehl erzeugt ein Layer
• Registry
• Verwaltung von Repositories, z.B. Docker Hub
• Docker Swarm
• Cluster von Conatinern
Felix Hohlwegler – SS2019

Docker
• Wichtige Docker Befehle
• docker ps –a => Zeigt alle laufenden Instanzen an
• docker Images => Zeigt alle Images auf dem Host an
• docker exec -it <<containerID>> /bin/bash => öffnet bash
Sitzung innerhalb eines laufenden containers
• Docker start <<containerID>> => Startet einen Container
• Docker stop <<containerID>> => Stopt einen Container
Felix Hohlwegler – SS2019

Docker
• Wichtige Docker Befehle
• docker run -d -it -p (port) 9000:9000
--name <<name>> <<image>> /bin/bash
==> erzeugt einen neuen unabhängigen Container
(nicht verwechseln mit start)
Felix Hohlwegler – SS2019

Docker
• Wichtige Docker Befehle
• docker commit <<containerID>> <<some_name>>
==> erzeugt Image aus laufendem Container
• docker pull <<imageName>> => lädt die BaseImage von dem
dockerHUB
Felix Hohlwegler – SS2019

Docker
• Datenhaltung
• Docker Container sind nicht persistent
• Wird ein Container gelöscht sind die Daten weg
• Idealerweise mounten eines externen Speichers vom Host System
Felix Hohlwegler – SS2019

Docker
• Docker File
Felix Hohlwegler – SS2019