Nanoservice
Architekturen
Leo Lindhorst
Consultant Softwareentwicklung
leo.lindhorst@saxsys.de
Monolith
• Einfach zu konstruieren
• Einfach zu deployen und zu betreiben
• Wiederverwendung von Implementierungen einfach
Aber…
• Kann unüberschaubar werden & interne
Abhängigkeiten leicht möglich
• Eine Technologie für die gesamte Anwendung
• Keine gezielte Skalierung möglich
• Kein abgegrenztes Deployment von Änderungen
möglich
Microservices
• Überschaubarere und isolierte Einheiten
• Individuelle Technologien möglich
• Können unabhängiger entwickelt werden
• Unabhäniges Deployment & Skalierung möglich
Aber…
• Betrieb & Deployment komplexer
• Höherer Kommunikationsaufwand
• Wiederverwendung von
Implementierungen schwieriger
Nanoservices?
Noch kleinere
Einheiten?
Aber?
• Betrieb & Deployment zu komplex?
• Zu viel Overhead?
• Übersichtlichkeit?
• Wiederverwendung von Querschnittsaspekten?
Nanoservices
Serverless
&
• Viele kleine Komponenten
• Häufiges Erstellen neuer Komponenten
• Häufige Aktualisierung der
Komponenten
• Abdeckung sehr kleiner
Anwendungsfälle
• Geringer Betriebsaufwand
• Viele Querschnittsaspekte von
Plattform implementiert
• Einfache Erstellung neuer
Komponenten
• Einfache unabhängige Aktualisierung
der Komponenten
• On-Demand Execution & Pricing
Domain
Daten
Nanoservice
Nanoservice
Nanoservice
Nanoservice
Domain
Daten
Nanoservice
Nanoservice
Nanoservice
Nanoservice
Nanoservice Architektur
Domain
Daten
Nanoservice
Nanoservice
Nanoservice
Nanoservice
APIGateway
Auth
Events
Nanoservice Nanoservice
Nanoservice Architektur
Workflow-Engine
Warum?
Kleine Komponenten sind extrem übersichtlich und einfach zu verstehen
Jeder Aspekt kann in der geeignetsten Technologie implementiert werden
Deployment-Artefakte kleiner —> Geringeres Risiko
Geringe Hürde zur Erstellung neuer Subsysteme
Umsetzung - Ein Ansatz
Technologien
Externe API
Service
Implementierung
Peristenz Kommunikation Komposition
Authentifizierung &
User Management
Managed API
Gateway
Functions as a Service
Serverless Datenbank | BLOB
Storage
Message Bus Workflow-Engine
User Management
Service
AWS API Gateway,
Azure Functions
Proxy,

Google Cloud
Endpoints
AWS Lambda,

Azure Functions,

Google Cloud
Functions
AWS DynamoDB / Aurora | S3,

Azure CosmosDB | Storage,

Google Cloud Firestore |
Storage

AWS SNS,

Azure Service Bus,

Google Cloud Pub/
Sub
AWS StepFunctions,

Azure Logic Apps
AWS Cognito,

Azure Active
Directory
Umsetzung - Ein Ansatz
CD & Infrastructure as Code
Infrastructure as Code (IaC):
• Effizientes Deployment
• Gruppierung der Ressourcen —> Übersicht
• Versionierung und Reproduzierbarkeit der Konfiguration
Continuous Delivery:
• Effizientes Deployment
• Sicherstellung eines aktuellen Deployments—> Übersicht
• Automatische Durchführung von Tests
AWS CloudFormation,
Azure Resource Manager,
Google Cloud Deployment Manager,
HashiCorp Terraform
AWS CodePipeline/-Commit/-Build,
Azure VSTS,
Jenkins,
Jetbrains TeamCity
Umsetzung - Ein Ansatz
Deploymentstrukur
Umsetzung - Ein Ansatz
Projektstruktur
Umsetzung - Ein Ansatz
Projektstruktur
Build CI IaC
Build & Dependencies
Code
NanoserviceA
Build & Dependencies
Code
NanoserviceB
…
Umsetzung - Ein Ansatz
Testing
Unit-Tests
Integrations-Tests
System-Tests
e2e-Tests
Demo
github.com/serverless-shop-example
Aber…
Viele lose gekoppelte Komponenten —> Übersicht & Debugging schwieriger
Vendor Lock-In bei Serverless-Diensten
Junges Konzept —> Wenig Best-Practices & Tooling
System-Tests aufwendig umzusetzen
Leo Lindhorst
Consultant Softwareentwicklung
Nanoservices - Fazit
leo.lindhorst@saxsys.de
• Können die Entwicklung von komplexen Cloud Projekten
unterstützen
• Benötigen eine geeignete technologische Basis, z.B.
Serverless Technologien
• Konzept entwickelt sich noch —> Noch keine Lösungen für
alle Problemstellungen
TWITTER, TWEET, RETWEET and the Twitter logo are trademarks of Twitter, Inc. or its affiliates. LinkedIn, the LinkedIn logo, the IN logo and InMail are registered trademarks or trademarks of LinkedIn Corporation and
its affiliates in the United States and/or other countries. GITHUB®, the GITHUB® logo design, OCTOCAT® and the OCTOCAT® logo design are exclusive trademarks registered in the United States by GitHub, Inc.

