Salesforce

Salesforce Performans Sorunları ve Çözümleri

Salesforce, her ölçekteki işletmenin satışlarını, müşteri hizmetlerini ve pazarlama aktivitelerini kolaylaştırmasına yardımcı olabilecek güçlü bir CRM platformu ve dünya çapında en tanınmış bulut tabanlı çözümdür. Ancak Salesforce performans sorunları binlerce kullanıcıyı etkileyebilecek bir konu olabilir.

Salesforce, tüm karmaşık sistemler gibi çeşitli performans sorunlarıyla karşılaşabilir. Bu nedenle, Salesforce performansını optimize etmek, kullanıcı deneyimini iyileştirmek ve iş süreçlerinizi kesintisiz sürdürmek için önem kazanır. İşletmeniz büyüdükçe, Salesforce performans optimizasyonuna olan ihtiyaç da artar. Gelin hep birlikte ilgili platformda zamanla karşılaşabileceğiniz potansiyel performans problemlerine ve çözümlerine daha detaylı bakalım.

Büyük Veri Hacimleri

Büyük veri hacimleri, Salesforce’ta standart (Leads, Accounts, Contacts, Opportunities) veya özel nesnelerdeki kayıtların veritabanı işlemlerini zorlaştıracak kadar artmasıdır. Bu durum, Salesforce performansını olumsuz etkileyebilir. Kayıt hacmi arttıkça sorgulama, arama ve veri çekme işlemleri daha uzun sürebilir. Böylece kullanıcıların yavaş yanıt süreleriyle karşılaşmasına ve sistem performansının düşmesine neden olabilir.

Bahse konu önlemek için veri saklama politikaları oluşturulmalıdır. Eski verilerin düzenli aralıklarla arşivlenip silinmesi, sistemde yalnızca gerekli verilerin tutulmasını sağlar. Ayrıca Big Objects adı verilen nesneler, büyük hacimli verileri depolamak ve yönetmek için kullanılabilir. Bu nesneler, tüm müşteri verilerini 360 derece bir bakış açısıyla görmenize ve verileri daha verimli yönetmenize yardımcı olur.

Platformda iki tür büyük nesne vardır: Standart Büyük Nesneler ve Özel Büyük Nesneler. Standart Büyük Nesnelere örnek olarak Field Audit Trail ürününün bir parçası olan FieldHistoryArchive nesnesi verilebilir. Bu nesneler her Salesforce örneğinde varsayılan olarak bulunur ve özelleştirilemez. Özel Büyük Nesneler ise kurumların ihtiyaçlarına göre oluşturulabilir ve özelleştirilebilir. Büyük Nesneler hakkında daha fazla bilgi için Salesforce Geliştirici Dokümanları adresini ziyaret edebilirsiniz.

Sayfa Düzenleri ve Yükleme Süreleri

Salesforce Classic kullanan kuruluşların sayısı, Salesforce Lightning’in 2016’da piyasaya sürülmesinden sonra kademeli olarak azaldı. Platform, Classic için geliştirme ve destek hizmetlerini zamanla sonlandırırken, birçok kuruluşun Lightning’e geçişi beklenenden uzun sürdü. Bunun temel nedeni, Lightning’in ilk dönemlerde Classic ile aynı seviyede işlevsellik sunamamasıydı. Bu durum, kuruluşlar için geçici işlev kayıplarına yol açtı.

Günümüzde ise Lightning, işlevsel eksiklerini büyük ölçüde tamamlayarak Classic ile rekabet edebilir bir seviyeye ulaştı. Ancak optimize edilmemiş Lightning sayfalarının yükleme süreleri, kullanıcıları Classic’ten Lightning’e geçişe ikna etmede hala önemli bir zorluk olarak öne çıkıyor. Platform, bu tür geri bildirimlere yanıt olarak Lightning App Builder’a “Analyze” butonunu ekleyerek Salesforce performansını iyileştirme sürecini kolaylaştırmıştır.

Sayfa Yanıt Süresi Analizi

Sayfalarınızın yanıt sürelerini analiz etmek ve Salesforce performans optimizasyonları gerçekleştirmek için aşağıdaki adımları takip edebilirsiniz:

  • Edit Page butonuna tıklayın: Bu işlem, sizi Lightning App Builder’a yönlendirecektir. Burada sayfa düzenine ait yükleme sürelerini ve hangi bileşenlerin bu süreleri etkilediğini görebilirsiniz.
  • Analyze butonunu kullanın: Eğer sistem otomatik analiz yapmazsa Analyze butonuna tıklayabilirsiniz. Bu adım, sayfa açılış süresi ve bileşen bazlı performans verilerini içeren bir analiz sayfasını görüntülemenizi sağlar. Örneğin, masaüstü sayfanızın yükleme süresi 2.2 saniye olabilir ve platform bunu “iyi” bir süre olarak belirtebilir.
  • Performans Geliştirme Önerileri: Analiz sonuçlarına göre bileşenlerin yükleme sürelerini optimize edebilirsiniz. Örneğin Related List yerine Record Detail’i varsayılan olarak seçmek, sayfa yükleme süresini belirgin şekilde azaltabilir. Bu basit değişiklik bile masaüstü sayfasındaki yükleme süresini 2.2 saniyeden 1.2 saniyeye düşürebilir.

