Yüksek TPS’li Sistemler Kurmak
Saniyede Milyonlarca İsteği Karşılamanın Arkasındaki Mimari, Modeller ve Felsefi Temeller

Yüksek TPS’li Sistemler Kurmak
Saniyede Milyonlarca İsteği Karşılamanın Arkasındaki Mimari, Modeller ve Felsefi Temeller
İçindekiler
» Yüksek TPS Sistemlerde Eşzamanlılık: Java Virtual Threads ve .NET Async/Await
» Akka: Yüksek Ölçekli Dağıtık Sistemler için Actor Framework
» Microsoft Orleans: Dağıtık Sistemler için Virtual Actor Framework
» Dağıtık Sistemlerde Tutarlılık: Strong ve Eventual Consistency Karşılaştırması
» EK-A Akka vs Microsoft Orleans vs Spring WebFlux , Uçtan Uca Yaşam Döngüsü Karşılaştırması
» EK-B Java Spring Virtual Threads vs .NET Async/Await Uçtan Uca Yaşam Döngüsü Karşılaştırması
Black Friday gecesi saat 00:00. Binlerce kullanıcı aynı anda “Sepete Ekle” butonuna basıyor. Stok 100 adet, talep 50.000. Sisteminiz bu anı nasıl karşılıyor?
Bu soru, modern yazılım mühendisliğinin en kritik sorularından biri. Yüksek TPS (Transactions Per Second) gerektiren sistemler artık sadece büyük teknoloji şirketlerinin problemi değil — e-ticaret platformlarından fintech uygulamalarına, IoT sistemlerinden gerçek zamanlı analitik platformlarına kadar geniş bir yelpazede karşımıza çıkıyor.
Ancak yüksek TPS’li bir sistem inşa etmek, sadece daha fazla sunucu eklemek ya da veritabanı bağlantı havuzunu büyütmek değil. Bu, temelde bir mimari düşünce biçimi meselesi. Thread’lerin nasıl yönetildiğinden mesajların nasıl iletildiğine, tutarlılık garantilerinden eşzamanlılık modellerine kadar pek çok katmanda doğru kararlar vermek gerekiyor.
Bu Yazı Dizisi Neden Var?
Yüksek TPS konusunda Türkçe kaynak denildiğinde çoğunlukla araçsal bilgiye — “Kafka nasıl kurulur”, “Redis cache nasıl eklenir” gibi — rastlıyoruz. Oysa asıl mesele araçlar değil, bu araçların arkasındaki düşünce modelleri ve mimari prensiplerdir.
Bu yazı dizisinde amacımız şu:
Yüksek TPS’li sistemlerin arkasındaki kavramsal temelleri, eşzamanlılık modellerini, actor tabanlı framework’leri, reactive programlama yaklaşımlarını ve dağıtık tutarlılık stratejilerini derinlemesine incelemek. Her konuyu teorik zemininden başlatıp pratik uygulama seviyesine taşımak.
Hedef kitlemiz: yazılım mimarları, kıdemli geliştiriciler, teknik liderler ve bu alanlarda uzmanlaşmak isteyen herkes.
1. Actor Model: Kavramsal Temeller ve Felsefi Arka Plan
Yüksek TPS sistemlerinin temel yapı taşlarından biri olan Actor Model, 1973'te Carl Hewitt tarafından ortaya atılan bir eşzamanlılık modeli. Peki neden onlarca yıl sonra hâlâ bu kadar güncel?
Bu bölümde Actor Model’in felsefi kökenlerinden — paylaşımlı durum (shared state) probleminden neden kaçınmamız gerektiğinden — başlayarak, “her şey bir aktördür” felsefesini inceliyoruz. Mesaj tabanlı iletişim, konum şeffaflığı (location transparency), hata izolasyonu ve “let it crash” felsefesi gibi kavramları ele alarak, Actor Model’in neden yüksek TPS sistemlerinde tercih edilen bir mimari paradigma olduğunu tartışıyoruz.
Bu bölüm, serinin geri kalanı için kavramsal zemin oluşturuyor. Akka veya Orleans’ı anlamak isteyen herkesin önce burayı okuması önerilir.
2. Yüksek TPS Sistemlerde Eşzamanlılık: Java Virtual Threads ve .NET Async/Await
Eşzamanlılık, yüksek TPS’nin kalbi. Ama “thread ne kadar çok, performans o kadar iyi” gibi bir yanılgıyla başlamak, sistemi çökermenin en hızlı yolu.
Bu bölümde iki büyük ekosistemin eşzamanlılık yaklaşımını derinlemesine karşılaştırıyoruz: Java dünyasında Project Loom ile gelen Virtual Threads ve .NET ekosistemindeki async/await modeli. Her iki yaklaşımın altındaki temel prensipler, thread modelleri, performans profilleri ve hangi senaryoda hangisinin daha uygun olduğunu tartışıyoruz.
Platform thread’lerin maliyetinden, M:N thread mapping’e, coroutine kavramından structured concurrency’ye kadar eşzamanlılığın inceliklerini ele alıyoruz. Ayrıca her iki yaklaşımın yüksek TPS senaryolarında — örneğin saniyede 10.000 HTTP isteği karşılama durumunda — nasıl davrandığını gerçek metriklerle gösteriyoruz.
3. Akka: Yüksek Ölçekli Dağıtık Sistemler için Actor Framework
Actor Model’i teoride anladıktan sonra, pratikte en olgun ve yaygın implementasyonlardan biriyle tanışma zamanı: Akka.
Bu bölümde Akka’nın mimarisini katman katman inceliyoruz. Actor hiyerarşisi ve supervision stratejileri, Akka Cluster ile dağıtık aktör yönetimi, Akka Streams ile backpressure-aware veri işleme, Akka Persistence ile event sourcing uygulamaları ve Akka Sharding ile yatay ölçeklendirme konularını ele alıyoruz.
Her kavramı e-ticaret senaryoları üzerinden somutlaştırıyoruz: sipariş işleme pipeline’ından stok yönetimine, ödeme orkestrasından bildirim dağıtımına. Akka’nın “let it crash” felsefesini gerçek dünya hata senaryolarıyla gösteriyoruz.
4. Microsoft Orleans: Dağıtık Sistemler için Virtual Actor Framework
Akka güçlü ama karmaşık. Peki ya actor modelinin avantajlarını, daha düşük bir öğrenme eğrisiyle elde etmek istersek?
Microsoft Orleans, “Virtual Actor” (Grain) kavramıyla bu soruya cevap veriyor. Bu bölümde Orleans’ın klasik actor modelden farkını — yaşam döngüsü yönetiminin otomatikleştirilmesi, şeffaf aktivasyon/deaktivasyon, persistence entegrasyonu — derinlemesine inceliyoruz.
Grain türleri, Silo mimarisi, Orleans Cluster yönetimi, Grain persistence, Reminder ve Timer mekanizmaları, Stream Provider yapısı ve Orleans’ın .NET ekosistemiyle entegrasyonunu ele alıyoruz. Akka ile Orleans arasında mimari düzeyde karşılaştırma yaparak, hangi senaryoda hangisinin daha uygun olduğunu tartışıyoruz.
5. Spring WebFlux ile Non-Blocking Reactive Programlama
Yüksek TPS denildiğinde akla gelen bir diğer yaklaşım: reactive programlama. Thread’leri bloklamadan, event loop tabanlı bir modelle binlerce eşzamanlı isteği karşılamak.
Bu bölümde Spring WebFlux’ı ve arkasındaki Project Reactor kütüphanesini inceliyoruz. Mono ve Flux kavramlarından başlayarak, backpressure stratejileri, non-blocking I/O’nun nasıl çalıştığı, Netty event loop modeli ve reactive pipeline tasarımını ele alıyoruz.
Geleneksel Spring MVC ile WebFlux arasındaki farkları, her ikisinin TPS profilerini ve hangi senaryolarda reactive yaklaşımın gerçek bir avantaj sağladığını (ve hangilerinde overhead olduğunu) tartışıyoruz. Ayrıca WebFlux’ın R2DBC ile reactive veritabanı erişimi, WebClient ile non-blocking HTTP çağrıları ve reactive security entegrasyonunu uygulama örnekleriyle gösteriyoruz.
6. Dağıtık Sistemlerde Tutarlılık: Strong ve Eventual Consistency Karşılaştırması
Yüksek TPS’li bir dağıtık sistemde her şeyi hızlı yapabilirsiniz — ta ki “tutarlılık” devreye girene kadar. CAP Teoremi bize şunu hatırlatıyor: partition tolerance’dan vazgeçemeyiz, dolayısıyla consistency ile availability arasında bir trade-off yapmak zorundayız.
Bu bölümde bu trade-off’un derinliklerine iniyoruz. Strong consistency’nin ne zaman zorunlu olduğu (finansal işlemler, stok yönetimi), eventual consistency’nin ne zaman yeterli olduğu (bildirimler, arama indeksleri, analitik), ve bu iki ucun arasındaki ara modeller — causal consistency, read-your-writes, monotonic reads — gibi kavramları ele alıyoruz.
PACELC Teoremi, Raft ve Paxos konsensüs protokolleri, CRDTs (Conflict-free Replicated Data Types), Saga Pattern ile dağıtık iş süreçlerinde tutarlılık yönetimi ve event sourcing ile eventual consistency’nin doğal uyumu gibi konuları pratik örneklerle inceliyoruz.
Yazı Dizisinin Yol Haritası
Bu altı bölüm, yüksek TPS sistemleri anlamak için birbirini tamamlayan bir bütün oluşturuyor:

