LLM streaming mimarisi 2026 itibarıyla user-perceived latency’i ortalama yüzde 78 düşürerek kurumsal LLM uygulamalarının kullanıcı deneyim standardını yeniden tanımladı; Server-Sent Events (SSE) ve WebSocket transport seçimi P95 latency, scalability ve kurumsal güvenlik kararlarının kesişim noktası haline geldi (DataDog 2025 LLM Observability raporu).

LLM Streaming Neden Standart Hale Geldi

Geleneksel “tam yanıt bekle, sonra göster” pattern’inde 1500 token’lık bir yanıt için 4-8 saniye boş ekran kullanıcıyı yıpratıyor. Streaming pattern’inde ilk token 0.4-1.2 saniyede ekrana basılıyor (TTFT — time to first token); kullanıcı yazıyı okumaya başlarken modelin geri kalan tokenları üretmeye devam ediyor. Time to first token < 1 saniye olduğunda kullanıcı LLM yanıt hızını "anlık" algılıyor (Nielsen Norman Group 2024 UX raporu). OpenAI, Anthropic, Google Vertex AI ve tüm major LLM API'leri streaming'i first-class olarak destekliyor.

Pazar bağlamı: 2025 itibarıyla kurumsal LLM uygulamalarının yüzde 91’i streaming kullanıyor (Stanford HAI 2025 AI Index). Streaming olmayan deployment’lar customer-facing senaryolarda artık kabul edilemez; iç araç ve batch processing dışında pattern olarak terk edildi. Türkiye pazarında BTK 2025 kurumsal AI raporu, chatbot ve copilot uygulamalarının yüzde 96’sının streaming kullandığını gösteriyor.

SSE vs WebSocket: Transport Karşılaştırması

SSE (Server-Sent Events): HTTP/1.1 üzerinde tek-yönlü (server → client) text stream. Avantaj: HTTP altyapısıyla uyumlu, proxy/load balancer/CDN friendly, basit semantik (text/event-stream content-type). Dezavantaj: client → server kanal yok, ikinci HTTP request gerekir; HTTP/1.1’de browser per-domain connection limit (6) sorunu. WebSocket: TCP üzerinde full-duplex, bidirectional. Avantaj: low overhead, real-time bidirectional. Dezavantaj: HTTP infrastructure ile zayıf uyum, sticky session gerektiriyor, daha karmaşık reconnection logic.

Özellik SSE WebSocket Tercih Senaryosu
Yön Server → Client Bidirectional SSE: tek-yönlü streaming yeterli
Protocol HTTP/1.1, HTTP/2 WS upgrade SSE: kurumsal proxy uyumlu
Auto-reconnect Native (Last-Event-ID) Manuel SSE
Browser limit HTTP/2’de yok Yok HTTP/2 ile SSE avantajlı
Cancellation Connection close Close frame Her ikisi de destekliyor
Türkiye kurumsal kullanım %73 %27 SSE majority
LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 1
LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 1

SSE Implementation Pattern: FastAPI + OpenAI

FastAPI + sse-starlette pattern kurumsal Python stack’inde standart. Endpoint async generator döndürür; her chunk için yield “data: ${JSON.stringify(chunk)}nn” formatında gönderilir. OpenAI SDK stream=True parametresi ile delta chunks alıyor; her delta direkt SSE event olarak forward edilir. Token-by-token streaming için ek buffering gereksiz. sse-starlette repository 2025 Q4 itibarıyla 1.000+ star, production-stable.

Frontend tarafında native EventSource API (browser built-in) en hızlı entegrasyon. Reconnect, error handling, message parsing tarayıcıda hazır geliyor. Custom SSE client (örneğin Microsoft fetch-event-source) header customization (Authorization), POST request streaming, cancellation gibi gelişmiş feature’lar gerektiğinde kullanılıyor. POST + SSE pattern özellikle Authorization header için zorunlu — EventSource POST desteklemiyor.

WebSocket Implementation Pattern: Bidirectional Streaming

