Salesforce aynı anda on binlerce şirketin iş süreçlerini yönettiği dev bir bulut platformudur. Bu kadar çok kullanıcının aynı altyapıyı paylaştığı bir ortamda düzeni korumak için bazı kurallar gerekir. İşte Governor Limits bu kuralların adıdır. İlk bakışta geliştiricilerin önünde bir engel gibi görünseler de aslında bu sınırlar, sistemin adil, güvenli ve performanslı çalışmasının temelini oluşturur. Salesforce’un herkese aynı hızda ve aynı kalitede hizmet verebilmesi bu görünmez limitler sayesinde mümkündür.
Günlük Hayattan Küçük Bir Governor Limits Örneği
Bu noktayı daha somut hale getirmek için günlük hayattan bir örnek düşünelim. Büyük bir futbol maçına biletler satışa çıktığında yüzbinlerce taraftar aynı anda sisteme yüklenir. Eğer sınırsız satın alma hakkı olsaydı bazı kişiler yüzlerce bilet alır, diğerleri ise hiç bilet bulamazdı. Bu durum sadece haksızlık yaratmakla kalmaz aynı zamanda sistemin dengesini de bozar. İşte bu yüzden basit bir kural konur: kişi başı en fazla üç bilet. Bu sınırlama tek tek taraftarları cezalandırmak için değil herkesin maçı izleyebilmesi için vardır. Governor Limits de Salesforce dünyasında aynı mantıkla işler. Tek bir kod parçasının yüz binlerce sorgu çalıştırmasına ya da milyonlarca kaydı aynı anda güncellemesine izin verilmez. Çünkü bu gerçekleşirse sadece o org değil aynı platformu paylaşan binlerce müşteri etkilenir. Limitler geliştiriciyi durdurur ve sistemi çökmekten korur.
Governor Limits’in varlık nedeni bu örnekten anlaşılacağı üzere adaleti sağlamaktır ama bunun yanında performansın düşmemesi, güvenliğin korunması ve uygulamaların ölçeklenebilir şekilde çalışması için de hayati rol oynar. Salesforce’un mimarisi gereği tek bir müşterinin yanlış yazdığı kodun tüm sistemi etkileme ihtimali vardır. Limitler bu riski ortadan kaldırır. Bir işlem belirli bir süreyi aştığında durdurulur, çok fazla sorgu çalıştırıldığında hata verilir, bellekte gereğinden fazla veri tutulduğunda işlem iptal edilir. Bu sınırlar olmasaydı platformu kullanan herkes aynı anda yavaşlama ya da kesinti yaşardı.
En Sık Karşılaşılan Sınırlar
Salesforce’ta yüzlerce farklı limit bulunur fakat günlük hayatta en çok şu sınırlara rastlanır:
- Veritabanı sorguları (SOQL): Tek bir işlemde en fazla 100 sorgu çalıştırılabilir. Ayrıca her sorgu en fazla 50.000 kayıt döndürebilir.
- Veri işlemleri (DML): Insert, update veya delete gibi işlemler toplamda 150 kez çağrılabilir. Tek seferde 10.000 kayıt işlenebilir.
- İşlem süresi (CPU Time): Kodun işlem süresi 10 saniyeyi geçtiğinde sistem otomatik olarak durur.
- Bellek kullanımı (Heap Size): Aynı anda bellekte en fazla 6 MB (senkron) veya 12 MB (asenkron) veri tutulabilir.
Bu kurallar küçük işlemler sırasında fark edilmeyebilir. Ancak binlerce kaydın işlendiği durumlarda ya da hatalı kurgulanmış otomasyonlarda kendini gösterir ve bu da aslında bir avantajdır çünkü yanlış yaklaşımlar platformu yavaşlatmadan erkenden tespit edilir.
Sadece Teknik Değil
Governor Limits çoğu zaman yalnızca geliştiricilerin sorumluluğuymuş gibi düşünülür. Oysa bu sınırların etkisi kodun ötesine geçer. Örneğin bir org’da aynı anda çok sayıda akış, iş akışı ya da süreç tetiklendiğinde limitler devreye girebilir. Büyük veri setleriyle hazırlanmış raporlar veya panolar da sorgu sınırlarını zorlayabilir. Harici sistemlerle yapılan entegrasyonlarda ise günlük API çağrısı kotasının aşıldığını görmek mümkündür. Yani Governor Limits sadece kod yazarken değil yapılandırma yaparken ve iş süreçlerini tasarlarken de karşımıza çıkar. Bu yüzden bu kuralları anlamak yalnızca geliştiricilerin değil adminlerin ve iş birimlerinin de sorumluluğundadır.
Limitlerle Uyumlu Çalışmanın Yolları
Governor Limits’i aşmaya çalışmak yerine onlarla uyumlu çalışmak gerekir. Bunu sağlamanın birkaç temel yolu vardır:
- Toplu işlem mantığı kullanmak: Kayıtları tek tek güncellemek yerine bir liste içinde toplayarak tek seferde işlemek hem daha hızlıdır hem de DML sınırlarının aşılmasını engeller.
- Koleksiyonlardan yararlanmak: List, Set ve Map gibi yapılar aynı verilere tekrar tekrar erişmeye gerek bırakmaz sorguları optimize ederek SOQL limitlerini korumanıza yardımcı olur.
- Asenkron işlemleri tercih etmek: Uzun sürecek ya da yoğun kaynak tüketecek görevleri Queueable, Batch veya Scheduled Apex ile arka planda çalıştırmak CPU süresi ve heap sınırlarını aşmamanın en güvenli yoludur.
- Sade süreçler tasarlamak: Birbirini gereksiz yere tetikleyen akışlar ya da karmaşık otomasyonlar sistemi zorlar. Daha yalın, anlaşılır süreçler kurmak limitlerle uyumlu kalmayı kolaylaştırır.
Bu yaklaşım limitleri bir engel olmaktan çıkarır ve platformu daha verimli kullanmanın bir yoluna dönüştürür.
Sonuç
Governor Limits Salesforce’un en sık tartışılan ama en az anlaşılan konularından biridir. Çoğu zaman geliştiricinin karşısına bir hata mesajı olarak çıkıp can sıkıcı gibi görünür. Oysa bu sınırlar olmasa tek bir org’un hatalı tasarımı bile tüm platformu yavaşlatabilir hatta durma noktasına getirebilirdi. Governor Limits tam da bu yüzden vardır: sistemi dengede tutmak, herkese aynı hızda ve aynı kalitede hizmet sunabilmek.
Onları bir engel olarak değil bize doğru yolu gösteren kurallar olarak görmek gerekir. Çünkü bu sınırlar hem geliştiricileri hem de adminleri daha verimli çözümler üretmeye zorlar. Doğru tasarlanmış kodlar sade süreçler ve akıllıca planlanmış entegrasyonlar sayesinde limitler bir sorun olmaktan çıkar tam tersine güvenilir bir rehber haline gelir. Salesforce’un gücü de işte buradadır: on binlerce şirketin aynı platformu paylaşabilmesini, hiçbirinin diğerini yavaşlatmadan çalışabilmesini mümkün kılan görünmez sınırlar.




