proje 12
Gerçek Zamanlı Backend Servisleri
Çift yönlü soket haberleşmesi ve olay tabanlı veri akışı üzerine kurulu, eşzamanlı çok sayıda istemciyi yöneten mikroservis mimarili backend altyapısı.
- Kategori
- Web
- Rol
- Backend ve sistem mimarisi
- Yıl
- 2026
kullanılan teknolojiler
- Python
- FastAPI
- Flask-SocketIO
- Node.js
- Express
- WebSockets
- PostgreSQL
problem
Problem
Klasik REST mimarisinde istemcinin veriyi almak için sürekli istek atması gerekiyor. Bu, sunucu kaynaklarını gereksiz yere tüketiyor ve anlık veri gerektiren sistemlerde hem yüksek gecikmeye hem de istemciler arasında veri tutarsızlığına yol açıyor.
çözüm
Çözüm
Python tarafında Flask-SocketIO ve FastAPI, Node.js tarafında Express ve WebSockets kullanarak çift yönlü, olay tabanlı soket mimarileri kurdum. Veri değiştiğinde sunucu istemciye kendisi haber veriyor; istemcinin sorması gerekmiyor. Arka planda PostgreSQL ve MySQL bağlantılarını ve oturum yönetimini merkezi biçimde kurguladım.
sonuç
Sonuç
İstemciler arasında veri iletim süresini milisaniyeler seviyesine indiren, sunucu yükünü düşüren ve eşzamanlı bağlantıları hatasız yöneten ölçeklenebilir servisler hayata geçti.
öne çıkan özellikler
- 01Python ve Node.js tarafında olay tabanlı, çift yönlü soket mimarileri.
- 02WebSockets ve Flask-SocketIO ile düşük gecikmeli anlık veri iletimi.
- 03FastAPI ve Pydantic ile tip güvenli, otomatik dokümante edilen REST uç noktaları.
- 04PostgreSQL ve MySQL bağlantılarının ve oturum yönetiminin merkezi kurgusu.
neden bu seçimler
Neden WebSockets, HTTP long polling değil?
Long polling her istekte HTTP başlıklarını yeniden taşıyor ve bağlantıyı sürekli kurup kapatıyor. Kalıcı soket bağlantısında bu yük tamamen ortadan kalkıyor; hem bant genişliği hem yanıt süresi minimuma iniyor.
Neden hem Python hem Node.js?
Farklı servislerin farklı ihtiyaçları vardı. Veri işleme ve tip güvenliği gereken uçlarda FastAPI ve Pydantic, yoğun eşzamanlı bağlantı yönetiminde Node.js ve Express daha iyi sonuç verdi. Tek dile zorlamak yerine her servisi kendi işine uygun araçla yazdım.