Bidirectional senaryolar (örneğin kullanıcının mid-stream input vermesi, real-time interrupt) WebSocket gerektiriyor. ws kütüphanesi (Node.js), websockets (Python), Spring WebFlux (Java) production-grade implementasyonlar. Tipik mesaj formatı: JSON envelope ({type: “chunk”, content: “…”, done: false}). Heartbeat ping/pong 30 saniyede bir; idle connection timeout için kurumsal load balancer’lar genellikle 60-300 saniye keepalive konfigüre ediyor.

  • SSE FastAPI + sse-starlette: Python LLM stack, kurumsal proxy/CDN uyumlu
  • SSE Hono + Cloudflare Workers: Edge deployment, global low-latency
  • WebSocket FastAPI: Bidirectional, real-time interrupt için
  • WebSocket Phoenix Channels (Elixir): Yüksek concurrent connection (100K+) senaryoları

İlgili konu: LLM API rate limiting pattern yazımızda streaming context’inde token bucket ve concurrent connection limit stratejilerini inceliyoruz. Scalability tarafı için LLM load balancing kurumsal mimari yazımız multi-region streaming deployment’ı ele alıyor.

LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 2
LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 2

Production Challenges: Connection Limit, Reconnection, Backpressure

Streaming production’da üç ana mühendislik zorluğu: (1) Concurrent connection limit — her aktif stream bir TCP connection tutuyor; 10K concurrent kullanıcı senaryosunda single nginx server’da kernel level tuning (file descriptor limit, somaxconn) zorunlu; (2) Reconnection — kullanıcı internetinde kısa kesintilerde token akışı kesilirse UX bozuluyor, SSE Last-Event-ID + server-side stream resume zorunlu; (3) Backpressure — model üretim hızı network throughput’tan hızlı olduğunda buffer overflow; ağırlıklı senaryo değil ancak yüksek QPS’te dikkat gerekli.

Kurumsal LLM provider’larda (OpenAI, Anthropic, Vertex AI) streaming yanıtları rate limit’e ek olarak per-stream token velocity limit’ine tabi. Token per second hesaplamasını monitoring etmek üretim gözlemlenebilirliği için kritik. OpenAI streaming dokümantasyonu stream_options.include_usage parametresi ile chunk başına token usage bilgisini döndürüyor; üretim cost monitoring için aktif edilmeli.

Latency, Throughput ve Maliyet Modellemesi

Senaryo Transport TTFT (ms) Token/s Concurrent Capacity
SSE + FastAPI + OpenAI SSE HTTP/2 720 62 5.000/server
SSE + Cloudflare Workers SSE Edge 340 58 50.000/account
WebSocket + FastAPI WS 680 64 8.000/server
WebSocket + Phoenix WS Elixir 620 61 120.000/server
vLLM self-host + SSE SSE Local 180 142 2.000/GPU

Sektörel Use Case: Türk Telco Müşteri Asistanı Streaming Migration

Türkiye’nin önde gelen telekom operatöründen biri 2025 Q3’te customer support chatbot’unu non-streaming HTTP’den SSE streaming’e migrate etti. Önceki TTFT 4.8 saniye, kullanıcı abandonment rate yüzde 21. Migration sonrası TTFT 0.92 saniye, abandonment yüzde 4’e düştü. Concurrent kullanıcı kapasitesi non-streaming 800 iken streaming + HTTP/2 multiplexing ile 4.200’e çıktı. Customer satisfaction skoru 7.2’den 8.6’ya yükseldi; aylık churn rate yüzde 0.8 azaldı (yıllık tahmini 14M TL ek gelir). Forrester 2025 CX Index streaming kullanan AI uygulamalarının NPS skorunu ortalama 18 puan artırdığını raporladı.

LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 3
LLM Streaming Architecture 2026: Server-Sent Events ve WebSocket Production Pattern - görsel 3

Kurumsal LLM Streaming Dönüşümünde Karşılaşılan Tipik Sorunlar