Yukarıda yer alan adımları mobil ve tablet cihazlar için de uygulayabilirsiniz. Daha kısıtlı kaynaklara sahip bu cihazlarda yapılan optimizasyonlar, kullanıcı deneyimini önemli ölçüde iyileştirir. Bu sayede, Salesforce performansı üzerinde olumlu bir etki yaratarak kullanıcı memnuniyetini artırabilirsiniz.

Sayfanızı Hızlandırmak İçin Yapmanız Gerekenler

Sayfalarınızı hızlandırmak için aşağıda bir kaç ekstra ipucu bulabilirsiniz. Bu adımları uyguladığınızda Salesforce performans sorunlarından kurtulabilirsiniz.

  • Sekmeleri kullanarak sayfayı bölün; başlangıçta yalnızca varsayılan sekme yüklenir ve seçildiğinde ek sekmeler oluşturulur.
  • Sayfanızda çok sayıda ilgili liste varsa “İlgili Liste” bileşenini ikincil bir sekmeye (varsayılan sekmeye değil) yerleştirmeyi düşünün.
  • Hem Ayrıntılar hem de “İlgili Listeler” yavaş işleniyorsa, 1 veya 2 önemli “İlgili Liste” (Tek bileşen veya Hızlı Bağlantı) içeren bir başlangıç varsayılan sekmesi oluşturmayı düşünün.
  • “İlgili Listelerin” sayısını sekme başına 3’e düşürmek performansı artıracaktır.
  • Haberler ve Twitter gibi gerekli olmayan bileşenleri ayrı sekmelere taşıyın.
  • Yinelenen bileşenleri kaldırın
  • Yalnızca her kullanıcıyla ilgili bileşenleri görüntülemek için bileşen görünürlüğünü kullanın.
  • Görünür bileşenlerin sayısını 8 veya daha aza indirerek mobil performansı artırın. Bileşenler Lightning App Builder aracılığıyla mobil cihazdan gizlenebilir.

Verimsiz Sorgular ve Raporlar

Verimsiz sorgular ve raporlar, veri alma hızını ve sistemin genel yanıt süresini olumsuz etkileyerek Salesforce performans sorunlarına yol açabilir. Bu tür sorunları önlemek için aşağıdaki noktalara dikkat edebilirsiniz:

  • Seçici Sorgular Kullanın: Çok sayıda kayıt döndüren sorgular, yanıt sürelerini artırabilir ve sistemin zorlanmasına neden olabilir. Sorgularınıza filtreler ekleyerek büyük veri setlerini sınırlandırın. Filtrenin başında joker karakterler kullanmaktan kaçının, çünkü bu sorgunun seçiciliğini bozabilir.
  • Toplu İşlevlerin Aşırı Kullanımını Önleyin: Raporlarda veya sorgularda SUM, AVG, COUNT gibi toplu işlevlerin gereksiz kullanımı performansı düşürebilir. Bu işlevleri yalnızca gerçekten gerekli olduğunda kullanın.
  • SELECT DISTINCT ve SELECT TOP Kullanımı: SELECT DISTINCT’i yalnızca yinelenen veriler mevcut olduğunda tercih edin. SELECT TOP kullanırken, öngörülemeyen sonuçlardan kaçınmak için ORDER BY ifadesi ekleyin.
  • Sütunları Belirterek Sorgulayın: SELECT * yerine sütun isimlerini açıkça belirtin. Bu, sorgu performansını artırır ve gelecekte yapılacak veri yapısı değişikliklerine karşı daha dayanıklı hale getirir.
  • Sorguları Daha Küçük Parçalara Bölün: Karmaşık ve büyük sorguları, daha performanslı küçük sorgulara bölerek çalıştırabilirsiniz. Bu yöntem, uzun süreli sorguların zaman aşımına uğramasını önler.
  • JOIN Operatörlerini Gözden Geçirin: Gereksiz sayıda JOIN operatörü kullanımı sorgu performansını yavaşlatabilir. Sadece gerekli olan ilişkileri kullanarak sorgularınızı optimize edin.

Rapor İçin Salesforce Performansını İyileştirme İpuçları

