13.12.2024

Der ultimative Guide für FastAPI in der Produktion

FastAPI in Produktion: So klappt's!

Mit FastAPI kannst du von einer Vielzahl von Vorteilen profitieren, darunter Geschwindigkeit, Modernität und Flexibilität. Doch um sicherzustellen, dass deine FastAPI-Anwendung in der Produktion erfolgreich läuft, benötigst du die richtigen Strategien und Werkzeuge. Hier findest du die wichtigsten Best Practices und Tools, um deine Anwendung effizient und sicher zu betreiben.

Blueshoe und FastAPI in Produktion

Inhaltsverzeichnis

Einführung

In der heutigen digitalen Welt ist die Implementierung von FastAPI-Anwendungen in der Produktion ein wichtiger Schritt für Unternehmen und Entwickler. FastAPI bietet eine schnelle, moderne und flexible Möglichkeit, APIs zu entwickeln und zu betreiben. Doch wie bringst du deine FastAPI-Anwendung erfolgreich in die Produktion? Erfahre, welche Best Practices und Tools dir dabei helfen, deine FastAPI-Anwendung performant und sicher zu betreiben. Wir starten zuerst mit ein paar grundlegenden Begrifflichkeiten und Konzepten bevor wir uns die Optimierung der Produktionsumgebung ansehen.

Was ist FastAPI überhaupt?

FastAPI ist ein modernes, schnelles (High-Performance), Web-Framework für Python, das auf Starlette und Pydantic basiert. Es wurde von Sebastián Ramírez a.k.a tiangolo geschrieben und ist eine der am schnellsten wachsenden Python-Web-Frameworks. Es ist auch sehr effizient APIs in FastAPI zu schreiben, da es die Vorteile von Python Typ-Überprüfungen und asynchronen Programmiermodellen nutzt. Darüber hinaus generiert FastAPI automatisch interaktive API-Dokumentationen mit Swagger UI und ReDoc, was den Entwicklungsaufwand erheblich reduziert.

The 12 Factor App - Was eine gute Applikation ausmacht

Blueshoe ist starker Vertreter des 12 Factor App Ansatzes. Die 12 Factor App ist eine Methode um Software-As-A-Service Apps zu bauen, welche (laut Zitat) folgende Anforderungen erfüllen sollen:

  • deklarative Formate benutzen für die Automatisierung der Konfiguration, um Zeit und Kosten für neue Entwickler im Projekt zu minimieren
  • einen sauberen Vertrag mit dem zugrundeliegenden Betriebssystem haben, maximale Portierbarkeit zwischen Ausführungsumgebungen bieten
  • sich für das Deployment auf modernen Cloud-Plattformen eignen, die Notwendigkeit von Servern und Serveradministration vermeiden
  • die Abweichung minimieren zwischen Entwicklung und Produktion, um Continuous Deployment für maximale Agilität ermöglichen
  • und skalieren können ohne wesentliche Änderungen im Tooling, in der Architektur oder in den Entwicklungsverfahren

So beinhaltet der Ansatz Konzepte wie die gute Umsetzung der Konfiguration einer Applikation oder parität der Dev und Produktions Umgebung. Nachzulesen sind alle Faktoren auf der 12 Factor App Website. Mit FastAPI lässt sich dieser Ansatz gut umsetzen.
Dank der leichtgewichtigkeit des Frameworks kann zum Beispiel Faktor IX. recht simpel erfüllt werden und eine schnelle Startzeit der Applikation garantiert werden.

Nachdem nun alle Konzepte und Grundlegenden Begriffe für die SaaS-App geklärt sind folgt nun das perfekte FastAPI Produktions Setup.

Server Runner - Wer lässt deine App laufen?

Gunicorn + Uvicorn - Der alte Weg

old way gif