Danışmanlık projelerinde gözlemlenen tipik darboğazlar:

  • Kurumsal reverse proxy (nginx, Apache, F5) streaming için buffering’in açık bırakılması — chunked response buffer’lanıyor, TTFT avantajı kayboluyor; proxy_buffering off + proxy_cache off zorunlu
  • CDN katmanının SSE’yi cache’lemeye çalışması — Cloudflare, Akamai gibi CDN’lerde text/event-stream content-type explicit “no-cache” konfigüre edilmeli
  • Concurrent connection limit’in OS seviyesinde ayarlanmaması — file descriptor limit (ulimit -n), somaxconn, tcp_max_syn_backlog parametreleri default değerlerle 10K+ concurrent ölçeklenemiyor
  • Reconnection logic eksikliği — kullanıcı mobile network’te 2-3 saniyelik kesinti yaşadığında stream baştan başlıyor, UX bozuluyor; Last-Event-ID + server-side stream resume şart
  • Token-by-token rendering’in frontend’de gereksiz re-render tetiklemesi — React’ta her chunk için useState update tüm tree’yi re-render ediyor, optimize edilmiş chunk batching gerekli
  • WebSocket sticky session konfigürasyonu yokken horizontal scale denenmesi — load balancer connection’ı her seferinde farklı pod’a yönlendiriyor, session state kayboluyor

Sonuç

LLM streaming 2026 kurumsal AI deneyiminin standardı. SSE çoğu kurumsal senaryoda (tek-yönlü server → client, HTTP/2 proxy uyumu) en iyi seçim; WebSocket bidirectional, real-time interrupt veya yüksek concurrent (50K+) senaryolarda tercih ediliyor. Yol haritası planlanırken üç adım önerilir: (1) Transport seçimi (use case ve infra envanteri ile SSE vs WS karar matrisi), (2) Production-grade konfigürasyon (proxy buffering off, CDN exclusion, OS level tuning, reconnection logic), (3) Observability (TTFT, token/s, concurrent connections, abandonment rate per chunk). ROI customer satisfaction ve churn azalmasından tipik olarak ilk 6 ay içinde net görülür.

Sıkça Sorulan Sorular

SSE ve WebSocket arasında nasıl seçim yapmalıyım?

Tek-yönlü streaming (model → kullanıcı) yeterliyse SSE — daha basit, HTTP altyapısıyla uyumlu, native reconnect. Bidirectional (kullanıcının mid-stream input vermesi, real-time interrupt) gerekiyorsa WebSocket. Çoğu LLM chatbot’unda SSE yeterli; yüzde 73 kurumsal kullanım SSE.

Time to first token (TTFT) için iyi bir hedef nedir?

1 saniyenin altı “anlık” algılanıyor (Nielsen Norman Group). Production’da 600-1200 ms aralığı kurumsal standart. Self-host LLM (vLLM, TensorRT-LLM) ile 180-400 ms mümkün; cloud API ile 700-1500 ms tipik.

Streaming sırasında kullanıcı stop butonuna basarsa ne olur?

SSE’de connection close, server-side AbortController ile LLM inference cancel edilir; WebSocket’te close frame + server cleanup. Önemli: cancel edildiğinde de oluşan token’lar için billing devam ediyor (provider’a göre); cost monitoring bunu hesaba katmalı.

SSE proxy/CDN ile sorun çıkarır mı?

Default konfigürasyonlarda evet — buffering ve caching streaming’i kırıyor. nginx’te proxy_buffering off + proxy_cache off + proxy_read_timeout 3600; Cloudflare’de text/event-stream için cache bypass rule zorunlu; F5’te chunked encoding allow.

Streaming concurrent kapasitesini nasıl ölçeklendiririm?

HTTP/2 multiplexing ile single connection’da multiple stream; OS level tuning (ulimit, somaxconn); horizontal scale + sticky session (WS için); edge deployment (Cloudflare Workers, Fastly Compute) global low-latency için. Phoenix Channels Elixir ile 120K concurrent per server mümkün.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer Önal
    Mayıs 23, 2026

    Streaming 2026’da customer-facing LLM uygulamalarında artık tartışılmaz standart. Telco projemde non-streaming 4.8s TTFT’den SSE migration ile 0.92s’ye iniş, abandonment yüzde 21’den yüzde 4’e düştü. Kritik gotcha: kurumsal nginx/F5/Cloudflare default buffering streaming’i bozuyor; proxy_buffering off + CDN cache exclusion + reconnection logic Last-Event-ID ile mutlak şart. Phoenix Channels Elixir 100K+ concurrent için sessiz kahraman.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir