34
FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Sommersemester 2018 Michael Theis, Lehrbeauftragter

FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

Sommersemester 2018 Michael Theis, Lehrbeauftragter

Page 2: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

2

Page 3: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Applikationen und Datenbanken u.ä. werden auf Bare Metal betrieben

⚫ Rechner und Storage müssen umständlich über lange Zeit provisioniert werden

⚫ Netzwerke und Netzwerkkomponenten müssen umständlich über lange Zeit provisioniert werden

⚫ Bezahlt wird alles was in Betrieb ist (auch wenn es nicht benötigt wird)

⚫ Benötigte Laufzeitumgebung muss auf die Rechner gebracht werden

3

DB DB

AppApp

Page 4: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Applikationen und Datenbanken werden auf VMs betrieben

⚫ Jede VM hat frei wählbares Image (Betriebssystem) und frei wählbare Ressourcen (RAM/CPU + Volumes)

⚫ Kurzfristige automatisierbare Provisionierung von VMs, Netzwerken und Netzwerk-komponenten

⚫ Ausstattung von VMs kann nachträglich angepasst werden

⚫ Bezahlt wird nur das was tatsächlich benutzt worden ist (CPU + Storage + Traffic / Zeit)

⚫ Benötigte Laufzeitumgebung muss auf die VMs gebracht werden

4

VM VM VM Volume

DB DB DB

AppApp App

Page 5: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Applikationen und Datenbanken werden als Container im Cluster betrieben

⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Praktisch alle Applikations- und Diensttypen durch Containerisierung möglich

⚫ Unterstützung von persistenten Volumes

⚫ Benötigte Ressourcen (RAM/CPU + Volumes) und Services werden beim Deploymentfestgelegt

⚫ Routing zum Container wird von der Plattform zur Verfügung gestellt

⚫ Plattform sorgt für Verfügbarkeit und Skalierbarkeit

5

VM VM VM Volume

PV PVPV

DB DB DB DB

App App App App

Page 6: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Betrieb von Applikationen direkt auf der Plattform in bereitgestellter Laufzeitumgebung

⚫ Datenbanken und ähnliche Services sind provisionierbare Bestandteile der Plattform

⚫ Externe Services über Service Broker

⚫ Benötigte Ressourcen und Services werden beim Deployment festgelegt

⚫ Plattform stellt Routing zur Verfügung

⚫ Plattform sorgt für Verfügbarkeit und Skalierbarkeit

⚫ Mögliche Applikationstypen von den angebotenen Laufzeitumgebungen abhängig

⚫ Lizenzkosten für Plattform müssen berücksichtigt werden

6

VM VM VM Volume

DB DB DB

App App App

Page 7: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Jüngstes Mitglied der *aaS-Familie

⚫ Funktionalität wird eigenständig bereitgestellt und betrieben

⚫ Extrem kurze Bereitstellungszeiten

⚫ Kein Servermanagement, keine Kapazitätsplanung

⚫ Bezahlt wird pro Aufruf und verbrauchte Rechenzeit

⚫ PlattfRouting zur Funktion wird von der Plattform zur Verfügung gestellt

⚫ Plattform sorgt für Verfügbarkeit und Skalierbarkeit

7

VM VM VM Volume

Fkt Fkt Fkt Fkt Fkt FktFkt Fkt Fkt Fkt Fkt Fkt

Fkt Fkt Fkt Fkt Fkt Fkt

Page 8: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Software und IT-Infrastruktur werden von einem Anbieter als Gesamtpaket zur Verfügung gestellt

⚫ Kunden nutzt die bereitgestellte Funktionalität als Dienst

⚫ Bezahlt wird pro genutztem Dienst

⚫ Keine Entwicklungskosten auf Kundenseite

⚫ Keine Betriebs- oder Administrationskosten auf Kundenseite

8

Service Service Service

Page 9: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

9

IaaS

• Virtuelle Maschinen

• Virtuelle Disks

• Virtuelles Netzwerk

• Software Defined Network

CaaS

• Container

• Volumes

• IP‘s & Ports

• Load Balancer

• Elastizität

• [Cloud-Agnostisch]

PaaS

• Applikationen

• Services

• Service Broker

• Routing

