Infrastruktur-Übersicht

Dieser Artikel bietet einen umfassenden Überblick über die Infrastruktur, die die öffentliche Thinvent-Website antreibt. Wir behandeln den vollständigen Technologie-Stack, vom Webserver bis zur Datenbankebene, und erklären, wie alle Komponenten zusammenarbeiten, um ein schnelles, zuverlässiges und skalierbares E-Commerce-Erlebnis zu liefern.

Webanwendungs-Stack

Flask - Das Fundament

Unsere Website basiert auf Flask, einem schlanken und flexiblen Python-Webframework. Flask stellt das Kern-Routing, die Request/Response-Verarbeitung und das Blueprint-System bereit, das unsere Anwendung in modulare Komponenten organisiert.

Wichtige von uns genutzte Flask-Features:

  • Blueprints: Organisieren die Anwendung in logische Module (web, api, cart, product, etc.)

  • Jinja2-Templating: Serverseitige HTML-Generierung mit Template-Vererbung

  • Request-Kontext: Automatische Behandlung von HTTP-Requests und Sessions

  • Werkzeug: Entwicklungsserver und Utility-Funktionen

Die Flask-Anwendung wird im Web-Modul initialisiert, wo wir:

  • Den Web-Blueprint erstellen

  • Babel für Internationalisierung initialisieren

  • Die Valkey-Session-Speicherung konfigurieren

  • Context-Processor für Template-Variablen einrichten

Gunicorn - Produktionsserver

Für die Produktion verwenden wir Gunicorn (Green Unicorn), einen Python-WSGI-HTTP-Server. Gunicorn führt unsere Flask-Anwendung mit mehreren Worker-Prozessen aus.

Gunicorn wird von systemd verwaltet, was sicherstellt, dass es automatisch neu startet, wenn es abstürzt oder der Server neu gebootet wird. Dies gibt uns Hochverfügbarkeit ohne manuelles Eingreifen.

Nginx - Reverse Proxy & Load Balancer

Nginx dient als unser Reverse Proxy und Load Balancer. Es sitzt vor Gunicorn und behandelt:

  • SSL/TLS-Terminierung: HTTPS-Verschlüsselung/Entschlüsselung

  • Statische Dateiauslieferung: CSS, JavaScript, Bilder (direkt von der Festplatte serviert)

  • Reverse Proxy: Weiterleitung dynamischer Anfragen an Gunicorn

  • Rate Limiting: Schutz vor Missbrauch

  • Request-Kompression: Gzip-Kompression für schnellere Übertragungen

Ubuntu - Betriebssystem

Alle EC2-Instanzen laufen unter Ubuntu, unserer gewählten Linux-Distribution. Wir bevorzugen, wenn verfügbar, Ubuntu-Python-Pakete gegenüber pip.

Der typische Request-Flow ist:

flowchart LR
    A[Client Browser] -->|HTTPS Request| B[Nginx]
    B -->|Proxy to| C[Gunicorn]
    C -->|WSGI| D[Flask App]
    D -->|Query| E[Valkey Cache]
    E -->|Miss| F[DynamoDB]
    F -->|Response| E
    E -->|Hit| G[Response]
    G --> B
    B -->|Response| A

CloudFront - Content Delivery Network

CloudFront ist unser CDN und bietet:

  • DDoS-Schutz: Integrierter Schutz vor verteilten Angriffen

  • Origin Shielding: Schützt unsere Origin-Server vor Traffic-Spitzen

Unsere CloudFront-Distribution hat zwei Origins:

  • Backend-Server: Backend-Flask-App

  • S3: S3-Bucket für statische Assets