Nanoservice Architekturen

  • 1.
  • 2.
  • 3.
    Monolith • Einfach zukonstruieren • Einfach zu deployen und zu betreiben • Wiederverwendung von Implementierungen einfach Aber… • Kann unüberschaubar werden & interne Abhängigkeiten leicht möglich • Eine Technologie für die gesamte Anwendung • Keine gezielte Skalierung möglich • Kein abgegrenztes Deployment von Änderungen möglich
  • 4.
    Microservices • Überschaubarere undisolierte Einheiten • Individuelle Technologien möglich • Können unabhängiger entwickelt werden • Unabhäniges Deployment & Skalierung möglich Aber… • Betrieb & Deployment komplexer • Höherer Kommunikationsaufwand • Wiederverwendung von Implementierungen schwieriger
  • 5.
    Nanoservices? Noch kleinere Einheiten? Aber? • Betrieb& Deployment zu komplex? • Zu viel Overhead? • Übersichtlichkeit? • Wiederverwendung von Querschnittsaspekten?
  • 6.
    Nanoservices Serverless & • Viele kleineKomponenten • Häufiges Erstellen neuer Komponenten • Häufige Aktualisierung der Komponenten • Abdeckung sehr kleiner Anwendungsfälle • Geringer Betriebsaufwand • Viele Querschnittsaspekte von Plattform implementiert • Einfache Erstellung neuer Komponenten • Einfache unabhängige Aktualisierung der Komponenten • On-Demand Execution & Pricing
  • 7.
  • 8.
  • 9.
    Warum? Kleine Komponenten sindextrem übersichtlich und einfach zu verstehen Jeder Aspekt kann in der geeignetsten Technologie implementiert werden Deployment-Artefakte kleiner —> Geringeres Risiko Geringe Hürde zur Erstellung neuer Subsysteme
  • 10.
    Umsetzung - EinAnsatz Technologien Externe API Service Implementierung Peristenz Kommunikation Komposition Authentifizierung & User Management Managed API Gateway Functions as a Service Serverless Datenbank | BLOB Storage Message Bus Workflow-Engine User Management Service AWS API Gateway, Azure Functions Proxy, Google Cloud Endpoints AWS Lambda, Azure Functions, Google Cloud Functions AWS DynamoDB / Aurora | S3, Azure CosmosDB | Storage, Google Cloud Firestore | Storage AWS SNS, Azure Service Bus, Google Cloud Pub/ Sub AWS StepFunctions, Azure Logic Apps AWS Cognito, Azure Active Directory
  • 11.
    Umsetzung - EinAnsatz CD & Infrastructure as Code Infrastructure as Code (IaC): • Effizientes Deployment • Gruppierung der Ressourcen —> Übersicht • Versionierung und Reproduzierbarkeit der Konfiguration Continuous Delivery: • Effizientes Deployment • Sicherstellung eines aktuellen Deployments—> Übersicht • Automatische Durchführung von Tests AWS CloudFormation, Azure Resource Manager, Google Cloud Deployment Manager, HashiCorp Terraform AWS CodePipeline/-Commit/-Build, Azure VSTS, Jenkins, Jetbrains TeamCity
  • 12.
    Umsetzung - EinAnsatz Deploymentstrukur
  • 13.
    Umsetzung - EinAnsatz Projektstruktur
  • 14.
    Umsetzung - EinAnsatz Projektstruktur Build CI IaC Build & Dependencies Code NanoserviceA Build & Dependencies Code NanoserviceB …
  • 15.
    Umsetzung - EinAnsatz Testing Unit-Tests Integrations-Tests System-Tests e2e-Tests
  • 16.
  • 17.
    Aber… Viele lose gekoppelteKomponenten —> Übersicht & Debugging schwieriger Vendor Lock-In bei Serverless-Diensten Junges Konzept —> Wenig Best-Practices & Tooling System-Tests aufwendig umzusetzen
  • 18.
    Leo Lindhorst Consultant Softwareentwicklung Nanoservices- Fazit leo.lindhorst@saxsys.de • Können die Entwicklung von komplexen Cloud Projekten unterstützen • Benötigen eine geeignete technologische Basis, z.B. Serverless Technologien • Konzept entwickelt sich noch —> Noch keine Lösungen für alle Problemstellungen TWITTER, TWEET, RETWEET and the Twitter logo are trademarks of Twitter, Inc. or its affiliates. LinkedIn, the LinkedIn logo, the IN logo and InMail are registered trademarks or trademarks of LinkedIn Corporation and its affiliates in the United States and/or other countries. GITHUB®, the GITHUB® logo design, OCTOCAT® and the OCTOCAT® logo design are exclusive trademarks registered in the United States by GitHub, Inc.