Vor einigen Monaten war die Kombination von Gunicorn mit Uvicorn-Workern die bevorzugte Wahl, um eine FastAPI-API zu serven. Gunicorn wurde verwendet, weil es die Fähigkeit hat, eine große Anzahl von Prozessen zu verwalten, während die Leistung konstant bleibt. Dies ermöglichte es, die Last auf mehrere Prozesse zu verteilen und die Verfügbarkeit der API zu erhöhen. Uvicorn wurde als Worker-Prozess verwendet, um die Anfragen zu bearbeiten, da es eine effiziente Implementierung des ASGI-Standards bietet. Allerdings unterstützte Uvicorn bis vor kurzen das Management und Neustarten von Workern nicht direkt, was die Verwendung von Gunicorn als Prozessmanager erforderlich machte. Durch die Kombination von Gunicorn und Uvicorn konnten Entwickler die Vorteile beider Tools nutzen, um eine skalierbare und zuverlässige API-Infrastruktur aufzubauen.

Die FastAPI CLI - der neue Weg

Inzwischen wird diese Kombination von Gunicorn und Uvicorn nicht mehr benötigt, da Uvicorn das Management von Workern nun auch selbst hin bekommt.
Man kann nun also Uvicorn allein benutzen, oder man benutzt die neue FastAPI CLI. Diese basiert auf Uvicorn, erleichtert das Entwickler leben aber ungemein indem sie mit Management Kommandos für FastAPI daher kommt. Auch kann sie als entrypoint Kommando benutzt werden um Produktions APIs zu serven.

Um nun die maximale Performance, in einer Multiprozessor Umgebung, herauszuholen kann dem FastAPI CLI run Kommando eine Flag mitgegeben werden um die Anzahl an Service Workern festzulegen. Der resultierende Kommando sieht so aus:

fastapi run --workers 4 <Pfad zur main Datei>

Dies führt Uvicorn mit Optimierungen für Produktion aus und erzeugt 4 Worker welche nun Nebenläufig Anfragen abarbeiten. Wenn du deine Applikation aber in Kubernetes hosten möchtest ist es empfohlen die Replikation über den Cluster laufen zu lassen und nicht in jedem einzelnen Container. Das heißt, du braucht dann die workers Flag nicht, sondern solltest in deine Deployment Konfiguration schauen.

Reverse Proxies

Ein "Reverse Proxy" ist ein Server, der zwischen den Clients (z. B. Browsern oder anderen Anwendungen) und den Backend-Servern einer Anwendung sitzt und als Vermittler fungiert. Statt dass die Clients direkt mit dem Backend kommunizieren, leitet der Reverse Proxy die Anfragen weiter und gibt die Antworten des Backends zurück an die Clients. Dadurch verbirgt er die tatsächlichen Backend-Server vor den Clients und fungiert als zentraler Zugangspunkt zur Anwendung.

Reverse Proxies wie Nginx oder Traefik sind also ein unverzichtbares Werkzeug für das Deployment moderner API-Anwendungen, da sie zahlreiche Vorteile bieten, die sowohl die Performance als auch die Sicherheit und Skalierbarkeit verbessern. Durch die Übernahme von Aufgaben wie SSL/TLS-Terminierung sorgt ein Reverse Proxy dafür, dass die API sicher über HTTPS erreichbar ist, ohne die Backend-Anwendung selbst zu belasten. Gleichzeitig ermöglicht er Load Balancing, indem eingehende Anfragen effizient auf mehrere Backend-Instanzen verteilt werden, was die Stabilität und Verfügbarkeit der Anwendung erhöht. Darüber hinaus kann ein Reverse Proxy statische Inhalte wie Bilder oder CSS-Dateien direkt ausliefern, was die Performance weiter steigert, indem es die API-Server entlastet. Nicht zuletzt bietet ein Reverse Proxy zusätzliche Sicherheitsfunktionen wie Rate Limiting oder IP-Blocking, um APIs vor bösartigen Angriffen zu schützen. Diese Kombination aus Performance-Optimierung, Sicherheit und Flexibilität macht Nginx, Traefik und ähnliche Tools zu einem unverzichtbaren Bestandteil jeder professionellen API-Deployment-Strategie.