Raporlarınızın da hızlı çalışabilmesini sağlamak için sadece ihtiyacınız olan bilgileri performanslı bir şekilde raporlamak için aşağıdaki bir kaç adıma dikkat etmenizi öneririz:

  • Yalnızca ihtiyacınız olan nesnelere ait rapor tipini seçmelisiniz.
  • Raporunuzda ihtiyacınız olmayan sütunları silebilirsiniz.
  • Kayıtları filtrelerken ihtiyacınız yoksa My Team’s ve All seçenekleri yerine My seçeneğini kullanın. Aşağıda Accounts için bir örneğini bulabilirsiniz.
  • Yalnızca özet verilerle ilgilendiğinizde, rapor detay satırlarını gizlemek için ilgili ayarı raporun alt bölümündeki ayarlardan kaldırabilirsiniz.
  • İçerir veya içermez filtreleri yerine eşittir veya eşit değildir filtrelerini kullanın. Örneğin, John’u içeren Kişi Sahibi yerine John Smith’e eşit olan Kişi Sahibi’ni kullanın. Bu, alınan veri miktarını sınırlar ve Salesforce performansını iyileştirerek raporun daha hızlı yüklenmesini sağlar.
  • Tarih kriterlerinizi mümkün olduğunca belirli aralıklarda vermeye çalışın.

Apex Tetikleyicileri Ve İş Akışları

Salesforce çok kiracılı bir saas platform olduğu için kaynakları ekonomik kullanmak çok önemlidir. Bu nedenle diğerlerinin yanı sıra, işlem başına gerçekleştirebileceğimiz sorgu sayısı, bir SOQL işleminde alabileceğimiz satır sayısı gibi platformun koymuş olduğu düzenleyici sınırlamaları vardır. Bu limitlere bağlı kalarak performanslı kodlar yazmak için bir kaç ipucunu aşağıda bulabilirsiniz:

Yürütme Sırası ve Sistem Yükü

Her kayıt işlemi sırasında Salesforce performansı, belirli bir yürütme sırası sunar. Bu sırayı anlamak, performans sorunlarını daha hızlı tespit etmenize yardımcı olabilir. Örneğin, doğrulama kurallarının tetikleyicilerden önce yürütüldüğünü bilmek, olası bir hata durumunda kodun doğru yerden kontrol edilmesini sağlar. Aynı nesne üzerinde Record Triggered Flows, Before Triggers ve After Triggers gibi iş akışlarının eş zamanlı kullanılması ise sistemdeki yükü artırabilir. Bu durum, özellikle büyük kayıt hacimlerinde, “Maximum CPU time on the Salesforce servers” veya “Total number of SOQL queries issued” gibi sık karşılaşılan hatalara yol açabilir.

Bazı limitler yürütülen işlemlerin Synchronous veya Asynchronous olmasına göre değişebilir. Daha detaylı bilgi için lütfen Salesforce sayfasını inceleyin: https://developer.salesforce.com/docs/atlas.en-us/salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_apexgov.htm

Apex Tetikleyicileri Ve İş Akışları Sorunu İçin Çözüm Önerileri

Salesforce performans sınırlamalarından kaçınmak için hangi otomasyon aracının hangi senaryoda kullanılması gerektiğini bilmek önemlidir. Flow, Process Builder veya Workflow gibi araçlarla yürütülemeyen karmaşık otomasyon ihtiyaçlarında Apex tetikleyicileri devreye girer.

Apex tetikleyicileri, özellikle şu durumlar için ideal bir çözümdür:

  • İç içe döngüler gerektiren akışlar,
  • Döngü içindeki Get element işleviyle çalışılması,
  • Büyük veri hacimlerinin işlenmesi,
  • Özel entegrasyonların uygulanması,
  • Otomasyon problemlerinde hataların günlüğe kaydedilmesi.

Apex tetikleyicileri, toplu işlemeye uygun şekilde optimize edilmiştir ve her işlemde 200’e kadar kayıt işleyebilir. Kodunuzu birden fazla kayıt üzerinde çalışabilecek şekilde tasarlamak, büyük veri setlerini platformun sınırlarını aşmadan verimli bir şekilde yönetmenizi sağlar. Kullanabileceğiniz bazı temel teknikler ise aşağıdaki gibidir:

SOQL Sorgularının Sayısını Azaltın

APEX kodlarında sık yapılan hatalardan biri, döngülerin içinde sorgu kullanmaktır. Bu, Salesforce performans sorunlarına yol açabilir. İhtiyacınız olan kayıtları döngüye girmeden önce bir listeye veya kümeye toplayarak sorgulayabilirsiniz. Örneğin, bir SOQL sorgusu ile yalnızca “Closed Lost” değerine sahip fırsatları ve başka bir sorgu ile “Closed Won” değerine sahip fırsatları almak yerine, “Stage” değerinin “Closed Lost” veya “Closed Won” olduğu durumlar için tek bir sorgu kullanabilirsiniz: IN (‘Closed Lost’, ‘Closed Won’). Bu yaklaşım, kodunuzu daha verimli hale getirir.

