Corporate Website der Hardin Software GmbH
Die von mir geschriebenen redaktionellen Texte der Website formatiere ich als Markdown und speichere sie versioniert als einfache Text-Dateien im Dateisystem ab. Markdown ist eine leichtgewichtige Auszeichnungssprache mit einer Syntax zur einfachen Textformatierung.
Aus den Markdown- und sonstigen Medien-Dateien generiert Hugo die Corporate Website. Hugo ist ein statischer Seitengenerator, der viele Arten von Content, Menüs, Navigation und Mehrsprachigkeit unterstützt. Hugo kann aus Content aus verschiedenen Quellen und APIs auf Basis von Vorlagen Tausende von Webseiten in wenigen Sekunden generieren.
Die Vorlagen für Hugo und damit das Frontend bzw. das Layout der Website basieren klassisch auf HTML, CSS, JavaScript sowie auf Bootstrap, einem Framework, das die Entwicklung responsiver Websites vereinfacht.
Eine serverseitige Web-Anwendung, die ich in in Go implementiert habe, reichert einen Teil der von Hugo generierten Seiten mit dynamischen Inhalten an und ermöglicht dynamische Interaktionen mit den Benutzern der Website.
Ein Nginx Web Server stellt die statischen Seiten zum Abruf bereit und agiert darüber hinaus als Reverse Proxy vor der serverseitigen Web-Anwendung. Die Web Brower der Benutzer rufen die Website jedoch nicht direkt von Nginx ab, sondern indirekt über Cloudflare.
Denn Nginx und die Web-Anwendung laufen in einem Kubernetes Cluster. Ein Cloudflare Tunnel mit einer verschlüsselten Verbindung zwischen dem Kubernetes Cluster und dem nächstgelegenen Rechenzentrum von Cloudflare sorgen dafür, dass der Kubernetes Cluster nicht direkt dem öffentlichen Internet ausgesetzt sein muss, was eine potenzielle Sicherheitslücke minimiert.
Das Content Delivery Network von Cloudflare speichert Kopien von Teilen der Inhalte der Corporate Website auf sog. Edge Servern von Cloudflare, die weltweit verteilt sind. Dadurch stehen diese Inhalte in der geografischen Nähe der Benutzer bereit, anstatt nur im Kubernetes Cluster. Dadurch wird die Zugriffszeit der Browser auf die Corporate Website verringert, was zu kürzeren Ladezeiten und einer verbesserten Benutzerfreundlichkeit führt.
Verschiedene Dienste von Cloudflare, beispielsweise Cloudflare DDoS Protection und Cloudflare Bots, sichern die Corporate Website gegen verschiedene Arten von Angriffen ab und erhöhen damit die Sicherheit des Betriebs der Website.
Ein CI/CD-Workflow auf Basis von Make und Bash steuert Hugo, kompiliert die Go-Anwendung, erzeugt ein Docker Image mit der Anwendung und lädt dieses zu Harbor hoch. Anschließend sendet Harbor eine Nachricht an Flux, das im Kubernetes Cluster läuft. Flux sorgt dafür, dass die neue Version des Docker Images in den Kubernetes Cluster geladen und das Deployment in Kubernetes mit dem neuen Docker Image unterbrechungsfrei aktualisiert wird.
Der Quellcode der Corporate Website und die redaktionellen Inhalte sind mit Git versioniert und sind in einem Forgejo Code Repository gesichert.