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| ACloudFront - 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:
/healthEndpunkt 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
-
Analytics-Architektur - Lernen Sie unseren hybriden Analytics-Ansatz kennen
-
SEO-Pipeline - Verstehen Sie, wie Suchanfragen zu Produktseiten werden
-
Suchdienst-Architektur - Tauchen Sie ein in unsere Suchinfrastruktur
-
Caching-Strategie - Erkunden Sie das Caching auf allen Ebenen
-
Deployment-Architektur - Sehen Sie, wie das System deployed wird
-
Sicherheitsüberlegungen - Überprüfen Sie die Sicherheitsmaßnahmen