Kodunuzdaki İç İçe Geçmiş Döngülerin Sayısını Azaltın

Birden fazla iç içe döngü, Salesforce performans sorunlarının en yaygın nedenlerinden biridir. Bu durumu önlemenin etkili bir yolu, Haritalar (Maps) kullanmaktır. Örneğin, ikinci bir döngünün her öğesi için bir anahtar oluşturabilir ve bu anahtarları Haritaya yerleştirebilirsiniz. Bu yöntem, kodunuzu daha okunabilir ve verimli hale getirir.

Döngülerde İşlenmesi Gereken Öğelerin Sayısını Azaltın

Bir tetikleyici işleyici yönteminin, yalnızca belirli bir kayıt türüyle ilgili kayıtları işlemesi gerekiyorsa, bu kayıtları önceden bir listeye eklemek en iyi yöntemdir. Örneğin, kayıt türü “X” ise, bu tür kayıtları bir listeye toplayabilir ve güncelleme sırasında yalnızca bu listeyi işleyebilirsiniz. Bu sayede Salesforce performansının önüne geçen gereksiz döngü işlemleri önlenir.

DML İfadelerinin Sayısını Sınırlayın

Salesforce performansını artırmanın bir başka yolu, aynı türden işlemleri toplu olarak gerçekleştirmektir. Ekleme, güncelleme veya silme gerektiren öğeleri bir listeye toplayarak tek bir DML ifadesiyle işleyebilirsiniz. Ayrıca eşzamansız yöntemler (ör. gelecekteki metotlar) kullanarak DML işlemlerini mevcut işlemden ayırabilir ve işlem hızını artırabilirsiniz.

İyi Bir Salesforce Performansı İçin Future Method Kullanın

Tetikleyicinin bir kayıt kümesini güncellemesi gerektiğinde, özellikle karmaşık ve zaman alan algoritmalar için, Future Method kullanımı önerilir. Bu yöntemi Insert veya Update tetikleyicilerinden sonra çağırmak, Apex tetikleme işleminin erken tamamlanmasını sağlar. Future Method, asenkron bir şekilde yürütülür ve bu, farklı limitlere tabi olduğu anlamına gelir. Daha fazla bilgi için Salesforce Limitleri sayfasına göz atabilirsiniz.

Performans optimizasyonu için iyi uygulamalar uygulandıktan sonra bile darboğazları anlamak ve yönetmek adına belirli ölçümler kullanmak önemlidir. Salesforce performansını izlemek ve iyileştirmek için aşağıdaki yöntemlerden faydalanabilirsiniz:

  • CPU Süresi Ölçümü: Algoritmanın yürütülmesinden önce ve sonra System.Limits.getCpuTime() yöntemi kullanılarak işlem süresi ölçülebilir. Başlangıç ve bitiş zamanlarını karşılaştırarak, uygulanan mantığın ne kadar süre harcadığını analiz edebilirsiniz.
  • Apex Limits Sınıfı: Bu sınıf, yürütülen SOQL sorguları, işlenen DML satırları gibi limitlere dair detaylı bilgiler sunar.System.debug Kullanımı: Belirli bir yöntemin bir işlem sırasında kaç kez çağrıldığını analiz etmek için System.debug ifadeleri kullanılabilir. Bu yöntem, gereksiz veya tekrarlayan çağrıları tespit etmek ve yinelemeli işlemleri kontrol etmek için faydalıdır.
  • Geliştirici Konsolu: Geliştirici konsolunda bulunan Analiz aracı, yürütülen işlemleri zaman çizelgesi formatında kategorilere göre incelemenize olanak tanır. İlgili araç sayesinde performansla ilgili ayrıntılı verilere ulaşabilirsiniz.

Performans ölçümleme ve profil oluşturma hakkında daha fazla bilgi almak isterseniz, Salesforce’u ziyaret edebilirsiniz. Ayrıca platformun sunduğu yeniliklerden haberdar olmak için Salesforce TR olarak hazırlamış olduğumuz blog içeriklerimize de göz atabilirsiniz. Böylece Salesforce Türkiye için de güncellemeleri kaçırmamış olursunuz.

Önceki yazımıza https://salesforcetr.com/salesforce-sales-cloud-nedir/ linkinden ulaşabilirsiniz.

İlgili Makaleler

Bir yanıt yazın

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

Başa dön tuşu