DevOps Essentials 2019, Darmstadt: Vortrag von Mario-Leander Reimer (@LeanderReimer, Cheftechnologe bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Abstract: Der Einsatz Cloud-nativer Technologien gehört in vielen deutschen Unternehmen mittlerweile zur Normalität. Großartig! Doch bei aller Liebe zur Technologie beobachte ich momentan bei vielen Teams und Kunden einen gewissen Grad an Ernüchterung bis hin zu Zweifeln und teilweise immer noch großen Vorbehalten, was den Einsatz moderner Tools und Techniken angeht.
Mit steigender Verbreitung gibt es naturgemäß vermehrt negative Erfahrungen und auch Fehlschläge. Das ist ganz normal.
Mit diesem Vortrag möchte ich die Teilnehmer dazu ermutigen, das Gelernte in ihre Unternehmen und Projekte zu tragen und sich von den Zweiflern nicht beirren zu lassen. Nur so können die Prozesse, Tools und Technologien weiter reifen. Klar: Es gibt viel Raum für Verbesserungen. Das sieht auch die Community. Um so wichtiger ist es, die aktuellen Trends und Neuerungen kontinuerlich im Auge zu behalten.
Schlanke Entwickler-Tools und Ansätze wie Knative, Skaffold oder Jib bringen neue Abstraktionen, um die Entwicklung einfacher und schneller zu machen. Die zahlreichen FaaS und Serverless-Frameworks sowie das steigende Angebot an Managed-Cloud-Infrastruktur-Services versuchen, die Verbauungstiefe von Softwaresystemen deutlich zu reduzieren und den Betrieb zu vereinfachen. Don't do it yourself heißt in Zukunft die Devise. Cloud-native Security und Governance gewinnen im Enterprise-Umfeld und speziell bei regulierten Unternehmen immer mehr an Bedeutung, die passenden Standards, Tools und Technologien lassen nicht lange auf sich warten. Es bleibt also spannend und es gibt viel zu lernen.
30. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Gartner Hype Cycle for Cloud Computing, 2018
30
https://www.computerwoche.de/i/detail/artikel/3546147/1/3245986/EL_mediaN1005C/
31. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Nicht schön. Hat aber funktioniert.
31
Ein Monolith
Komponente
A
Komponente
T
Komponente
?
32. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Definitiv keine gute Idee!
32
Microservice
A
Microservice
T
Microservice
?
33. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Fachlichkeit
an erster Stelle
33
34. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Hands-on Event Storming.
Event storming is a workshop-based interactive method
for rapidly identifying the key concepts and boundaries
in a business domain and aligning a variety of stake-
holders in the best way to slice potential solutions. The
basic idea is to bring together software developers and
domain experts and learn from each other. The business
process is "stormed out" as a series of domain events
which are denoted as sticky notes on a wide wall. It was
invented by Alberto Brandolini in the context of domain-
driven design (DDD).
34
https://www.thoughtworks.com/radar/techniques/event-storming
35. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware35
Domain Event
An event that occurs in the business process. Written in past tense.
Issue
An issue or question that needs to be clarified and resolved.
Business Process
Processes commands according to business rules. Creates 1..* domain events.
Aggregate
Cluster of domain objects that can be treated as a single unit.
Command
A command executed on an aggregate that results in the creation of a domain event.
External System
A third-party service provider such as a payment gateway or shipping company.
View
A view that users interacts with to carry out a task in the system.
1.Domain Event Storming
Domain Events in Vergangenheitsform auf Post-Its
schreiben. Chronologisch anordnen.
2.Story Telling
Moderiert durch den Prozess führen. Post-Its neu
anordnen, Duplikate entfernen.
3.Functional Refinement
Suchen und finden von fachlichen Kontexten und
Sollbruchstellen in den Prozessen
4.Technical Refinement
Weitere Unterteilung. Mögliche Indikatoren: Size,
Isolation, Speed, Redundanz
36. picture alliance / United Archive
8 Fallacies of Distributed Systems
1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn’t change
6. There is one administrator
7. Transport cost is zero
8. The networks is homogeneous
37. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
1. The network is reliable
Problem: Netzwerk-Aufrufe werden fehlschlagen.
• Circuit Breaker und Retries sind eine Lösung, aber oft ein Pflaster.
• Service Meshes können helfen, bringen aber zusätzliche Komplexität und
Overhead. Istio, Linkerd, et.al. -> Service Mesh Interface (SMI)
• Nutze Event-driven Architecture (EDA) für lose gekoppelte Systeme. Neue
Herausforderungen: Protokolle, Delivery Garantien, Message-Codierung
• Zahlreiche spannende CNCF Projekte z.B. CloudEvents, OpenMessaging
37
https://landscape.cncf.io/category=streaming-messaging&format=card-mode&license=open-source
38. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
2. Latency is zero
Problem: Netzwerk-Aufrufe haben eine Verzögerung. Das n+1 Problem.
• Schicke alle benötigten Daten mit möglichst wenigen (1) Requests.
• Es gibt Alternativen zu REST: GraphQL, effiziente Binärprotokolle, gRPC.
• Umsetzung von B4F und API-Gateway Patterns zur Server-side Daten-Aggregation.
• Inversion of Control: Nutzung von Pub/Sub Mechanismen, Server-sent Events, Web
Sockets, Local Storage
• Die Daten müssen näher zum Client. Nutzung von Availability Zones, Content Delivery
Networks und intelligentes Caching.
38
https://landscape.cncf.io/category=remote-procedure-call&format=card-mode&license=open-source
39. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
4. The network is secure
Problem: Das Netzwerk ist unsicher.
„Running workloads in the cloud is easy - doing it securely and in a compliant way is hard.“
• Security by Design -> Continuous Security -> Continuous Compliance.
• Layered-Security Ansatz: Absicherung auf Netzwerk, Infrastruktur, Plattform und
Anwendungsebene. Free eBook.
• 4C’s of Cloud Native Security: Cloud, Cluster, Container, Code.
https://kubernetes.io/docs/concepts/security/overview/
• Nutzung von Distroless Images. https://github.com/GoogleContainerTools/distroless
• Zero Trust per Default: mTLS zwischen Services per Service Mesh und SPIFFE.
• Compliance per GitSec und Phylake -> Open Policy Agent (OPA), Kubernetes, Istio, Falco
39
https://landscape.cncf.io/category=security-compliance&format=card-mode&license=open-source
40. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
5. Topology doesn’t change
Problem: Netzwerk Topologien ändern sich ständig.
• Abstraktion der physischen Netzwerk-Struktur. Nutzung von DNS oder
Discovery Services.
• Cloud-native API Gateways sorgen für zusätzliche Location Transparency.
• Cattle, not pets. Treat Clusters Like Cattle. Immutable Infrastructure.
• Regelmäßige Chaos-Tests zur Überprüfung der Robustheit: Netflix Chaos
Monkey, kube-monkey, Chaos Toolkit, Gremlin, …
40
https://landscape.cncf.io/category=chaos-engineering&format=card-mode&license=open-source
41. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
6. There is one administrator
Problem: Diese 1 Person die alles weiß gibt es nicht.
• Jeder im Team ist für den Release Prozess verantwortlich. Frühzeitiges involvieren aller
beteiligten Stakeholder. DevOps.
• Klare Definition der DevOps-Topologie, Rollen, Verantwortlichkeiten, SLOs und SLAs.
• Manuelle Änderungen an der Infrastruktur sind tabu! GitOps heißt das Stichwort!
• Weave Flux: https://github.com/weaveworks/flux
• Automatisierte CI/CD Pipeline: Knative Build, Spinnaker, Drone, GitLab, JenkinsX, …
• Seales Secrets: https://github.com/bitnami-labs/sealed-secrets
41
https://landscape.cncf.io/category=continuous-integration-delivery&format=card-mode&license=open-source
42. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware42
DevOps Anti-Type, e.g. DevOps Team Topologies, e.g.
https://web.devopstopologies.com
DevOps Team Silo
Dev Don’t Need Ops
Rebranded SysAdmin
Dev and Ops Collaboration Fully Shared Ops Responsibilities
SRE Team (Google Model) DevOps Advocacy Team
Ops as Infrastructure-as-a-Service DevOps as External Service
43. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Optimiert die
Cloud Native DevEx
eurer Teams!
43
44. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware44
vs.
https://www.datawire.io/guide/development/development-environments-microservices/
45. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Zahlreiche Tools versuchen den Inner Development
Loop effizienter und einfacher zu machen.
• The Rise of the IDE: Plugins, Plugins, Plugins. Beispiele: Cloud Code,
OpenShift Extension
• Squash ermöglicht das einfache Remote-Debugging von laufenden
Microservices in Kubernetes und OpenShift aus der IDE heraus.
• Skaffold für Continuous Development.
Vereinfacht den Entwickler-Workflow und
kombiniert die einzelnen Phasen in einem
einfachen Kommando: skaffold dev
45
46. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Telepresence verspricht schnelle lokale Entwicklung
für Kubernetes und Openshift Microservices.
46
Laptop
Source Code
Lokaler
Service
TelepresenceClient
IDE
Remote Kubernetes Cluster
TelepresenceProxy
Service A
Service B
Database
Queue
https://www.telepresence.io
2-way
Network
Proxy
47. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Serverless
ist die nächste logische Evolution im
Cloud Native Software Engineering.
47
48. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
–https://landscape.cncf.io/
„Serverless computing refers to a new model of
cloud native computing, enabled by architectures
that do not require server management to build and
run applications. It leverages a finer-grained
deployment model where applications, bundled as
one or more functions, are uploaded to a platform
and then executed, scaled, and billed in response to
the exact demand needed at the moment.“
48
49. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware49
Funktionen
sind das bevorzugte
Programmiermodell
von Serverless
Applikationen.
50. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware50
51. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
Knative, Riff und Kyma auf den Radar.
• Knative
• Build für Cloud-native Source-to-Container Orchestrierung.
• Serving für ein Scale-to-Zero Request Drive Compute Model auf Basis von Istio.
• Eventing stellt Basisfunktionen für Event Sources und Consumer bereit
• Project Riff
• Integriert essentielle FaaS Plattform Infrastruktur Komponenten und stellt diese bereit.
• Derzeit v0.3.0. Setzt auf Knative auf und kombiniert es mit Cloud Native Build Packs.
• Kyma
• Ausgewachsene Serverless Plattform mit vielen Komponenten. Derzeit v1.1.0
• Service Mesh, Knative, Service Broker, Event Bus, API Gateway, Diagnosability, Security, …
51
52. • 1st und 2nd Generation Platforms.
• Ermöglichen sanften Einstieg und Hybrid-
Architekturen für ausgewählte Use Cases.
• Fission ist eine schnelle, vollständige
Plattform für viele Sprachen.
• Nuclio ist super schnell, mit kleinem Footprint
und vielen Triggern.
• OpenFaaS ist super populär. Aktive
Community. Schnell. ARM Support.
• Kubeless ist sehr einfach und leichtgewichtig.
https://github.com/lreimer/the-big-faas-lebowski
53. | DevOps Essentials 2019 | Enterprise Cloud Native ist das neue Schwarz | @LeanderReimer #cloudnativenerd #qaware
In a Nutshell …
• Der saubere fachliche Schnitt von Cloud Nativen Anwendungen steht an erster Stelle.
Event Storming hat sich als hilfreiche Methode bewährt.
• Kenne die 8 Fallacies of Distributed Systems und ihre Implikationen.
• Cloud native API Gateways und Service Meshes sind wichtige und hilfreiche
Infrastruktur Bausteine.
• Security by Design, Continuous Security und Continuous Compliance sind komplexe
aber wichtige Themengebiete!
• Optimiert die Cloud Native DevEx eurer Teams und den Inner Dev Loop für mehr
Produktivität und glückliche Entwickler.
• Serverless ist die nächste logische Evolution im Cloud Native Software Engineering.
53