Blueshoe expert Michael SchilonkaMichael Schilonka

Wir können auch Deine FastAPI-App betreiben.

Und zuletzt die Sicherheit

Sicherheit ist ein zentraler Aspekt beim Deployment von APIs, und es gibt bewährte Maßnahmen, die helfen, deine Anwendung vor Angriffen zu schützen. HTTPS sollte stets verwendet werden, um die Kommunikation zwischen Client und Server zu verschlüsseln. Ein SSL-Zertifikat kann einfach und kostenlos über Dienste wie Let’s Encrypt bereitgestellt werden. Weiterhin erhöhen Sicherheitsheader den Schutz vor häufigen Angriffen wie Cross-Site-Scripting (XSS). Dies lässt sich in FastAPI einfach mit der SecurityMiddleware von Starlette umsetzen. Zusätzlich schützt der Einsatz von TrustedHostMiddleware vor Host-Header-Angriffen, indem nur definierte Domains erlaubt werden:

from starlette.middleware.trustedhost import TrustedHostMiddleware
from starlette.middleware import Middleware

app = FastAPI(
  middleware=[
    Middleware(
      TrustedHostMiddleware, 
      allowed_hosts=["yourdomain.com", "*.yourdomain.com"]
    ),
  ]
)

Wenn deine API mit externen Clients interagiert, ist eine korrekte Konfiguration von CORS (Cross-Origin Resource Sharing) entscheidend, um nur vertrauenswürdige Ursprünge zuzulassen:

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://trusteddomain.com"],
    allow_methods=["GET", "POST"],
    allow_headers=["*"],
)

Für den Schutz von Datenbankzugängen sollten sensible Informationen wie Zugangsdaten niemals im Code hartcodiert werden. Stattdessen können Umgebungsvariablen oder Secrets-Management-Tools genutzt werden. Um SQL-Injection zu verhindern, sollten Sie ORM-Tools wie SQLAlchemy oder Tortoise ORM verwenden, die Abfragen sicher parameterisieren.
Hier kommt wieder das 12 Factor App Konzept ins Spiel.

Zusätzlich können Sie durch Rate Limiting die Häufigkeit eingehender Anfragen begrenzen und damit sowohl Missbrauch als auch Überlastungen vorbeugen. Reverse Proxies wie Nginx oder Traefik eignen sich hervorragend, um dies effizient zu implementieren. Mit diesen Maßnahmen können Sie die Sicherheit Ihrer API signifikant erhöhen.

Beispiel Dockerfile

Hier noch ein Beispiel eines Dockerfiles für eine Produktionsumgebung in Kubernetes (der Cluster übernimmt die Replikation):

FROM python:3.12-slim

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set the working directory
WORKDIR /app

# Install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy the application code
COPY src/ .

# Expose the port the app runs on
EXPOSE 8000