• [Cloud-Agnostisch]

FaaS

• Funktionen

• Trigger

• Gateways

SaaS

• Was immer du haben willst …

• … und wofür du bereit bist zu zahlen

Niedriger Abstraktionslevel

Hohe Flexibilität

Geringe Geschwindigkeit

Hoher Abstraktionslevel

Geringe Flexibilität

Hohe Geschwindigkeit

Page 10: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

10

IaaS

• OpenStack

• vmware vSphere

• Azure Stack

• AWS EC2/VPC

• Google GCE

• Azure VMs

CaaS

• Kubernetes

• DC/OS

• Docker EE

• Pivotal PCS

• AWS ECS

• AWS EKS

• Google GKE

• Azure ACS

PaaS

• CloudFoundry

• Pivotal PCF

• OpenShift Origin

• RedHat OpenShift

• AWS ElasticBeanstalk

• Google App Engine

• Azure Web Apps

• Heroku

• Jelastic

FaaS

• OpenWhisk

• Fission

• IronFunctions

• AWS Lambda

• Google GCF

• Azure Functions

SaaS

• SAP

• Oracle

• Salesforce

Page 11: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

11

Page 12: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

12

Gartner: Magic Quadrant for Cloud Infrastructure as a Service, Worldwide, 15.06.2017

Page 13: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Seit 2006 Pionier unter den Public Cloud Providern

⚫ Breitestes Dienstangebot mit deutlichem Technologie-vorsprung

⚫ Mit 8 Regionen weltweit vertreten

⚫ 3 Rechenzentren auf deutschem Boden (Frankfurt/Main)

⚫ Alle Dienste sind nach dem Cloud Computing Compliance Controls Catalog (C5) des BSI zertifiziert

⚫ Zugang über AWS Console oder AWS CLI oder AWS SDK

13

https://aws.amazon.com/de/

Page 14: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Hartnäckigster Verfolger von AWS fokussiert auf Innovation

⚫ Leistungsfähige Plattform mit steigender New Feature Velocity

⚫ Strategischer Cloud Provider für Kunden mit Microsoft Technologien und Produkten im Einsatz

⚫ Kann mit Azure Stack auch on-premise aufgebaut werden

⚫ Hervorragende weltweite Verteilung mit 42 Regionen

⚫ Treuhänder Telekom betreibt deutsche Rechenzentren

14

https://azure.microsoft.com/de-de//

Page 15: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

15

Page 16: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Cloud Native Application Plattformen kommen in zwei Arten

Unstrukturiert (Bring and Build Your Own)

Strukturiert (Rundum-Sorglos Paket)

16

Unstrukturierte CNAP

VMsStorage DBs

Logging

Cluster

Container

Service Registry

Moni-toring

Router

Strukturierte CNAPStrukturierte CNAP

Page 17: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

17

CNAP

App

On-Premise / Private Cloud Off-Premise / Public Cloud

App AppApp App App

Page 18: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

18

Karl Isenberg, Mesosphere Container Orchestration Wars (2017) https://youtu.be/NRZ6N4e-Mko

Infrastructure

Container Networks Container Storage

Container Runtime

Container Orchestration

System Services

Logging &Metrics & Monitoring

Security & Multitenancy

Applications Jobs Services

Page 19: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Platzhirsch auf dem Sektor der Container-Cluster (CaaS)

⚫ Basiert auf Google‘s Erfahrungen im Betrieb von produktiven Workloadsaus den letzten 15 Jahren

⚫ Fokussiert auf den Betrieb von Docker-Containern

19

Wesentliche Features

Automatisches Placement von Container mit dem Ziel der optimalen Ressourcenauslastung

Horizontale Skalierung

Automatisierte Rollouts und Rollbacks mit Zero Downtime

Storage Orchestrierung

Selbstheilender Betrieb von Containern

Service Discovery und Load Balancing

Secret und Configuration Management

Batch-Ausführungen

Federation

https://kubernetes.io//

Page 20: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Basiert auf Kubernetes als Container Cluster Manager

⚫ Bei allen gängigen Public Cloud Providern und On-Premise betreibbar

⚫ Offiziell PaaS, tatsächlich aber CaaS mit netter UI

⚫ Deployment von Docker-Containern und Applikationen

