Skip to content Skip to main navigation Skip to footer

Entwicklung

Komponenten der VereinsManager-App

Die Abhängigkeiten wurde auf ein Minimum beschränkt, um den Wartungsaufwand gering zu halten und die Stabilität und Sicherheit der Anwendung zu sichern

  • Python 3.12 als Programmiersprache und Laufzeitumgebung
  • Django 5 als Applikations-Framework gemäß dem Model-View-Template Paradigma (Paket: Django)
  • Django Tenants: mit diesem Paket wird die und das die Mandantenfähigkeit ermöglicht (Paket: django-tenants)
  • Django Import-Export für den Import und Export von Tabellen in der Admin Oberfläche (Paket: django-import-export)
  • Django DB-Logger, um mandanten-spezifisch Logeinträge in Datenbank-Tabellen abzulegen (Paket: django-db-logger)
  • Django Debug Toolbar für Fehleranalyse und Performance-Optimierungen in der Entwicklung (django-debug-toolbar)
  • PostgreSQL als Datenbank, die Datenbank-Schemata unterstützt, was Voraussetzung für Django Tenants ist (PostgreSQL)
  • Bootstrap 5 für eine moderne, responsive Darstellung im Webbrowser auf beliebigen Endgeräten (Bootstrap)
  • HTMX für ein performantes und interaktives User-Interface (HTMX)
  • Gunicorn als Python WSGI HTTP Server für Unix
  • Whitenoise als Server für statische Dateien
  • Traefik als Reverse Proxy
  • Cloudflare als DNS-Server und SSL Zertifikatsmanager

Weitere Abhängigkeiten bestehen nicht. Die aktuell verwendeten Versionen der Pakete gehen aus der Datei requirements.txt hervor. Alle Komponenten unterliegen der Open Source und können somit ohne Lizenzkosten genutzt werden.

Alle Komponenten unterliegen der Open Source und können somit ohne Lizenzkosten genutzt werden. Lediglich Cloudflare erfordert eine Gebühr für die Bereitstellung von mehrstufigen SSL-Zertifikaten.

Entwicklungsumgebung

Für die Entwicklungsarbeit, das Debugger und auch für den Betrieb der Produktiv-Instanzen hat sich Visual Studio Code bewährt. Die empfohlene Entwicklungsumgebung sieht wie folgt aus:

  • Visual Studio Code mit den folgenden Erweiterungen:
    • Python (Microsoft)
    • Docker
    • GitHub Copilot (kostenpflichtig)
    • PostgreSQL
    • Remote Explorer und Remote SSH für den einfachen Zugriff auf gehostete Linux-Instanzen
    • zusätzliche optionale Erweiterungen:
      • Prettier
      • Python Environment Manager
      • Todo Tree
      • XML
  • Docker Desktop wird eingesetzt für
    • eine BuildX Instanz für das bauen des VereinsManager Docker Images
    • PostgreSQL Instanz als Entwicklungs-Datenbank für VereinsManager

Source Control und Dev-Ops

VereinsManager wird in einem privaten Git-Repository verwaltet. Folgende Repos gehören dazu:

  • tmeigen/VereinsManager: in diesem Repo befindet sich der VereinsManager Source-Code
  • tmeigen/vmstack.prod: enthält im Wesentlichen die Docker Compose Dateien für die verschiedenen VereinsManager Instanzen, die Homepage, den Reverse Proxy. Dieses Repo wird auf dem Produktions-Server eingesetzt.
  • tmeigen/vmstack.dev enthält die Docker Compose Dateien für eine lokale Entwicklungs-Umgebung

Vertrauliche Einstellungen und Daten werden separat abgelegt.

Die fertig entwickelte und getestete Vereinsmanager App Anwendung wird lokal mit Docker und BuildX in ein Docker-Image für die Architekturen amd64 und arm64 gebaut und auf Docker Hub abgelegt.

Docker Hub

Docker Hub ist das Repository, in dem die VereinsManager Images abgelegt und verwaltet werden. Von dort werden in Produktion die jeweils letzten Versionen der Software geladen und aktiviert.

Images auf Docker Hub werden wie folgt versmoniert:

  • 2405.1: Jahr und Monat einer Major Version
  • 20405.1: fortlaufende Minor Version

Produktions-Stack

VereinsManager wird produktiv auf leistungsfähigen gehosteten Linux-Servern mit Docker und Docker Composer betrieben. Das erlaubt eine weitestgehende Entkopplung von der jeweils verfügbaren Hardware, kontrollierte Wartungsaktivitäten und ein hohes Mass an Skalierbarkeit.

Docker Hub ist das Repository, in dem die VereinsManager Images abgelegt und verwaltet werden. Weitere Software wird ebenfalls von dort in der jeweils letzten Versionen geladen und aktiviert.

Folgende Instanzen werden eingesetzt:

  • VereinsManager wird immer als Paar bestehend aus der Django-/Python-App, sowie einer Postgres Instanz betrieben. Durch die Mandantenfähigkeit von VereinsManager reicht jede Instanz für eine große Anzahl von Vereinen.
    Images auf Docker Hub werden wie folgt versmoniert:
    • 2405.1: Jahr und Monat einer Major Version
    • 20405.1: fortlaufende Minor Version
  • PostgreSQL ist die Datenbank für den VereinsManager. Für Wartungszwecke wird zusätzlich eine separate Instanz von pgAdmin zeitweise eingesetzt.
  • WordPress wird für den Betrieb der „Homepage“ https://www.vereinsmanager.org genutzt.
  • Traefik als Reverse Proxy und SSL Zertifikatsmanager. Traefik übernimmt dabei das ganze URL Routing zu den richtigen Instanzen von VereinsManager oder WordPress. SSL-Zertifikate werden bedarfsgerecht von Letsencrypt besorgt

Dank dem obigen Setup sind auf dem gehosteten Linux Server mit Docker nur noch die jeweiligen docker-compose.yml Dateien nötig um die Instanzen hochzufahren.

Leseliste

Für den Einstieg in die Entwicklung mit Python, Django, PostgreSQL und Docker seien die folgenden Quellen empfohlen:

  • die offizielle Django-Dokumentation und hier besonders die First Steps.
  • auf YouTube finden sich viele Erklärvideos zur Entwicklung mit Django in allen seinen Facetten. Für den Einstieg gut geeignet ist der Django Beginner Course Serie von Denis (Ivy) Ivanov:
  • Das Tutorial Django, Docker and Postgres erläutert Schritt für Schritt das Bauen einer Django-App für den Betrieb unter Docker.