FastAPI Deployment: En İyi Uygulamalar Rehberi

FastAPI Deployment: En İyi Uygulamalar Rehberi

FastAPI, modern web API’leri oluşturmak için yüksek performanslı, kullanımı kolay bir Python web framework’üdür. Ancak, bir FastAPI uygulamasını geliştirip yayınlamak arasındaki süreçte, uygulamanın kararlılığını, performansını ve güvenliğini sağlamak için dikkate alınması gereken birçok faktör vardır. Bu makale, FastAPI uygulamalarını başarılı bir şekilde devreye almak için en iyi uygulamaları kapsamlı bir şekilde ele alacaktır.

İçindekiler

Giriş

FastAPI, hızı, kullanım kolaylığı ve otomatik dokümantasyon oluşturma yeteneği sayesinde geliştiriciler arasında giderek daha popüler hale geliyor. Ancak, FastAPI uygulamanızı üretim ortamına taşırken, sadece kodun doğru çalışması yeterli değildir. Uygulamanın ölçeklenebilir, güvenli ve bakımı kolay olması da kritik öneme sahiptir. Bu nedenle, doğru deployment stratejilerini ve araçlarını kullanmak, başarılı bir proje için hayati öneme sahiptir.

Docker Kullanımı

Docker, uygulamaları ve bağımlılıklarını konteyner adı verilen izole ortamlara paketlemek için kullanılan bir platformdur. FastAPI uygulamalarını Dockerize etmek, tutarlılık, taşınabilirlik ve ölçeklenebilirlik sağlar. Docker kullanarak, uygulamanızın geliştirme, test ve üretim ortamlarında aynı şekilde çalışmasını garanti edebilirsiniz.

Docker Dosyası (Dockerfile) Oluşturma

Bir Dockerfile, bir Docker imajı oluşturmak için kullanılan bir metin dosyasıdır. FastAPI uygulamanız için bir Dockerfile oluştururken, şunları dikkate almanız önemlidir:

  • Temel imaj olarak resmi Python imajını kullanın.
  • Çalışma dizinini ayarlayın.
  • Bağımlılıkları requirements.txt dosyasından yükleyin.
  • Uygulama kodunu konteynere kopyalayın.
  • Uygulamayı başlatmak için komutu belirtin.
FROM python:3.9

WORKDIR /app

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

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Docker Compose

Docker Compose, birden fazla Docker konteynerini tanımlamak ve çalıştırmak için kullanılan bir araçtır. FastAPI uygulamanızın veritabanı, önbellek veya diğer bağımlılıkları varsa, Docker Compose kullanarak bu hizmetleri tek bir komutla başlatabilirsiniz.

Uvicorn ile Sunum

Uvicorn, ASGI (Asynchronous Server Gateway Interface) tabanlı bir web sunucusudur ve FastAPI uygulamalarını çalıştırmak için idealdir. Uvicorn, tek işlemcili ve çok işlemcili modlarda çalışabilir. Çok işlemcili modda, uygulamanızın performansını artırmak için birden fazla işlemci çekirdeği kullanabilirsiniz.

Uvicorn’u çalıştırmak için aşağıdaki komutu kullanabilirsiniz:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

Burada:

  • `main:app`, FastAPI uygulamasının bulunduğu `main.py` dosyasındaki `app` nesnesini belirtir.
  • `–host 0.0.0.0`, uygulamanın tüm IP adreslerinden erişilebilir olmasını sağlar.
  • `–port 8000`, uygulamanın 8000 portunda çalışmasını sağlar.
  • `–reload`, kodda yapılan değişiklikleri otomatik olarak algılar ve sunucuyu yeniden başlatır (geliştirme ortamı için).

Nginx ile Ters Proxy

Nginx, yüksek performanslı bir web sunucusu ve ters proxy sunucusudur. FastAPI uygulamanızın önünde Nginx kullanarak, yük dengeleme, önbellekleme ve güvenlik gibi ek avantajlar elde edebilirsiniz.

Nginx Yapılandırması

Nginx’i FastAPI uygulamanız için ters proxy olarak yapılandırmak için aşağıdaki adımları izleyebilirsiniz:

  1. Nginx’i kurun.
  2. Nginx yapılandırma dosyasını (`/etc/nginx/nginx.conf` veya `/etc/nginx/conf.d/default.conf`) açın.
  3. `server` bloğuna aşağıdaki yapılandırmayı ekleyin:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_xforwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Burada:

  • `listen 80`, Nginx’in 80 portunu dinlemesini sağlar.
  • `server_name example.com`, Nginx’in bu alan adını dinlemesini sağlar.
  • `proxy_pass http://localhost:8000`, gelen istekleri localhost’taki 8000 portunda çalışan FastAPI uygulamasına yönlendirir.
  • `proxy_set_header` satırları, istemcinin IP adresi ve protokolü gibi bilgileri FastAPI uygulamasına iletir.