20

Wesentliche Features

Orchestrierung von Containern mit Kubernetes

Container Storage mit QoS Labeln

Unterstützung vieler Sprachen mit polyglotter Persistenz

Automatisierung von Builds, Deployments, Skalierung, Health Management

Erweiterte Mandantenfähigkeit

Selbstbedienungs-Plattform

Source To Image (S2I)

https://www.openshift.com/

Page 21: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Kommerzielle PaaS Plattform von Pivotal aus Basis von Cloud Foundry

⚫ Bei allen gängigen Public Cloud Providern und On-Premise betreibbar

21

https://pivotal.io/de/platform

Wesentliche Features

Gefühlt größtes Leistungsspektrum aller CNAPs

Schwerpunkt auf Deployment von Apps (kann aber auch Docker Container)

Beste Runtime für Spring und Spring Boot

Schlüsselfertige Microservices mit Spring Cloud

Reichhaltiger Marktplatz für Services

Service Broker

Umfangreiches Monitoring

Automatische horizontal Skalierung (Autoscaler)

Volume Services für Stateful Apps

Unterstützung für viele Routing Protokolle

Page 22: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

22

Page 23: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

23

https://www.docker.com/what-container

Page 24: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

24

Infrastructure

Hypervisor

Guest OS

VM

Guest OS

Bins / Libs

App B

Infrastructure

Host OS

Docker

Container

Bins / Libs

App A

Container

Bins / Libs

App B

Infrastructure

Hypervisor

VM

Guest OS

Bins / Libs

App ABins / Libs

App A

Guest OS

Bins / Libs

App B

VM Docker VM + Docker

Page 25: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

25

Docker File

Docker Registry

Local Image Cache

BaseImage

Build

Bins/Libs

App

Image

Bins/Libs

AppPush Pull

Docker Host

Docker Daemon

Run

Image

Bins/Libs

App

Container

Bins/Libs

App

Environ-ment

Page 26: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

26

Docker Host

Container

Bins/Libs

App

Container File System

Stop

Container

Bins/Libs

App

Container File System

Container

Bins/Libs

App

Host File System

Docker Volume

Stop

Container

Bins/Libs

App

Host File System

Docker Volume

MappedVolume

MappedVolume

Page 27: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

27

Volume

Image

docker-compose

.ymlUp

Image

Bins/Libs

App

Volume

Docker Host

Container

Bins/Libs

App

Host File System

Docker Volume

MappedVolume

Container

Bins/Libs

App

Host File System

Docker Volume

MappedVolume

Network

Page 28: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

⚫ Docker Images können vererbt werden (Inheritance)

⚫ Docker Images sind immutable: Konfiguration bei Ausführung

⚫ Benötigte Ressourcen (CPU, RAM) können beschränkt werden

⚫ Virtuelles Netzwerk mappt interne Ports auf externe Ports

⚫ Maven-Plugins für Steuerung von Docker vorhanden

⚫ Unterstützung von Docker unter Windows verbesserungswürdig => auf Linux setzen

⚫ Best Practices für Docker beachten!

28

Page 29: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

29

Page 30: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

30

Java EE Application Server(Runtime Container)

Java EE Application (EAR/WAR)

Java EE Classic Spring Boot

Spring Boot Application (JAR)

Embedded Tomcat / Jetty / Netty(Runtime Container)

Page 31: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

31

Spring Boot

Spring Data

SQL DB NoSQL DB

Spring Cloud

SpringSecurity

Service Discovery

Service Binding

Resilience(Netflix OSS)

Cloud Connector

OAuth

OAuth2

Open ID Connect

RBAC

Auto ConfigActuator(Monitor)

ReactiveWebFlux

DevtoolsStarter Packs

… and all otherSpring features

CSRF Prevention

CORS Support

Page 32: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

32

Page 33: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

33

Page 34: FWP Aktuelle Technologien zur Entwicklung verteilter Java ...€¦ · Container im Cluster betrieben ⚫ Benötigte Laufzeitumgebung zusammen mit Applikation in Container verpackt

Michael TheisLehrbeauftragter Hochschule München

email [email protected] + 49 170 5403805web http://www.tschutschu.de/Lehrauftrag.html

34