SlideShare ist ein Scribd-Unternehmen logo
Es muss nicht
immer Kubernetes
sein
Microservice-Architekturen
on-premise betreiben
@kitenco1
Stephan Kaps
Leiter Softwareentwicklung Bundesamt für Soziale Sicherung
Gründer Java User Group Bonn
Java Entwickler & Architekt seit 2002
Weitere Schwerpunkte:
- Softwareentwicklungsprozesse
- BizDevSecOps
- OpenSource
- Speaker & Autor
@kitenco1
Wer sind wir uns was machen wir?
(Aufsichts-) Behörde mit ca. 600 Mitarbeiter
ca. 60 Fachanwendungen (Produkte)
für interne Fachbereiche & Landesprüfdienste
10 Entwickler und 2 Product Owner
2 parallele Sprints
noch einige Legacy VB/.NET Apps
@kitenco1
@kitenco1
Was ist eigentlich Legacy
Monolithisch
Veraltete Technologien
Groß und komplex
Schwer zu warten
Innovationen schwierig
@kitenco1
JBoss Wildfly
Ausgangs-Situation
APP
APP APP
APP
- Konfig Hölle
- Technologie Zwang
- Abhängigkeiten
- Einfluss auf Verfügbarkeit
@kitenco1
“5 Spring Boot Hello-World Services in einem
Kubernetes deployed, das ich mit Minikube
hier auf meinem Laptop laufen habe”
@kitenco1
Brauchst du es
@kitenco1
Kennst du die Anzahl der
User, die deine Dienste
nutzen werden?
@kitenco1
Bist du überhaupt im
Internet mit deinen
Diensten?
@kitenco1
Wie sieht eure aktuelle
Infrastruktur aus?
@kitenco1
Wie viel Zeit und Motivation werden
vor allem die Betriebsmitarbeiter
haben, um viele neue Technologien
(auf einmal) zu lernen?
@kitenco1
OK, warte …
Noch mal einen
Schritt zurück
@kitenco1
Was wollen wir eigentlich?
@kitenco1
Microservices!
Lasst es! Aber...
@kitenco1
- Modularity
- Information Hiding
- Loosely coupled
- Highly maintainable and testable
- Independently deployable
- Enables the continuous delivery/deployment of large, complex applications
- Enables an organization to evolve its technology stack
- Organized around business capabilities
Why Microservices?
@kitenco1
APP
DMS-
System
Zahlungs-
System
Verteilte Architekturen existieren ohnehin schon
@kitenco1
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
Domain Driven Design
@kitenco1
DDD Subdomains
core subdomains: das Kerngeschäft
supporting subdomains: unterstützende Funktionalitäten, die zwar mit der Business Logik verknüpft sind, die
jedoch leicht ausgelagert werden könnten in separate Microservices, um die Domäne von nicht zum Kern
gehörenden Code zu befreien. Beispiele dafür sind Referenz- oder Stammdatenverwaltungen, Protokollierungs-
und Kommentarfunktionen
generic subdomains: bereits gelöste Probleme, die für diverse Systeme immer gleich umgesetzt werden,
gehören nicht zum Kerngeschäft und können im einfachsten Fall hinzugekauft werden oder es existieren
entsprechende Open-Source-Projekte.
@kitenco1
APP
DMS-
System
Zahlungs-
System
Plz-Service
DMS-Service
ZS-Service
Anticorruption Layer
TBS-Service
Report-Service
XY-Service
Generic / supporting Subdomains
@kitenco1
Container
@kitenco1
1. Schritt: ein Node
@kitenco1
Docker Node
- Service A
- Service B
- Service C
- Service A = Port 30001
- Service B = Port 30002
- Service C = Port 30003
APP
@kitenco1
2. Schritt: noch ein Node
@kitenco1
Docker Node Docker Node
Consul Service Discovery
APP
@kitenco1
@kitenco1
Kaps - Es muss nicht immer Kubernetes sein
3. Schritt: Übersicht
@kitenco1
DEV STAGE PROD
@kitenco1
@kitenco1
@kitenco1
@kitenco1
@kitenco1
4. Schritt: Automatisierung
@kitenco1
@kitenco1
Requirements
● Version Control
● CI-Server
● Automated Tests
● Trunk-Based-Development
● Security Testing (SAST & DAST)
● Scripts for automating deployments
● Automate database changes
● Develop (scripted) Delivery Pipelines
● Unified Deployment
● Maybe organisational or cultural challenges
@kitenco1
Shared Responsibilities
Availability, Security and
Quality
&
@kitenco1
@kitenco1
Kaps - Es muss nicht immer Kubernetes sein
5. Schritt: Rund machen
@kitenco1
Alles in Container
Wildfly mit je einer Applikation
Infrastruktur
- Keycloak
- Jenkins
- ...
@kitenco1
Aktuelle Situation
Aufruf einer Anwendung mit
http://stage-docker-01.intern:12345/meine-app
Was stört hier? - kein https
- Servername muss bekannt sein
- Port muss bekannt sein
- URL muss auch so in Keycloak stehen
- bei Umzug muss alles angepasst werden
@kitenco1
Einheitliches Eingangstor
● Erzwingt https
● Versorgt die Aufrufe mit Zertifikaten
● Legt die erlaubten Routen fest
● Setzt automatisch alle Security Header an sämtliche Requests
● Macht ggf. Load-Balancing
● Kann den Consul Katalog auslesen
@kitenco1
https://portal.intern/meine-app
@kitenco1
Zusammenfassung
Neue Anwendung entwickeln:
- Projekt in Gitlab anlegen und Jenkinsfile erstellen
- Automatisches (einheitliches) Deployment
- Automatische Registrierung & Service-Discovery mit Consul
- Automatisches Routing & Load-Balancing in Traefik
- Automatische Observability
- Automatische Zertifikate, Policies und Micro-Segmentierung
Ausblick
@kitenco1
@kitenco1
Services erhalten Credentials aus Vault
Inter-Service-Kommunikation mit mTLS
Automatischer Austausch der
Zertifikate in kurzen Abständen
Einschränkung der Kommunikation
durch Policies
Layer-7-Observability & Traffic Mgmt.
Dynamisches Load-Balancing
Ausblick
leichtgewichtiger Orchestrator
- um Container zu verteilen
(dort wo Platz ist)
- der sich um das Port-Handling
kümmert
- Integration mit Consul & Vault
- (bedingtes) Skaling
@kitenco1
Neue Herausforderungen
Einführung einer Container Registry (Harbor inkl. Scans & Notary)
Regelmäßige Updates für Werkzeuge (Automatisierung)
Ressourcenverbrauch überwachen und ggf. optimieren
Container Security (CSVS und CIS-Benchmark)
@kitenco1
Key takeaways
@kitenco1
Aufbau einer “Private Cloud” aus einzelnen
(OpenSource) Komponenten ist möglich
@kitenco1
Evolving architecture verschafft Zeit
zum Lernen
@kitenco1
Je ein (OpenSource) Tool für jede
spezielle Aufgabe
@kitenco1
stay curious!
@kitenco1
Vielen Dank!
Kontakt:
Stephan Kaps
info@kitenco.de
www.kitenco.de
@kitenco1
https://www.xing.com/profile/Stephan_Kaps2
https://www.linkedin.com/in/stephan-kaps-b246b0ab/
http://de.slideshare.net/kitenco
Quelle aller Hintergrundgrafiken ist https://www.pixabay.com
https://open.spotify.com/album/2tHppzsY0ZPb57Xa7PRkEX

