Skalierbare API-Infrastruktur für E-Commerce-Tools
01 Herausforderung
Interne Tools wie Preiskalkulatoren, KI-Bots oder Bestands-Checker müssen sicher, schnell und zuverlässig erreichbar sein – ohne für jedes Tool die Server-Infrastruktur neu aufzusetzen.
02 Ansatz
Eine Microservices-Basis aus FastAPI als asynchronem Python-Backend und Caddy als Reverse Proxy mit automatischem HTTPS, der alle Anfragen unter /api an die Services weiterleitet.
03 Ergebnis
Neue Tools lassen sich als kleine Services unter derselben Domain wie das Frontend bereitstellen – demonstriert mit zwei Live-Demos: Text-Analyzer und KI-Code-Erklärer.
Digitale Prozessoptimierung braucht eine stabile Basis. In diesem Projekt habe ich eine Microservices-Infrastruktur aufgebaut, die als Fundament für interne Business-Anwendungen dient: die Geschwindigkeit von Python (FastAPI) kombiniert mit der Sicherheit eines modernen Reverse Proxies (Caddy).
Warum diese Architektur?
Im E-Commerce ist Time-to-Market entscheidend. Neue kleine Tools sollen schnell bereitstehen – ohne jedes Mal die komplette Server-Infrastruktur neu aufzusetzen.
- Security First
- HTTPS
- Automatische Verschlüsselung durch Caddy
- Scalability
- n : 1
- Load Balancing auf mehrere interne Services
- Efficiency
- async
- Ideal für I/O-lastige DB- und KI-Aufrufe
- Live-Demos
- 2
- Text-Analyzer · KI-Code-Erklärer
Architektur
Jede Anfrage aus dem Browser läuft über Caddy. Der Proxy terminiert HTTPS, entfernt das /api-Präfix und reicht die Anfrage an FastAPI weiter, das Payloads validiert und an den passenden Service übergibt.
- 01FrontendBrowser ruft /api/… auf derselben Domain auffetch
- 02CaddyAutomatisches HTTPS, Präfix /api entfernenhandle_path
- 03FastAPIAsynchrones Backend auf 127.0.0.1:8000Python
- 04ValidierungPydantic-Modelle mit LängenlimitsPydantic
- 05ServicesText-Pipeline und LLM-AnbindungOpenRouter
Das Backend: FastAPI
Exemplarisch laufen zwei Business-Funktionen auf der Plattform:
/generate– eine Text-Analyse-Pipeline, z.B. für automatisierte Produktbeschreibungen./ask-ai– eine Schnittstelle zu Large Language Models für den internen Support-Bot.
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class TextPayload(BaseModel):
text: str = Field(..., max_length=500)
class AssistantPayload(BaseModel):
prompt: str = Field(..., max_length=2000)
model: str = Field("example/free-model")
@app.post("/api/text-tools")
async def text_tools(payload: TextPayload):
value = payload.text
return {
"uppercase": value.upper(),
"length": len(value),
}
@app.get("/api/models")
async def list_models():
# In der Praxis werden freie Modelle aus einem Provider geladen.
return {
"models": [
{"id": "provider/model-a:free", "name": "Model A Free"},
{"id": "provider/model-b:free", "name": "Model B Free"},
]
}
@app.post("/api/assistant")
async def assistant(payload: AssistantPayload):
# In der Praxis: Validierung, Rate-Limit, Provider-Request, Error-Handling.
return {"result": f"Erklaerung fuer Modell {payload.model}"}
Der Webserver: Caddy
Damit die API unter derselben Domain wie das Frontend erreichbar ist, entfernt Caddy per handle_path das /api-Präfix, bevor die Anfrage an FastAPI geht:
handle_path /api/* {
reverse_proxy 127.0.0.1:8000
}
Live-Demo: Text-Analyzer
Geben Sie einen Text ein – er wird an /api/generate gesendet und vom Python-Backend analysiert. Ist das Backend nicht erreichbar, erscheint eine Fehlermeldung.
Text Analyse API
Erweiterung: KI-Code-Erklärer
Das zweite Beispiel nutzt den /ask-ai-Endpunkt: Ein Code-Schnipsel wird vom Backend sicher an ein LLM (via OpenRouter) weitergeleitet. Die verfügbaren Modelle lädt die Demo beim Start über /api/models.
KI Code-Erklärer
Mit dem Absenden wird Ihr Text an OpenRouter (USA) und den Anbieter des gewählten Modells übermittelt, die Eingaben ggf. protokollieren. Bitte keine personenbezogenen oder vertraulichen Daten eingeben. Details in der Datenschutzerklärung.
Learnings
- Ein Proxy, viele Tools: Mit
handle_pathhängt jeder neue Service unter derselben Domain – kein CORS, kein eigenes Zertifikat pro Tool. - Validierung an der Grenze: Pydantic-Längenlimits (500 bzw. 2.000 Zeichen) greifen serverseitig; die Demo prüft zusätzlich clientseitig für schnelleres Feedback.
- Secrets bleiben im Backend: API-Key und System-Prompt liegen ausschließlich auf dem Server, der Browser sieht nur das Ergebnis.