-
Notifications
You must be signed in to change notification settings - Fork 0
Container & Execution Environment (Axel Burghof)
Der Hauptunterschied von Containern zu virtuellen Maschinen ist, dass nur ein Prozessbaum beschrieben wird und kein komplettes Betriebssystem. Dadurch kann ein schnelles Start/Stop Verhalten erreicht werden. Es können also viele kleine containerisierte Anwendungen auf einer Maschine und einem Betriebssystem betrieben werden.
Elemente von Docker:
- dockerfile: Datei, die die Umgebung definiert
- image: Datei, bei deren Ausführung ein Docker Container entsteht. Auch in Produktionsumgebungen einsetzbar, wenn sorgsam spezifiziert.
- name spaces: Ermöglicht die Einschränkung von sichtbaren Objekten bzw. dem Zugriff auf Systemressourcen für Prozesse.
- union file system: Virtuelles Dateisystem, mit dem mehrere Images übereinander gelegt werden können.
- control groups: dienen dazu Speicher/Rechenleistung/Netzressourcen zu begrenzen
Ein Vorteil ist, dass Images für verschiedene Anwendungen (bspw. mongoDB, postgres, mysql) bereits existieren und über DockerHub einfach gepullt und verwendet werden können. Es ist in unserem Projekt sinnvoll eine Containerlösung zu verwenden.
DevOps verbindet die Entwicklung und IT-Operations. Dabei wird ein iterativ-inkrementelles Modell verfolgt, das aus Plan, Build, CI, Deploy, Operate und Continious Feedback besteht. CI beschreibt eine häufige Integrierung der Arbeit der Entwickler, die durch einen automatisierten Build verifiziert wird. Für die Automatisierung wird eine CI/CD Pipeline verwendet, die definiert wie die CI/CD abläuft. Es können Pipelines und Docker verwendet werden, um beispielsweise Versionskonflikten zu entgehen (Es muss nur das Image auf dem Server gebaut werden). Daher sollen die Docker Images in der Entwicklung, beim Testen und in der Ausführung dieselben sein.
Um mehrere Services an einem Stück zu betreiben ist eine automatisierte Skalierung notwendig. Dafür bieten sich Technologien zur Orchestrierung, wie Docker Swarm oder Kubernetes an. Kubernetes hat hier im Vergleich zu Docker den Vorteil, dass es unabhängig von Technologien und Anbietern nutzbar ist. Außerdem hinkt die Entwicklung von Docker Swarm der von Kubernetes hinterher und bewegt sich in die Richtung von Kubernetes.
Es ist allerdings unwahrscheinlich, dass Container Orchestrierung im Rahmen des Projektes relevant wird.
- Exakt ein Microservice in je einem Container, der die Ablaufumgebung beschreibt. So kann ein Dienst unabhängig von anderen skalierbar gemacht werden.
- Davon abzuweichen und Subdomänen in einem Container zusammenzufassen, macht nur dann Sinn, wenn diese wirklich gleich skalieren.
- Datenbanken in Container auslagern.
- Falls nötig: Ergänzung durch VM beispielsweise für altbackene nicht für Cloud gebaute Software, wie eine umfangreiche Oracle-Datenbank, die schlecht in einem Container unterzubringen ist.
- Home
- Microserviceübergeifende Dokumente
- Einzelne Microservice Dokumentationen
- Nachbereitung von Gastvorträgen & Workshhops
- REST beyond the obvious (Oliver Drotbohm)
- How to scale Monoliths (Ansgar-Brauner)
- Container & Execution Environment (Axel Burghof)
- Eventing mit Kafka (Sebastian Gauder)
- Workshop mit Studenten der sozialen Arbeit
- Micro Frontends (Wolf Schlegel, Niko Hellwig)
- Monolith vs Microservice (Christian Nockemann)
- Resilience, Monitoring, Logging and Disaster Recovery Strategies (Marion Bruns, Komal Ahluwalla)
- Challenges in the Field of Dynamic UI Composition for Microservices (Christian Fröhlingsdorf)
- 8 things a developer should know about microservices (Wolf Schlegel, Laura Ionescu, Felix Hammerl)