Konfigurierte Cache-Verhaltensweisen:

  • /s/* - Statische Assets (CSS, JS, Bilder) mit 24-Stunden-TTL

  • /ds/*.pdf - Datenblätter mit 24-Stunden-TTL

  • /api/* - API-Endpunkte ohne Caching

  • /cart - Warenkorb mit 24-Stunden-TTL

  • /set-language - Kein Caching (dynamisch)

Datenebene

DynamoDB - Primärdatenbank

Wir verwenden Amazon DynamoDB als unsere primäre Datenbank. DynamoDB ist eine NoSQL-Datenbank.

Unsere DynamoDB-Tabellen umfassen:

  • Recommendations: KI-generierte Produktempfehlungen

  • Product descriptions: Produktbeschreibungen in mehreren Sprachen

  • Query pages: Geparste Query-Seiten für SEO

Wir verwenden PynamoDB, ein Python-ORM für DynamoDB, das bietet:

  • Modelldefinitionen: Python-Klassen für Datenbanktabellen

Valkey - In-Memory-Cache

Valkey (ein Fork von Redis) ist unsere In-Memory-Cache-Ebene und bietet:

  • Session-Speicherung: Benutzer-Sessions mit 30-Tage-Sliding-Expiry

  • Häufig genutzte Daten: Produktanzahlen, beliebte Suchanfragen

  • Autocomplete-Cache: Suchvorschläge

  • Image-Manifest: Produktbild-Pfade

Valkey bietet erhebliche Performance-Vorteile:

  • 100x schneller als DynamoDB für Leseoperationen

  • Reduzierte Datenbanklast: Cache-Treffer vermeiden DynamoDB-Abfragen

  • Session-Persistenz: Valkey-gestützte Sessions über Requests hinweg

Wir nutzen Valkey für:

  • Sessions: Benutzer-Login-Status, Warenkorbdaten

  • Caching: Beliebte Suchanfragen, Autocomplete-Vorschläge

  • Counter: Produktlagerbestände (für Performance gecached)

  • Queues: Hintergrund-Job-Verarbeitung

S3 - Objektspeicher

Amazon S3 ist unser Objektspeicherdienst.

Wir nutzen S3 für:

  • Produktbilder: Hochauflösende Produktfotos

  • Datenblätter: PDF-Produktspezifikationen

  • Statische Assets: CSS, JS, Bilder

DNS & Routing

Route53 - Domain-Management

Route53 übernimmt unser DNS-Management:

  • Domain-Registrierung: thinvent.in und verwandte Domains

Nginx-Routing

Nginx leitet Anfragen basierend auf URL-Mustern:

  • / → Flask-App (Startseite, Produkte, Warenkorb, Checkout)

  • /q/ → Flask-App (Query-Seiten, Suchergebnisse)

  • /api/ → Flask-App (API-Endpunkte)

  • /static/ → CloudFront/S3 (statische Assets)

Such- & KI-Infrastruktur

Suchdienst

Wir betreiben eine eigenständige Flask-Anwendung für Suchfunktionalität. Dieser Dienst bietet:

  • Vektorsuche: Semantische Ähnlichkeit für verwandte Suchanfragen

  • Autocomplete: Präfix-basierte Suchvorschläge

  • Beliebte Suchanfragen: Meistgesuchte Begriffe

  • Filterextraktion: Parst Suchanfragen nach Facetten

Der Suchdienst verwendet:

  • Valkey RediSearch: Vektor-Ähnlichkeitssuche

  • SentenceTransformer: Embedding-Generierung

  • Phrasen-Mappings: Filterextraktion via Substring-Matching

KI-Anbieter

Wir verwenden mehrere KI-Anbieter für verschiedene Aufgaben:

DeepSeek

  • Modell: deepseek-chat

  • Anwendungsfälle: Produktbeschreibungen, Query-Seiten-Inhalt, Übersetzung

  • API: DeepSeek-API mit Together.ai-Fallback

  • Caching: System-Prompts für Prompt-Caching-Effizienz

Gemini

  • Modell: Gemini (spezifisches Modell)

  • Anwendungsfälle: Inhaltsgenerierung

  • Integration: Direkte API-Aufrufe

Amazon Bedrock

  • Modelle: Nova Pro

  • Anwendungsfälle: Interner Chat

  • Integration: boto3 SDK

Amazon Bedrock

  • Modelle: Nova Lite

  • Anwendungsfälle: Kunden-Chatbot

  • Integration: boto3 SDK

Kompletter Request-Flow

So fließt eine typische Anfrage durch unsere Infrastruktur:

flowchart TD
    A[Client Browser] -->|DNS Query| B[Route53]
    B -->|IP Address| C[CloudFront]
    C -->|Cache Check| D{Cache Hit?}
    D -->|Yes| E[Return Cached Content]
    D -->|No| F[Nginx]
    F -->|Proxy| G[Gunicorn]
    G -->|WSGI| H[Flask App]
    H -->|Cache Check| I[Valkey]
    I -->|Hit| J[Return Cached Data]
    I -->|Miss| K[DynamoDB]
    K -->|Query| L[Return Data]
    L --> I
    J --> M[Build Response]
    E --> M
    M --> N[Send to Client]

Monitoring & Health

UptimeRobot - Externes Monitoring

Wir verwenden UptimeRobot für externes Monitoring aller öffentlich zugänglichen Endpunkte:

  • Backend-Server: Backend-Website

  • www.thinvent.in: Öffentliche Website

Health Checks

  • Gunicorn: systemd verwaltet Neustarts

  • Flask: /health Endpunkt gibt Status zurück

  • Valkey: Verbindungs-Health wird überwacht

  • DynamoDB: Latenz und Durchsatz werden überwacht

Logging

  • Anwendungslogs: Gunicorn error.log

  • Access-Logs: Gunicorn access.log

  • E-Mail: Echtzeit-Benachrichtigungen für kritische Ereignisse mit Python-Tracebacks

Zusammenfassung

Unsere Infrastruktur ist ausgelegt für:

  • Performance: Mehrere Cache-Ebenen, CDN, optimierte Abfragen

  • Skalierbarkeit: Auto-Scaling-Datenbanken, Load Balancing

  • Kosteneffizienz: Pay-per-Use, Caching zur Reduzierung der Datenbanklast

Die Kombination aus Flask, Gunicorn, Nginx, Ubuntu, DynamoDB, Valkey, CloudFront und UptimeRobot bietet eine robuste, skalierbare Grundlage für unsere E-Commerce-Plattform.

Verwandte Artikel