Önerilen okuma sırası: Bölüm 1 ile başlayın — actor modelin kavramsal temelleri, sonraki tüm bölümler için referans noktası oluşturuyor. Ardından ilgi alanınıza göre devam edebilirsiniz: JVM ekosistemindeyseniz 2 → 3 → 5 yolu, .NET dünyasındaysanız 2 → 4 yolu mantıklı bir ilerleme sunar. Bölüm 6 ise her iki yol için de son durak — çünkü sonuçta her yüksek TPS sistemi bir tutarlılık kararı vermek zorundadır.
Kimler İçin?
Bu yazı dizisi aşağıdaki profillere hitap etmektedir:
Yazılım Mimarları — Yüksek TPS gerektiren sistemlerde teknoloji ve pattern seçimi yaparken kavramsal derinlik arayanlar.
Kıdemli Geliştiriciler — Actor model, reactive programlama ve dağıtık tutarlılık konularında uzmanlaşmak isteyenler.
Teknik Liderler — Ekiplerini bu konularda yönlendirmek ve eğitmek isteyenler.
Meraklı Mühendisler — “Neden Akka?”, “Neden WebFlux?”, “Neden eventual consistency?” sorularına sadece araçsal değil, kavramsal cevaplar arayanlar.
Son Söz
Yüksek TPS’li sistem tasarlamak, bir araç kutusundan doğru aleti seçmekten çok daha fazlası. Aslında mesele şu soruyu doğru cevaplamak: “Bu sistemde neyi feda edebilirim ve neyi asla edemem?”
Latency mi, throughput mu? Strong consistency mi, availability mi? Thread-per-request mi, event loop mu? Actor isolation mı, shared state mi?
Bu soruların evrensel bir doğru cevabı yok. Ama doğru cevabı verebilmek için, seçeneklerin arkasındaki felsefeyi ve trade-off’ları derinlemesine anlamak gerekiyor.
İşte bu yazı dizisi tam olarak bu anlayışı inşa etmek için tasarlandı.
Keyifli okumalar!
Bu yazı dizisi düzenli olarak güncellenmektedir. Yeni bölümler yayınlandıkça bu sayfa güncellenecektir.
Sorularınız ve geri bildirimleriniz için yorum bırakabilir veya bana doğrudan ulaşabilirsiniz.
메타데이터
- post_id
- 37fccd271f4a
- slug
- yüksek-tpsli-sistemler-kurmak-37fccd271f4a
- url
- https://medium.com/@sahinyelkenci/y%C3%BCksek-tpsli-sistemler-kurmak-37fccd271f4a
- canonical_url
- https://medium.com/@sahinyelkenci/y%C3%BCksek-tpsli-sistemler-kurmak-37fccd271f4a
- author_url
- https://medium.com/@sahinyelkenci
- status
- ok
- fetched_at
- 2026-06-14 16:15:44