Yük Dengeleme ve İzleme
Yük dengeleme kavramlarını ve en iyi performans için FastAPI hizmetlerinizi üretim ortamında nasıl izleyeceğinizi öğrenin.
Yük Dengeleme ve İzleme, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
Scaling with Load Balancing
FastAPI uygulamanız büyüdükçe, tek bir sunucu tüm kullanıcı isteklerini karşılayamayabilir. İşte bu noktada yük dengeleme devreye girer!
Yük dengeleme, gelen ağ trafiğini birden fazla sunucuya dağıtır. Hiçbir sunucunun aşırı yüklenmemesini sağlayarak performansı ve güvenilirliği artırır.
Why Load Balance FastAPI?
FastAPI için yük dengeleme şunlar için kritiktir:
- Yüksek Erişilebilirlik: Bir sunucu çökerse, diğerleri yükü devralabilir.
- Ölçeklenebilirlik: Trafik arttıkça kolayca daha fazla FastAPI örneği (worker) ekleyebilirsiniz.
- Performans: İstekleri dağıtarak kullanıcılar için yanıt sürelerini düşürür.
- Kaynak Kullanımı: Sunucu kaynaklarınızın kullanımını optimize eder.
Common Load Balancing Algorithms
Yük dengeleyiciler, bir sonraki isteğin hangi sunucuya gideceğine karar vermek için algoritmalar kullanır:
- Döngüsel (Round Robin): İstekleri sırayla her sunucuya dağıtır. Basit ve adildir.
- En Az Bağlantı (Least Connections): İstekleri, en az aktif bağlantıya sahip olan sunucuya gönderir. Değişken istek yükleri için iyidir.
- IP Karma (IP Hash): Aynı istemciden (IP adresi) gelen istekleri aynı sunucuya yönlendirir. Oturum sürekliliği için kullanışlıdır.
Introduction to Monitoring
FastAPI uygulamanız yük dengeleme ile üretim ortamında çalışmaya başladığında, sağlıklı olduğunu ve iyi performans gösterdiğini nasıl anlarsınız?
İzleme (Monitoring), uygulamanızın performansı ve sağlığı hakkında veri toplama ve analiz etme sürecinin sürekli devam etmesidir. Sorunları erkenden tespit etmenize ve kullanıcı deneyimini anlamanıza yardımcı olur.
Key Metrics for FastAPI
Bir FastAPI uygulamasını izlerken şunlara odaklanın:
- İstek Hızı: Saniye başına kaç istek geliyor?
- Gecikme/Yanıt Süresi: API'nizin yanıt vermesi ne kadar sürüyor?
- Hata Oranı: Hata ile sonuçlanan isteklerin yüzdesi (örneğin 5xx durum kodları).
- Kaynak Kullanımı: Sunucularınızın CPU, bellek ve disk kullanımı.
- Çalışma Süresi (Uptime): Uygulamanız erişilebilir ve çalışır durumda mı?
Adding Basic Metrics Middleware
FastAPI, istekleri ve yanıtları yakalamak için özel ara yazılımlar (middleware) eklemenize olanak tanır. Bu, istek işleme süresi gibi metrikleri kaydetmek için mükemmeldir.
İşte her isteğin işlenmesi için geçen süreyi ölçen ve kaydeden basit bir ara yazılım örneği:
import time
from fastapi import FastAPI, Request, Response
from uvicorn import run
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(f"{process_time:.4f}s")
print(f"Request to {request.url.path} processed in {process_time:.4f}s")
return response
@app.get("/")
async def read_root():
return {"message": "Hello from FastAPI!"}
@app.get("/slow")
async def slow_endpoint():
await asyncio.sleep(0.1) # Simulate work
return {"message": "This was a bit slow"}
if __name__ == "__main__":
# To run: python your_file_name.py
# Then access endpoints like http://localhost:8000/
import asyncio # Required for slow_endpoint
run(app, host="0.0.0.0", port=8000)
Understanding the Metrics Middleware
Önceki kodda:
@app.middleware("http")dekoratörü, fonksiyonumuzu her HTTP isteği için çalışacak şekilde kaydeder.start_time = time.time()isteğin ne zaman başladığını kaydeder.response = await call_next(request)isteği uç noktanıza iletir ve yanıtı bekler.process_time = time.time() - start_timetoplam süreyi hesaplar.- Bu süreyi özel bir başlık olan
X-Process-Timeolarak ekliyoruz ve (gösterim amacıyla) konsola yazdırıyoruz.
Structured Logging for Observability
Basit yazdırma ifadelerinin ötesinde, yapılandırılmış günlük kaydı (structured logging) üretim sistemleri için hayati öneme sahiptir. Bu yöntem, verilerin günlükleme araçları tarafından kolayca ayrıştırılıp analiz edilebilen tutarlı bir formatta (JSON gibi) kaydedilmesini içerir.
Python'ın yerleşik logging modülü oldukça güçlüdür. Bu modülü, ELK Stack (Elasticsearch, Logstash, Kibana) veya Splunk gibi hizmetler tarafından toplanacak JSON günlükleri oluşturacak şekilde yapılandırabilirsiniz.
Monitoring & Load Balancing Check
Trafiği dağıtmak için yük dengelemeyi ve uygulamanızın sağlığı ile performansını takip etmek için izlemeyi öğrendiniz. Şimdi ne kadar anladığınızı kontrol edelim.
Recap: Scaling & Observing
Tebrikler! FastAPI için yük dengeleme ve izlemenin temellerini kavradınız:
- Yük dengeleme, istekleri birden fazla örnek arasında dağıtarak yüksek erişilebilirlik ve optimum performans sağlamak, uygulamanızı ölçeklendirmek için çok önemlidir.
- İzleme, uygulamanızın durumunu anlamak için istek oranı, gecikme süresi ve hata oranları gibi temel metriklerin takip edilmesini içerir.
- FastAPI'deki özel ara yazılımlar (middleware), temel metrik toplama işlemlerini uygulamak için mükemmel bir yoldur.
- Yapılandırılmış günlükleme (structured logging), uygulamanızın davranışına dair derin bilgiler sağlar.
Bu uygulamalar, sağlam ve üretime hazır FastAPI servisleri için hayati önem taşır!
Sıkça Sorulan Sorular
“Yük Dengeleme ve İzleme” dersi ücretsiz mi?
Evet — “Yük Dengeleme ve İzleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.
“Yük Dengeleme ve İzleme” dersinde ne öğreneceğim?
Yük dengeleme kavramlarını ve en iyi performans için FastAPI hizmetlerinizi üretim ortamında nasıl izleyeceğinizi öğrenin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Yük Dengeleme ve İzleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Redis ile Önbellekleme Stratejileri
- Eşzamansız Veritabanı Erişimi
- Yük Dengeleme ve İzleme
- Arka Plan Görevleri ve İş Kuyrukları