Binlerce firmanın WhatsApp mesajlarını, Instagram DM'lerini ve eşzamanlı telefon çağrılarını aynı saniye içinde çökmeden, birbirine karıştırmadan ve gecikmesiz işlemek... Bu, basit bir yazılım projesinden çok, devasa bir veri otobanı (data highway) inşa etmeye benzer. İşte milyon kullanıcılık DoWaba SaaS mimarisinin perde arkası.

1. Monolitik Çekirdek, Mikroservis Kaslar

Projeye ilk başlarken her şeyi mikroservislere bölmek cazip gelse de, bu "Over-engineering" (aşırı mühendislik) hatasına düşmektir. DoWaba'da biz Kavramsal Monolit (Majestic Monolith) yaklaşımını benimsedik.

Temel iş kuralları, veritabanı yönetimi ve API servisleri güçlü ve kaya gibi sağlam bir Laravel çekirdeği üzerinde çalışır. Ancak gerçek zamanlı ses işleme, WebSockets ve ağır yapay zeka proxy işlemleri gibi çok yüksek eşzamanlılık gerektiren (concurrency) bölümleri Node.js tabanlı küçük mikroservislere ayırdık. Ses köprümüz saniyede yüzlerce sesi işlerken, ana veritabanımızı hiç yormaz.

2. Kuyruk Mimarisi: "Asla Anında Yapma, Kuyruğa At"

Sistemde gerçekleşen hiçbir ağır işlem (bir müşteriye toplu mail atmak, WhatsApp'tan gelen medyayı indirmek veya yapay zekaya prompt göndermek) kullanıcı beklerken anlık olarak (synchronous) yapılmaz.

Her şey Redis veya RabbitMQ kuyruklarına gönderilir. Arkada çalışan düzinelerce Worker (işçi) bu kuyrukları eritir. Bu sayede bir günde 1 milyon mesaj bile gelse sistem çökmez; sadece kuyruk uzar ve biz yeni Worker sunucuları ayağa kaldırarak kuyruğu hızla eritiriz.

3. Multi-Tenancy (Çoklu Kiracı) Veritabanı Stratejisi

Binlerce farklı şirketin (tenant) verisini aynı sistemde tutmak büyük riskler barındırır. Firma A'nın mesajları yanlışlıkla Firma B'nin ekranına asla düşmemelidir.

DoWaba'da her şirketin verisi mantıksal olarak (Tenant ID bazlı) izole edilir. Sorgular atılırken sistemin çekirdek yapısı her sorguya otomatik olarak WHERE site_id = X kuralını ekler. Geliştirici istese bile başka bir firmanın verisini çekemez (Global Scope Isolation). Kritik projelerde ise (Büyük hastaneler, bankalar) veritabanı şemasını tamamen ayırarak (Separate Schema) maksimum güvenlik sağlıyoruz.

4. Saniyeler İçinde Ölçeklenme (Auto-Scaling)

Cuma günü büyük bir markanın Black Friday kampanyası başladığında trafik aniden 10 katına çıkar. Load Balancer (Yük Dengeleyici) hemen CPU kullanımlarını izler. Trafik artınca bulut altyapımızda 10 saniye içinde klon sunucular ayağa kalkar, trafiği karşılar ve kampanya bitip gece olduğunda sunucular tekrar kendini kapatarak maliyet tasarrufu sağlar.

İşte milyonlarca kullanıcıyı kesintisiz yönetmenin sırrı, doğru yerde kuyruk kullanmak, veriyi sıkı izole etmek ve gerektiğinde yatay olarak (horizontal) sunucu ekleyebilme özgürlüğüdür.