Weitere ähnliche Inhalte

PDF
In den sicheren Hafen jax2020
PDF
Kaps - Continuous Deployment Roadmap
PDF
DevOps - Mehr Geschwindigkeit auf der Schiene
PDF
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
PDF
Per Anhalter zu Cloud-nativen API Gateways
PDF
Kubernetes ist so viel mehr als ein Container Orchestrierer
PDF
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
PDF
DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps
In den sicheren Hafen jax2020
Kaps - Continuous Deployment Roadmap
DevOps - Mehr Geschwindigkeit auf der Schiene
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Per Anhalter zu Cloud-nativen API Gateways
Kubernetes ist so viel mehr als ein Container Orchestrierer
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
DevOpsCon 2016 - Continuous Security Testing - Stephan Kaps

Was ist angesagt? (20)

PDF
Making the internet faster HTTP/3 und QUIC
PDF
Der Status Quo des Chaos Engineerings
PDF
Enterprise Cloud Native ist das neue Normal
PDF
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
PDF
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
PDF
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
PDF
Softwerkskammer Chemnitz Special Pecha Kucha Night
PDF
Dataservices - Data Processing mit Microservices
PDF
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
PDF
OpenShift-Build-Pipelines: Build ► Test ► Run!
PPTX
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
PDF
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
PPTX
Continuous Delivery
PDF
Migration zum Zend Framework 3
PDF
Technische Gründe für schlechte Entwicklungsperformance
PDF
Composer und TYPO3
PPTX
Tipps und Tricks im Umgang mit Docker
PPTX
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
PDF
Title is loading ... Cache is cold.
PDF
Quarkus Quickstart
Making the internet faster HTTP/3 und QUIC
Der Status Quo des Chaos Engineerings
Enterprise Cloud Native ist das neue Normal
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Softwerkskammer Chemnitz Special Pecha Kucha Night
Dataservices - Data Processing mit Microservices
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
OpenShift-Build-Pipelines: Build ► Test ► Run!
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery
Migration zum Zend Framework 3
Technische Gründe für schlechte Entwicklungsperformance
Composer und TYPO3
Tipps und Tricks im Umgang mit Docker
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
Title is loading ... Cache is cold.
Quarkus Quickstart
Anzeige

Ähnlich wie Kaps - Es muss nicht immer Kubernetes sein (10)

PDF
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
PDF
A Hitchhiker's Guide to the Cloud Native Stack
PDF
Per Anhalter durch den Cloud Native Stack. #SEACONHH
PDF
Jug nbg containerplattform dcos
PPTX
Kubernetes is not universal tool , limit
PDF
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
PDF
Per Anhalter zu Cloud Nativen API Gateways
PDF
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
PDF
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
PDF
Per Anhalter durch den Cloud Native Stack (extended edition)
A Hitchhiker’s Guide to the Cloud Native Stack. #ContainerConf
A Hitchhiker's Guide to the Cloud Native Stack
Per Anhalter durch den Cloud Native Stack. #SEACONHH
Jug nbg containerplattform dcos
Kubernetes is not universal tool , limit
Auf gehts in die Cloud: „Das kann doch nicht so schwer sein!“
Per Anhalter zu Cloud Nativen API Gateways
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017
Per Anhalter durch den Cloud Native Stack (extended edition)
Anzeige

Kaps - Es muss nicht immer Kubernetes sein