Konzeption eines Qualitätsmanagement-Werkzeuges für die ... · • Richtlinien für die Best...

Post on 31-May-2020

1 views 0 download

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

https://gradle.org/

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