HTTPS Yapılandırması

HTTPS, web siteleri ve kullanıcılar arasındaki iletişimi şifreleyerek güvenliği artıran bir protokoldür. FastAPI uygulamanızın güvenliğini sağlamak için HTTPS kullanmanız önemlidir.

Let’s Encrypt ile Sertifika Alma

Let’s Encrypt, ücretsiz SSL/TLS sertifikaları sağlayan bir sertifika otoritesidir. Let’s Encrypt kullanarak, FastAPI uygulamanız için kolayca HTTPS yapılandırabilirsiniz.

  1. Certbot’u kurun.
  2. Aşağıdaki komutu kullanarak sertifika alın:
sudo certbot --nginx -d example.com

Bu komut, Nginx yapılandırmanızı otomatik olarak güncelleyecek ve HTTPS’yi etkinleştirecektir.

Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD)

CI/CD, yazılım geliştirme sürecini otomatikleştirerek, kod değişikliklerinin daha hızlı ve güvenilir bir şekilde yayınlanmasını sağlayan bir uygulamadır. FastAPI uygulamanız için CI/CD kullanarak, geliştirme sürecini hızlandırabilir ve hataları azaltabilirsiniz.

CI/CD Araçları

FastAPI uygulaması için kullanabileceğiniz popüler CI/CD araçları şunlardır:

  • GitHub Actions
  • GitLab CI
  • Jenkins
  • CircleCI

CI/CD İş Akışı

Tipik bir CI/CD iş akışı aşağıdaki adımları içerir:

  1. Geliştirici, kodda değişiklik yapar ve değişiklikleri bir Git deposuna gönderir.
  2. CI/CD aracı, kod değişikliklerini otomatik olarak algılar ve bir build işlemi başlatır.
  3. Build işlemi, kodu derler, testleri çalıştırır ve bir Docker imajı oluşturur.
  4. Docker imajı, bir Docker kayıt defterine (örneğin, Docker Hub) yüklenir.
  5. CD aracı, Docker imajını üretim sunucularına dağıtır.

Loglama ve İzleme

Loglama ve izleme, uygulamanızın sağlığını ve performansını izlemek için kritik öneme sahiptir. FastAPI uygulamanızda loglama ve izleme kullanarak, hataları hızlı bir şekilde tespit edebilir ve uygulamanızın performansını optimize edebilirsiniz.

Loglama Araçları

FastAPI uygulaması için kullanabileceğiniz popüler loglama araçları şunlardır:

  • Python’un yerleşik `logging` modülü
  • Sentry
  • ELK Stack (Elasticsearch, Logstash, Kibana)
  • Grafana Loki

İzleme Araçları

FastAPI uygulaması için kullanabileceğiniz popüler izleme araçları şunlardır:

  • Prometheus
  • Grafana
  • Datadog
  • New Relic

Güvenlik Uygulamaları

FastAPI uygulamanızın güvenliğini sağlamak için aşağıdaki güvenlik uygulamalarını dikkate almanız önemlidir:

  • HTTPS kullanın.
  • Giriş doğrulama uygulayın.
  • Yetkilendirme ve kimlik doğrulama uygulayın.
  • Güvenlik açıklarına karşı düzenli olarak test yapın.
  • Bağımlılıkları güncel tutun.
  • Veritabanı güvenliğini sağlayın.

Performans Optimizasyonu

FastAPI uygulamanızın performansını optimize etmek için aşağıdaki stratejileri kullanabilirsiniz:

  • Asenkron programlama kullanın.
  • Önbellekleme kullanın.
  • Veritabanı sorgularını optimize edin.
  • GZIP sıkıştırması kullanın.
  • CDN kullanın.

Sonuç

FastAPI uygulamalarını devreye almak, dikkatli planlama ve doğru araçların kullanılmasını gerektiren karmaşık bir süreçtir. Bu makalede, FastAPI uygulamalarınızı başarılı bir şekilde devreye almak için en iyi uygulamaları ele aldık. Bu uygulamaları takip ederek, uygulamanızın kararlılığını, performansını ve güvenliğini sağlayabilirsiniz.

Leave A Comment

Your email address will not be published. Required fields are marked *