Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Gesche Zimmermann Geändert vor über 5 Jahren
1
Virtualisierung von Web-Applikationen mit Docker
Seminarvortrag von Alex Besteher Am Beispiel von „shared-data“
2
Inhaltsverzeichnis Motivation Grundlagen Umsetzung Fazit
3
1. Motivation
4
Motivation halo Noc-Portal
5
Motivation Bisher: geteilte ressourcen
bei fehlern werden andere Applikationen beeinflusst
6
Motivation Mit Docker: Ressourcen an Container gebunden
7
Motivation Bisher:
8
Motivation Mit Docker:
9
Motivation Bisher:
10
Motivation Mit Docker: Noc-Portal
11
2. Grundlagen
12
Grundlagen Ruby on Rails Gems Ruby: Programmiersprache, Interpreter
Rails: Webframework Implementiert Model-View-Controller Pattern Gems Ruby-Erweiterungen Installiert per bundler Gemfile: listet Quellen und zu installierende Gems
13
Grundlagen „Shared Database“ Background-Job
Applikation zur Speicherung von Preislisten/Rahmenverträgen Listet für mehrere Hersteller Geräte, Preise, Beschreibungen, … Kernstück: Einlesefunktion für Excel-Dokumente Einlesen ist in den Hintergrund ausgelagert Background-Job Ruby-Gem zum Ausführen von Prozessen im Hintergrund Liest Prozessinformationen aus Datenbank Worker-Thread liest Datenbank aus Applikation die für die containerisierung verwendet wurde Speichert gerätedaten Preise/beschreibungen/modellnummern/kategorisierung/rabattsätze Konfigurationsmöglichkeiten wie Filter, Herstellerinformationen, Kategorien Wichtigste Funktion: Excel-Dokumente einlesen Problem: groß! 1,6mio Zeilen Web-App -> User müsste waren In Background-Job ausgelagert Gem zum ausführen im hintergrund Liest Prozessinformationen aus Datenbank
14
Grundlagen Git Capistrano Versionsverwaltungssystem
Code auf mehreren Plattformen bearbeiten Capistrano Ruby-Gem zum Deployment ssh-Zugriff auf Noc-Portal Erlaubt Erstellen eigener Befehle Verteiltes Versionsverwaltungssystem Erlaubt arbeiten unabhängig von einander Speichert nur Änderungen gegenüber der alten Version „merge“ statt überschreiben Capistrano ist ein Gem ssh(secure shell)-Verbindung zum Server Führt in configfile definierte befehle aus
15
Grundlagen Apache, Nginx und Passenger Apache, Nginx sind Web-Server
Lauschen auf http-Requests Antworten mit statischen Dateien HTML, Bilder, … Problem: Ruby-Code in html-Dateien Passenger erzeugt statische Dateien für Webserver Apache hat mehr Features als Nginx Nginx ist aber schneller apache/nginx = webserver Antworten mit statischen dateien Serverseitige anpassung je nach situation/nutzer Passenger als aufsatz auf apache/nginx um ruby-code zu interpretieren Liefert dann statische html-dokumente Nginx hat weniger features ist aber schneller Fürs erste Nginx im Container Eventuell statt dessen Apache sollten Features wichtig werden
16
Grundlagen Docker Docker-Compose „lightweight virtualization“
Image wird aus Dockerfile erstellt Docker startet Image als Container „one Thread per Container“ Docker-Compose Erweiterte Containerverwaltung Multi-Container-Applikationen docker-compose.yml Nutzung: Dockerfile Gibt Anweisungen wie der Container zu erstellen ist Extra thread für background-job Features zur Containerverwaltung Besonders für Multi-Container-Applikationen docker-compose.yml, xml-Format Beispiele später
17
3. Umsetzung
18
Umsetzung Arbeitsplatz noc-portal $ cap docker:init log halo
19
Umsetzung Arbeitsplatz noc-portal halo $ cap docker: build_application
log halo Applikations-Dockerfile
20
Umsetzung Applikations-Dockerfile
21
Umsetzung Arbeitsplatz noc-portal halo $ cap docker:
build_background_job log tmp halo Background-Job-Dockerfile
22
Umsetzung Arbeitsplatz noc-portal halo $ cap docker: run_container log
tmp halo
23
Umsetzung docker-compose.yml
24
Fazit Umsetzung durch Container ausführbar
Beim ausführen sieht man: [nächste folie]
25
Fazit Fazit: funktioniert, keine bugs
Viele spezielle anforderungen zu behandeln Skalierung, verwaltung, wartung
26
Ende Danke Fragen?
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.