# Command to run the FastAPI application using the FastAPI CLI -> no workers flag as Kubernetes handles replication
CMD ["fastapi", "run", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Honorable Mentions

  • Mit Caching kann auch viel für die Performance einer API getan werden. Bei Blueshoe benutzen wir vor allem Varnish.
  • I/O und Ressourcen intensive Tasks sollten in FastAPIs BackgroundTasks ausgeführt werden

Fazit

FastAPI ist nicht nur schnell und flexibel, sondern bietet durch seine Integration mit modernen Deployment- und Sicherheitsstandards eine ideale Grundlage für produktionsreife APIs. Mit den vorgestellten Best Practices und Tools lassen sich Anwendungen performant, sicher und skalierbar betreiben. Entwickler profitieren von der schnellen Startzeit, asynchronen Verarbeitung und integrierten Werkzeugen zur Optimierung. Der Einsatz von Reverse Proxies, Sicherheitsmaßnahmen und modernen Deployment-Strategien machen FastAPI zur idealen Wahl für zukunftsorientierte API-Entwicklung.


Hast du noch Fragen oder eine Meinung? Mit deinem GitHub Account kannst Du es uns wissen lassen...


Was unsere Kunden über uns sagen

Ofa Bamberg GmbHRainer Kliewe
Ludwig-Maximilians-Universität MünchenProf. Dr. Mario Haim
Deutsches MuseumGeorg Hohmann
Fonds Finanz Maklerservice GmbHNorbert Porazik
Technische Universität HamburgSören Schütt-Sayed
  • Ofa Bamberg GmbH
    Ofa Bamberg GmbH
    B2B Online-Shop | B2C Website | Hosting | Betreuung | Security
    Rainer Kliewe
    © Ofa Bamberg GmbH
    Blueshoe betreut uns und unsere Webapplikationen seit vielen Jahren. Vom Online-Shop bis hin zu großen Teilen unseres Web-Umfelds hat sich das Unternehmen stets kompetent, verlässlich und vorausschauend gezeigt. Wir sind sehr zufrieden mit Blueshoe als Partner.
    Rainer KlieweGeschäftsführer
  • Ludwig-Maximilians-Universität München
    Ludwig-Maximilians-Universität München
    Plattformentwicklung | Hosting | Betreuung | APIs | Website
    Prof. Dr. Mario Haim
    Blueshoe hat unsere Forschungsdatenplattform Munich Media Monitoring (M3) entwickelt und uns hervorragend dabei beraten. Das Team hat unsere Anforderungen genau verstanden und sich aktiv in die Ausgestaltung der Software und der Betriebsumgebung eingebracht. Wir sind froh, dass auch Wartung und weiterführender Support in Blueshoes Händen liegen.
    Prof. Dr. Mario HaimLehrstuhlinhaber, Institut für Kommunikationswissenschaft und Medienforschung
  • Deutsches Museum
    Deutsches Museum
    Digitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMS
    Georg Hohmann
    Foto: Anne Göttlicher
    Im Rahmen eines komplexen Digitalisierungsprojekts für unsere Exponate-Datenbank war Blueshoe ein äußerst verlässlicher Partner. Sie haben uns nicht nur während des gesamten Projekts hervorragend beraten, sondern unsere Anforderungen perfekt umgesetzt. Dank ihrer Arbeit ist unsere Datenbank nun ein bedeutender Mehrwert für die weltweite wissenschaftliche Forschung.
    Georg HohmannLeiter Deutsches Museum Digital
  • Fonds Finanz Maklerservice GmbH
    Fonds Finanz Maklerservice GmbH
    Plattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website
    Norbert Porazik
    © Fonds Finanz Maklerservice GmbH
    Blueshoe ist unsere verlängerte Werkbank für Entwicklung, Wartung und Support unserer Weiterbildungs- und Zertifizierungsplattformen. Das Team hat sich gründlich in unsere Abläufe eingearbeitet, und wir freuen uns, Blueshoe als zuverlässigen Partner an unserer Seite zu haben.
    Norbert PorazikGründer und Geschäftsführer
  • Technische Universität Hamburg
    Technische Universität Hamburg
    Plattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
    Sören Schütt-Sayed
    Seit 2019 unterstützt uns die Blueshoe GmbH tatkräftig bei der Entwicklung und Weiterentwicklung des "Digital Learning Lab" und der "Digital Learning Tools". Dank ihrer Beratung konnten wir von Anfang an auf eine zukunftssichere, moderne technische Struktur setzen. Die Zusammenarbeit ist reibungslos, und wir fühlen uns rundum gut betreut. Und davon profitieren dann auch die Lehrkräfte in Hamburg.
    Sören Schütt-SayedOberingenieur
BLUESHOE GmbH
© 2025 BLUESHOE GmbH