Share via


Kod maliyetlerini iyileştirmeye yönelik öneriler

Bu Azure Well-Architected Framework Maliyet İyileştirme denetim listesi önerisi için geçerlidir:

CO:11 Kod maliyetlerini iyileştirme. Daha az veya daha ucuz kaynaklarla işlevsel ve işlevsel olmayan gereksinimleri karşılamak için kodu değerlendirin ve değiştirin.

Bu kılavuzda kod maliyetlerini iyileştirmeye yönelik öneriler açıklanmaktadır. Kod iyileştirme, uygulama kodunun verimliliğini, performansını ve uygun maliyetliliğini artırma işlemidir. Etkili kod iyileştirmesi, kaynak tüketimini azaltmak, yürütme süresini en aza indirmek ve genel performansı geliştirmek için kodda değişiklik yapmayı içerir.

Kodu iyileştirerek, kaynak tüketiminin artmasına ve maliyetlerin artmasına yol açabilecek verimliliksizlikleri belirleyebilir ve ortadan kaldırabilirsiniz. İşleme süresini, bellek kullanımını ve ağ ek yükünü azaltabilir ve bu da daha hızlı ve daha hızlı yanıt veren uygulamalara yol açabilir. Geliştirilmiş performans, kullanıcı deneyimini geliştirir ve sisteminizin daha büyük iş yüklerini verimli bir şekilde işlemesini sağlar.

Tanımlar

Süre Tanım
Kod izleme Çalışma zamanı sırasında veri toplayan ve kod performansını izleyen koda kod parçacıkları veya kitaplıklar ekleme uygulaması.
Eşzamanlılık Aynı anda birden çok işlemin yürütülmesi.
Veri serileştirme Veri nesnelerini depolanabilen veya iletilebilen bir biçime dönüştürme ve sonra gerektiğinde bunları özgün formlarına geri dönüştürme işlemi.
Sık erişimli yollar Bir programın yüksek performans ve düşük gecikme süresi gerektiren kritik veya sık çalıştırılacak bölümleri.

Temel tasarım stratejileri

Maliyeti iyileştirme kodu, CPU döngüleri, bellek ve depolama gibi örnek başına daha az kaynakla aynı işlevselliği elde etmek için kodu geliştirmek anlamına gelir. Uygulamalar büyük hacimli verileri işlediğinde veya yüksek trafik yükleriyle karşılaştığında kaynak tüketimini azaltarak tasarruf edebilirsiniz.

Kod geliştirmeleri en çok ölçeklendirme, hak artırma, yedeklilik ve azaltma ile ilgili diğer maliyet iyileştirme çalışmalarını takip ettiğinizde etkili olur. Bu temel öğeleri hallettikten sonra kod iyileştirmeyi göz önünde bulundurabilirsiniz.

Verimli olmayan bir kodunuz olup olmadığını bilmiyor olabilirsiniz. Sunucusuz, otomatik ölçeklendirme ve güvenilirlik özellikleri kod verimliliklerini maskeleyebilir. Aşağıdaki stratejiler, olması gerekenden daha pahalı olan uygulama kodunu belirlemenize ve düzeltmenize yardımcı olabilir.

Kodunuzu izleme

Kod izleme, çalışma zamanı sırasında veri toplayan ve kod performansını izleyen kod parçacıkları veya kitaplıklar ekleme uygulamasıdır. Geliştiricilerin kaynak tüketimi (CPU veya bellek kullanımı) ve yürütme süresi gibi önemli ölçümler hakkında bilgi toplamasına olanak tanır. Geliştiriciler, kodu izleyerek kod sık erişimli yollarla ilgili içgörüler elde edebilir, performans sorunlarını belirleyebilir ve daha iyi verimlilik ve maliyet verimliliği için kodu iyileştirebilir.

İdeal bir ortamda, kod analizini yazılım geliştirme yaşam döngüsünün başlarında yapmanız gerekir. Bir kod sorununu ne kadar erken yakalarsanız, düzeltmeniz o kadar ucuz olur.

Bu kod analizinin mümkün olduğunca büyük bir kısmını otomatikleştirin. El ile yapılan eforu azaltmak için kod analizi için dinamik ve statik araçları kullanın. Ancak, bu testin hala bir üretim simülasyonu olduğunu unutmayın. Üretim, kod iyileştirmeyi en net şekilde anlamanızı sağlar.

Dengeleme: Kod izleme araçlarının maliyetleri artırma olasılığı yüksektir.

Sık erişimli yolları belirleme ve iyileştirme

Kodunuzu izleyerek kod yollarının kaynak tüketimini ölçebilirsiniz. Bu ölçümler sık erişimli yolları belirlemenize yardımcı olur. Sık erişimli yolların performans ve kaynak kullanımı üzerinde önemli bir etkisi vardır. Bunlar, yüksek performans ve düşük gecikme süresi gerektiren bir programın kritik veya sık çalıştırılır bölümleridir.

Sık erişimli yolları belirlemek için şu görevleri göz önünde bulundurun:

  • Çalışma zamanı verilerini analiz etme: Kodun CPU, bellek veya G/Ç işlemleri gibi önemli kaynakları kullanan alanlarını belirlemek için çalışma zamanı verilerini toplayın ve analiz edin. Sık çalıştırılacak veya tamamlanması uzun süren kod desenlerini veya bölümlerini arayın.

  • Performansı ölçme: Kod yollarının yürütme süresini ve kaynak tüketimini ölçmek için profil oluşturma araçlarını veya performans testi çerçevelerini kullanın. Bu ölçüm, performans sorunlarını ve iyileştirme alanlarını belirlemeye yardımcı olur.

  • İş mantığını ve kullanıcı etkisini göz önünde bulundurun: Kod yollarının, uygulamanın işlevselliği veya kritik iş işlemleriyle ilgisine göre önemini değerlendirin. Kullanıcılara değer sağlamak veya performans gereksinimlerini karşılamak için hangi kod yollarının kritik öneme sahip olduğunu belirleyin.

    Çalıştığınız programlama diline özgü performans önerilerini gözden geçirin. İyileştirme alanlarını belirlemek için kodunuzu bu önerilere göre değerlendirin. Kod yolu içinde performansı etkileyebilecek gereksiz işlemleri kaldırın.

  • Gereksiz işlev çağrılarını kaldırma: Kodunuzu gözden geçirin. İstenen işlevsellik için gerekli olmayan ve performansı olumsuz etkileyebilecek işlevleri belirleyin. Örneğin, bir işlev çağrısı kodda daha önce gerçekleşen bir doğrulama gerçekleştirirse, bu gereksiz işlev çağrısını kaldırabilirsiniz.

  • Günlüğe kaydetme işlemlerini en aza indirme: Günlüğe kaydetme hata ayıklama ve çözümleme için yararlı olabilir, ancak aşırı günlük kaydı performansı etkileyebilir. Her günlüğe kaydetme işleminin gerekliliğini değerlendirin ve performans analizi için kritik olmayan gereksiz günlük çağrılarını kaldırın.

  • Döngüleri ve koşulluları iyileştirme: Kodunuzda döngüleri ve koşulluları analiz edin. Ortadan kaldırabileceğiniz gereksiz yinelemeleri veya koşulları belirleyin. Bu yapıları basitleştirmek ve iyileştirmek kodunuzun performansını artırabilir.

  • Gereksiz veri işlemeyi azaltma: Gereksiz hesaplamalar veya dönüştürmeler gibi gereksiz veri işleme işlemleri için kodunuzu gözden geçirin. Kodunuzun verimliliğini artırmak için bu gereksiz işlemleri ortadan kaldırın.

  • Ağ isteklerini en aza indirme: Kodunuz ağ isteklerinde bulunursa, istek sayısını en aza indirin ve kullanımlarını iyileştirin. Mümkün olduğunda toplu istekler ve performansı artırmak için gereksiz gidiş dönüşlerden kaçının.

  • Ayırmaları en aza indirin: Aşırı bellek ayırmanın gerçekleştiği alanları belirleyin. Gereksiz ayırmaları azaltarak ve mümkün olduğunda mevcut kaynakları yeniden kullanarak kodu iyileştirin.

    Ayırmaları en aza indirerek bellek verimliliğini ve genel performansı geliştirebilirsiniz. Programlama diliniz için uygun bellek yönetimi ve çöp toplama stratejilerini kullanın.

  • Veri yapısı boyutunu küçültme: Sınıflar gibi veri yapılarınızın boyutunu değerlendirin ve azaltmanın mümkün olduğu alanları belirleyin. Veri gereksinimlerini gözden geçirin ve gereksiz alanları veya özellikleri ortadan kaldırın. Uygun veri türlerini seçerek ve verileri verimli bir şekilde toplayarak bellek kullanımını iyileştirin.

  • Çapraz kesme uygulamalarını değerlendirme: Ara yazılım veya belirteç denetimleri gibi çapraz kesme uygulamalarının etkilerini göz önünde bulundurun. Performansı olumsuz etkileyip etkilemediklerini değerlendirin.

Dengeleme: Kodu ve sık erişimli yolları iyileştirmek için kod verimliliklerini belirleme konusunda geliştirici uzmanlığı gerekir. Bu yüksek vasıflı kişilerin diğer görevlere zaman ayırması gerekebilir.

Eşzamanlılık kullanımını değerlendirme

Eşzamanlılık kullanımını değerlendirmek için zaman uyumsuz işleme, çok iş parçacıklı işlem veya çok işlemli işlemlerin kaynak kullanımını en üst düzeye çıkarıp artıramayacağını ve giderleri azaltıp azaltamayacağının değerlendirilmesi gerekir. Zaman uyumsuz işleme, çok iş parçacığı kullanımı veya çok işlemli işlem kullanarak, aynı kaynaklarla daha fazla görevi işleyebilirsiniz. Ancak, daha fazla ek yükten kaçınmak ve maliyet verimliliğini korumak için düzgün bir uygulama sağlamak çok önemlidir.

Eşzamanlılık kullanmanın uygun olup olmadığını değerlendirmek için şu yönergeleri izleyebilirsiniz:

  • Zaman uyumsuz işleme: Zaman uyumsuz işleme, engellenmeyen yürütmeye izin verir. Örneğin, bir işlemi başlatabilir ve ardından ikinci bir işlemin bitebilmesini sağlamak için işlemi duraklatabilirsiniz.

    Zaman uyumsuz olarak çalıştırabileceğiniz kod bileşenlerini veya işlemlerini belirleyin. Kullandığınız programlama dilini veya çerçeveyi belirleyin ve desteklediği zaman uyumsuz programlama modelini (.NET veya JavaScript'teki vaatler gibi async/await ) anlayın.

    Görevlerin engellenmemiş yürütülmesini etkinleştirerek kodunuzu zaman uyumsuz programlama yapılarını kullanacak şekilde yeniden yapılandırın. Zaman uyumsuz yöntemler veya geri çağırmalar kullanarak uzun süre çalışan veya G/Ç yoğunluklu işlemleri ana yürütme iş parçacığından ayırma. Zaman uyumsuz iş akışlarını işlemek için programlama dilinizin veya çerçevenizin sağladığı zaman uyumsuz API'leri veya kitaplıkları kullanın.

  • Çoklu iş parçacığı kullanımı: Çoklu iş parçacığı oluşturmada, tek bir işlemin birden çok iş parçacığını eşzamanlı olarak çalıştırırsınız.

    Kodunuzun eşzamanlı ve bağımsız olarak çalıştırabileceğiniz bölümlerini belirleyin. Çok iş parçacıklı en iyi yöntemler için kullandığınız programlama diline veya çerçeveye özgü belgeleri veya yönergeleri okuyun. Görevlerin paralel yürütülmesini işlemek için birden çok iş parçacığı veya iş parçacığı havuzu oluşturun.

    Kod paylaşılan kaynaklara eriştiğinde iş parçacığı güvenliğini sağlamak ve yarış koşullarını önlemek için kilitler, mutexler veya semaforlar gibi eşitleme mekanizmaları uygulayın. Birden çok iş parçacığının yönetimini kolaylaştırmak ve eşzamanlılık denetimini basitleştirmek için iş parçacığı havuzları veya görev tabanlı paralellik kitaplıkları gibi üst düzey soyutlamalar kullanmayı göz önünde bulundurun.

  • Çoklu işlem: Çok işlemli işlem işlemlerin paralel olarak çalıştırılmasını sağlayabilir. Çoklu iş parçacığı kullanımına kıyasla birden çok CPU çekirdeğinin daha iyi kullanımını sağlayabilir.

    Kodunuzdaki iş yükünün veya işlemlerin kendilerini paralel işlemeye ödünç verip vermediğini belirleyin. Kullandığınız programlama dilini veya çerçeveyi belirleyin ve çok işlemli özelliklerini keşfedin. Örneğin, Python'da çok işlemli modülü veya Java'da paralel akışları göz önünde bulundurun. İş yükünü eşzamanlı olarak işlenebilen birden çok bağımsız görev olarak bölmek için kodunuzu tasarlayın.

    Paralel işlemler oluşturmak ve yönetmek için çok işlemli API'leri veya kitaplıkları kullanın. İş yükünü bu API'ler veya kitaplıklar arasında dağıtın. Birden çok işlem arasında koordinasyon ve veri paylaşımını etkinleştirmek için programlama dilinize veya çerçevenize bağlı olarak işlemler arası iletişim (IPC), paylaşılan bellek veya ileti geçirme gibi iletişim mekanizmaları uygulayın.

Doğru SDK'ları kullanma

Maliyet iyileştirmesi için kaynak kullanımını iyileştirmek ve performansı artırmak için tasarlanmış SDK'ları seçin. Her SDK'nın özelliklerini ve özelliklerini değerlendirmek önemlidir. Programlama diliniz ve geliştirme ortamınızla uyumluluğunu göz önünde bulundurun.

İş yükünüz için en iyi SDK'ları seçmenize yardımcı olacak yönergeler aşağıda verilmiştir:

  • Performans testi gerçekleştirme: Performans testi aracılığıyla SDK'ların kaynak kullanımını ve performansını karşılaştırın. Kaynak iyileştirme ve performans geliştirme açısından gereksinimlerinizi en iyi karşılayan SDK'yı seçin. Sağlanan belgeleri ve yönergeleri izleyerek seçilen SDK'yı kod tabanınızla tümleştirin.

  • Kaynak kullanımını izleme ve kodu iyileştirme: Uygulanan SDK ile kaynak kullanımını izleyin. Kodunuzu iyileştirmek için izleme ve analizden içgörüler toplayın.

Doğru işletim sistemini seçin

Çoğu kodlama dili çeşitli işletim sistemlerinde çalıştırılabilir, bu nedenle işletim sisteminizi daha ucuz alternatiflere karşı değerlendirmeniz önemlidir. Alternatif bir işletim sistemi aynı veya benzer işlevleri daha az maliyetle destekliyorsa, göz önünde bulundurmaya değer. Daha ucuz bir işletim sistemi seçerek lisanslama ücretlerinin ve altyapı maliyetlerinin maliyetini düşürebilirsiniz.

Doğru işletim sistemi, iş yükünüz için genel maliyet iyileştirmesine katkıda bulunabilir. İş yükünüz için doğru işletim sistemini seçmek için şu etkinlikleri deneyin:

  • Gereksinimlerinizi değerlendirin: Kullandığınız kodlama dilleri ve çerçeveler de dahil olmak üzere iş yükünüzün belirli gereksinimlerini anlayın. Diğer sistemlerle bağımlılıkları veya tümleştirmeleri göz önünde bulundurun.

  • Uyumluluğu göz önünde bulundurun: Seçtiğiniz işletim sisteminin kodlama dillerinizle, çerçevelerinizle ve kullandığınız üçüncü taraf kitaplıklarla veya araçlarla uyumlu olduğundan emin olun. İşletim sisteminin teknoloji yığınınızla uyumlu olduğundan emin olmak için belgelere ve topluluk desteğine bakın.

  • İşlevselliği değerlendirme: Alternatif işletim sisteminin geçerli işletim sisteminizle aynı veya benzer işlevleri desteklenip desteklemediğini belirleyin. İş yükünüzün gerektirdiği gerekli özellikleri ve özellikleri sağlayıp sağlamadığını değerlendirin.

  • Maliyetleri karşılaştırma: İşletim sistemleriyle ilişkili maliyetleri karşılaştırın. Lisanslama ücretleri, destek maliyetleri ve altyapı gereksinimleri gibi faktörleri göz önünde bulundurun. İşlevlerden ödün vermeden iş yükünüzün gereksinimlerini karşılayabilecek daha ucuz alternatifler arayın.

  • Performansı ve iyileştirmeyi göz önünde bulundurun: Alternatif işletim sisteminin performans ve iyileştirme özelliklerini değerlendirin. Gerçek dünya senaryolarında nasıl performans sergilediğinden anlamak için karşılaştırmalar, örnek olay incelemeleri veya performans karşılaştırmaları arayın.

  • Güvenlik ve kararlılığı gözden geçirin: Alternatif işletim sisteminin güvenliğini ve kararlılığını değerlendirin. İşletim sisteminin etkin bir şekilde korunup genel olarak güvenli ve kararlı olduğundan emin olmak için güvenlik güncelleştirmeleri, düzeltme ekleri ve topluluk desteği arayın.

  • Satıcı desteğini göz önünde bulundurun: Alternatif işletim sistemi için kullanılabilen satıcı desteği düzeyini değerlendirin. İhtiyacınız olduğunda yardım sağlayabilecek resmi destek kanalları, belgeler ve kullanıcı topluluğu olup olmadığını denetleyin.

Ağ geçişi iyileştirme

Ağ geçişinin iyileştirilmesi, iş yükü bileşenleri arasındaki ağ trafiğini en aza indirmektir. Veri aktarımı genellikle ilişkili bir maliyete sahiptir. Ağ trafiğini en aza indirerek, maliyetleri düşürürken aktarılması gereken veri miktarını azaltabilirsiniz.

İş yükünüzü analiz edin ve bileşenler arasındaki gereksiz veri aktarımlarını belirleyin. Yedekli veya yinelenen verileri aktarmaktan kaçının ve yalnızca temel bilgileri iletin. Örneğin, bir bileşen aynı verileri başka bir bileşenden tekrar tekrar isterse, iyileştirme için bir adaydır. Gereksiz çağrıları azaltmak veya toplu istekler için kodunuzu yeniden düzenleyerek aktarılan verileri en aza indirebilirsiniz. Yalnızca birkaç alan gerektiğinde uygulamalar tüm nesneleri veya veri yapılarını gönderebilir. Kodu yalnızca gerekli verileri gönderecek şekilde iyileştirerek her veri aktarımının boyutunu en aza indirirsiniz.

Ağ protokollerini iyileştirme

Ağ protokolleri, ağ iletişiminin verimliliğinde önemli bir rol oynar. Ağ protokollerini iyileştirerek, veri aktarımının genel verimliliğini artırabilir ve kaynak tüketimini azaltabilirsiniz.

Şu önerileri göz önünde bulundurun:

  • Verimli protokolleri seçin: Veri aktarım hızı ve ek yükü en aza indirme açısından verimliliğiyle bilinen protokolleri seçin. Örneğin, HTTP/1.1 üzerinden HTTP/2 gibi protokolleri kullanmayı göz önünde bulundurun. Bu protokoller gecikme süresini azaltarak ve veri aktarımını iyileştirerek performansı geliştirmek için tasarlanmıştır. Bu protokolleri kullanmak için uygulamanızda kitaplıkları ve çerçeveleri kullanın.

  • Sıkıştırma desteği: Aktarılan verilerin boyutunu azaltmak için ağ protokollerinizde sıkıştırma mekanizmaları uygulayın. Sıkıştırma, ağ üzerinden iletilen veri miktarını önemli ölçüde azaltarak performansın artmasına ve bant genişliği kullanımının azalmasına neden olabilir. Sunucu tarafı sıkıştırması genellikle uygulama kodunda veya sunucu yapılandırmasında etkinleştirilir.

  • Bağlantı havuzunu kullanma: Bağlantı havuzu oluşturma, her istek için yeni bağlantılar kurma yükünü azaltmak üzere kurulan ağ bağlantılarının yeniden kullanılmasına olanak tanır. Bağlantı havuzu oluşturma, bağlantı kurulumu ve kopma yükünden kaçınarak ağ iletişiminin verimliliğini artırabilir. Bir bağlantı havuzu kitaplığı veya çerçevesi seçin ve iş yükü gereksinimlerini karşılayacak şekilde yapılandırın.

  • Diğer iyileştirmeleri uygulama: İş yükünüz ve ağ ortamınıza özgü diğer iyileştirmeleri keşfedin. Örneğin, ağ geçişlerini daha da iyileştirmek için içerik önbelleğe alma, yük dengeleme ve trafik şekillendirmeyi kullanabilirsiniz.

Ağ yükünü en aza indirme

İş yükünüzün bileşenleri arasında ağ trafiği ve veri aktarımı miktarını en aza indirin. Ağ yükünü azaltarak veri çıkışı ve girişiyle ilişkili maliyetleri düşürebilir ve genel ağ performansını geliştirebilirsiniz.

Şu teknikleri göz önünde bulundurun:

  • Yedekli istekleri azaltma: Yinelenen veya gereksiz istekleri tanımlamak için kodu analiz edin. Aynı veriler için birden çok istekte bulunmak yerine kodu değiştirerek verileri bir kez alabilir ve gerektiğinde yeniden kullanabilirsiniz.

  • Veri boyutunu iyileştirme: Bileşenler veya sistemler arasında iletilen verileri gözden geçirin ve boyutunu en aza indirme fırsatlarını arayın. İletim öncesinde verileri sıkıştırma veya daha verimli veri biçimleri kullanma gibi teknikleri göz önünde bulundurun. Veri boyutunu azaltarak ağ bant genişliği kullanımını azaltabilir ve genel verimliliği artırabilirsiniz.

  • Toplu istekler: Varsa, birden çok küçük isteği tek bir daha büyük istekte toplu olarak toplu olarak kullanmayı göz önünde bulundurun. Toplu işlem, birden çok bağlantı kurma yükünü azaltır ve genel veri iletimini azaltır.

  • Veri serileştirmeyi kullanma: Veri serileştirme, karmaşık veri yapılarını veya nesnelerini ağ üzerinden kolayca iletilebilen veya kalıcı bir depolama sisteminde depolanabilen bir biçime dönüştürme işlemidir. Bu strateji, verileri standart bir biçimde temsil etmeyi içerir, böylece veriler alıcı uçta verimli bir şekilde iletilebilir, işlenebilir ve yeniden oluşturulabilir.

    Küçük, hızlı ve iş yükünüzün gereksinimlerine uygun bir serileştirme biçimi seçin.

    Serileştirme biçimi Description
    Protokol Arabellekleri (protobuf) Yapılandırılmış verilerin verimli bir şekilde kodlanması ve kodunun çözülmesini sağlayan ikili serileştirme biçimi. İleti yapılarını tanımlamak için yazılan tanım dosyalarını kullanır.
    MessagePack Tel üzerinden kompakt iletim için ikili serileştirme biçimi. Çeşitli veri türlerini destekler ve hızlı serileştirme ve seri durumdan çıkarma performansı sağlar.
    JavaScript Nesne Gösterimi (JSON) yaygın olarak kullanılan ve insan tarafından okunabilir ve kullanımı kolay bir veri serileştirme biçimi. JSON metin tabanlıdır ve geniş platformlar arası desteğe sahiptir.
    İkili JSON (BSON) JSON'a benzer ancak verimli serileştirme ve seri durumdan çıkarma için tasarlanmış ikili serileştirme biçimi. BSON, JSON'da bulunmayan ek veri türleri içerir.

    Serileştirme biçimine bağlı olarak, nesneleri veya veri yapılarını seçilen biçime seri hale getirmek ve bunları özgün biçimlerinde seri durumdan çıkarma mantığı uygulamanız gerekir. Bu mantığı, biçim için serileştirme özellikleri sağlayan kitaplıkları veya çerçeveleri kullanarak uygulayabilirsiniz.

Veri erişimini iyileştirme

Veri erişimini en iyi duruma getirmek, gereksiz işlemleri en aza indirmek için verileri alma ve depolama desenlerinin ve tekniklerinin akışa alınmasını ifade eder. Veri erişimini iyileştirdiğinizde, kaynak kullanımını azaltarak, veri alımını azaltarak ve veri işleme verimliliğini artırarak maliyet tasarrufu yapabilirsiniz. Veri önbelleğe alma, verimli veri sorgulama ve veri sıkıştırma gibi teknikleri göz önünde bulundurun.

Önbelleğe alma mekanizmalarını kullanma

Önbelleğe alma işlemi, sık erişilen verileri gerektiren bileşenlere daha yakın bir şekilde depolamayı içerir. Bu teknik, verileri ağ üzerinden getirmek yerine önbellekten sunarak ağ geçişi gereksinimini azaltır.

Şu önbelleğe alma mekanizmalarını göz önünde bulundurun:

  • Dış önbellek kullanma: Popüler önbelleğe alma çözümlerinden biri içerik teslim ağıdır. Statik içeriği tüketicilere daha yakın önbelleğe alarak gecikme süresini en aza indirmeye ve ağ geçişinin azaltılmasına yardımcı olur.

  • Önbelleğe alma parametrelerini ayarlama: Olası dezavantajları en aza indirirken önbellek avantajını iyileştirmek için yaşam süresi (TTL) gibi önbelleğe alma parametrelerini yapılandırın. Uygun bir TTL ayarlamak, önbelleğe alınan verilerin güncel ve ilgili kalmasını sağlar.

  • Bellek içi önbelleğe alma kullanma: Dış önbelleğe alma çözümlerine ek olarak, uygulamanızda bellek içi önbelleğe alma uygulamayı göz önünde bulundurun. Bellek içi önbelleğe alma, boşta işlem kaynaklarının kullanılmasına ve ayrılan kaynakların işlem yoğunluğunun artırılmasına yardımcı olabilir.

Veritabanı trafiğini iyileştirme

Veritabanıyla uygulama iletişiminin verimliliğini artırabilirsiniz. Veritabanı trafiğini iyileştirmeye yönelik bazı önemli noktalar ve teknikler şunlardır:

  • Dizin oluşturma: Dizin oluşturma, veri alma hızını geliştiren veri yapıları oluşturma işlemidir. Sık sorgulanan sütunlarda dizinler oluşturarak sorguları çalıştırmak için gereken süreyi önemli ölçüde azaltabilirsiniz. Örneğin, kullanıcı adları sütunu olan bir kullanıcı tablonuz varsa, belirli kullanıcı adlarını arayan sorguları hızlandırmak için kullanıcı adı sütununda bir dizin oluşturabilirsiniz.

    Veri alımını hızlandırmak için en sık erişilen sütunları belirleyin ve bu sütunlarda dizinler oluşturun. Hala etkili olduklarından emin olmak için mevcut dizinleri düzenli olarak analiz edin ve iyileştirin. Ekleme ve güncelleştirme işlemlerini olumsuz etkileyebileceğinden fazla dizin oluşturmaktan kaçının.

  • Sorguları iyileştirme: Belirli veri gereksinimlerini göz önünde bulundurarak ve gereksiz veri alımını en aza indirerek verimli sorgular tasarlayın. Tablolar arasındaki ilişkiye göre uygun birleştirme türlerini (örneğin, iç birleşim ve sol birleştirme) kullanarak başlayın. Performansı artırmak için sorgu ipuçları, sorgu planı analizi ve sorgu yeniden yazma gibi sorgu iyileştirme tekniklerini kullanın.

  • Önbellek sorgusu sonuçları: Sık çalıştırdığınız sorguların sonuçlarını bellekte veya önbellekte depolayabilirsiniz. Daha sonra aynı sorgunun sonraki yürütmeleri önbellekten sunularak pahalı veritabanı işlemleri gereksinimi ortadan kalkar.

  • Nesne ilişkisel eşleme (ORM) çerçevesi kullanın: Veri alımını iyileştirmek ve veritabanı gidiş dönüşlerini en aza indirmek için gecikmeli yükleme, önbelleğe alma ve toplu işlem gibi ORM özelliklerini kullanın. C# için Entity Framework veya Java için Hazırda Bekletme gibi ORM çerçevelerini kullanın.

  • Saklı yordamları iyileştirme: Saklı yordamların mantığını ve performansını analiz edin ve iyileştirin. Amaç, saklı yordamlarda gereksiz hesaplamalardan veya yedekli sorgulardan kaçınmaktır. Kaynak tüketimini en aza indirmek için geçici tablo, değişken ve imleç kullanımını iyileştirin.

Verileri düzenleme

Verileri verimli erişim ve alma için düzenlemek, verilerin performansı en üst düzeye çıkaracak ve kaynak tüketimini en aza indiren bir şekilde yapılandırılmasını ve depolanmasını içerir. Sorgu yanıt sürelerini artırabilir, veri aktarımı maliyetlerini azaltabilir ve depolama kullanımını iyileştirebilir.

Verileri verimli bir şekilde düzenlemeye yönelik bazı teknikler şunlardır:

  • Bölümleme: Bölümleme, büyük bir veri kümesini bölümler olarak adlandırılan daha küçük, daha yönetilebilir alt kümelere bölmeyi içerir. Paralel işlemeye ve geliştirilmiş sorgu performansına izin vermek için her bölümü ayrı ayrı depolayabilirsiniz. Örneğin, belirli bir değer aralığına göre veya verileri sunucular arasında dağıtarak verileri bölümleyebilirsiniz. Bu teknik ölçeklenebilirliği geliştirebilir, çekişmesini azaltabilir ve kaynak kullanımını iyileştirebilir.

  • Parça: Parçalama, verileri birden çok veritabanı örneğine veya sunucusuna yatay olarak bölme tekniğidir. Her parça verilerin bir alt kümesini içerir ve sorgular bu parçalar arasında paralel olarak işlenebilir. Parçalama, iş yükünü dağıtarak ve her sorgunun eriştiği veri miktarını azaltarak sorgu performansını artırabilir.

  • Sıkıştırma: Veri sıkıştırma, depolama gereksinimlerini en aza indirmek ve veri aktarımının verimliliğini artırmak için verilerin boyutunun azaltılmasını içerir. Sıkıştırılmış veriler daha az disk alanı kapladığı için depolama maliyetlerinden tasarruf edilmesini sağlar. Sıkıştırılmış veriler de ağlar üzerinden daha hızlı aktarılabilir ve veri aktarım maliyetlerini düşürebilir.

Örneğin, büyük bir müşteri bilgileri veri kümenize sahip olduğunuz bir senaryo düşünün. Verileri müşteri bölgelerine veya demografik bilgilere göre bölümleyerek iş yükünü birden çok sunucuya dağıtabilir ve sorgu performansını geliştirebilirsiniz. Ayrıca, depolama maliyetlerini azaltmak ve veri aktarımının verimliliğini artırmak için verileri sıkıştırabilirsiniz.

Mimariyi iyileştirme

Kaynak iyileştirme fırsatlarını belirlemek için iş yükü mimarinizi değerlendirin. Amaç, doğru iş için doğru hizmetleri kullanmaktır.

Bu hedefe ulaşmak için mimarinin bölümlerini daha az kaynak kullanacak şekilde yeniden tasarlamanız gerekebilir. Sunucusuz veya yönetilen hizmetleri göz önünde bulundurun ve kaynak ayırmayı iyileştirin. Mimarinizi iyileştirerek, örnek başına daha az kaynak tüketirken işlevsel ve işlevsiz gereksinimleri karşılayabilirsiniz.

Tasarım desenlerini kullanma

Tasarım desenleri, geliştiricilerin yinelenen tasarım sorunlarını çözmelerine yardımcı olan yeniden kullanılabilir çözümlerdir. Verimli, sürdürülebilir ve ölçeklenebilir kod tasarlamaya yönelik yapılandırılmış bir yaklaşım sağlar.

Tasarım desenleri, verimli kaynak ayırma ve yönetim yönergeleri sağlayarak sistem kaynaklarının kullanımını iyileştirmeye yardımcı olur. Örneğin Devre Kesici düzeni, hataları denetimli bir şekilde işlemek ve kurtarmak için bir mekanizma sağlayarak gereksiz kaynak tüketimini önlemeye yardımcı olur.

Tasarım desenleri, aşağıdaki yollarla kodun maliyetini iyileştirmeye yardımcı olabilir:

  • Daha kısa geliştirme süresi: Tasarım desenleri, yaygın tasarım sorunlarına kanıtlanmış çözümler sağlar ve bu da geliştirme zamanından tasarruf edebilir. Geliştiriciler, yerleşik desenleri izleyerek yinelenen çalışmalardan kaçınabilir ve uygulamalarının belirli gereksinimlerini uygulamaya odaklanabilir.

  • Geliştirilmiş bakım: Tasarım desenleri, anlaşılması, değiştirilmesi ve bakımı daha kolay olan modüler ve yapılandırılmış kodu destekler. Hata ayıklama ve bakım çalışmalarının azaltılması açısından maliyet tasarrufu sağlayabilirler.

  • Ölçeklenebilirlik ve performans: Tasarım desenleri, ölçeklenebilir ve performanslı sistemler tasarlamaya yardımcı olur. Cache-Aside deseni gibi desenler, pahalı hesaplamalar veya dış çağrılar gereksinimini azaltmak için sık erişilen verileri önbelleğe alarak performansı artırabilir.

Tasarım desenlerini uygulamak için geliştiricilerin her desenin ilkelerini ve yönergelerini anlaması ve bunları koda uygulaması gerekir. Bir sorun için uygun deseni tanımlamayı, yapısını ve bileşenlerini anlamayı ve deseni genel tasarımla tümleştirmeyi göz önünde bulundurun.

Belgeler, öğreticiler ve örnek kod gibi çeşitli kaynaklar sağlanır. Bu kaynaklar geliştiricilerin tasarım desenlerini etkili bir şekilde öğrenmelerine ve uygulamalarına yardımcı olabilir.

Yapılandırmaları değiştirme

geçerli gereksinimlerinize uygun olduğundan emin olmak için iş yükü yapılandırmanızı düzenli olarak gözden geçirin ve güncelleştirin. kaynak boyutlandırma ve yapılandırma ayarlarını iş yükü taleplerine göre ayarlamayı göz önünde bulundurun. Yapılandırmaları iyileştirerek kaynakları etkili bir şekilde ayırabilir ve maliyet tasarrufu sağlamak için fazla sağlamayı önleyebilirsiniz.

Mimariyi yeniden düzenleme

İş yükü mimarinizi değerlendirin ve kaynak tüketimini iyileştirmek için bileşenleri yeniden düzenleme veya yeniden tasarlama fırsatlarını belirleyin. Mikro hizmet mimarisi benimseme, Devre Kesici düzenini uygulama ve sunucusuz bilgi işlem kullanma gibi teknikleri göz önünde bulundurun. Mimarinizi iyileştirerek daha iyi kaynak kullanımı ve maliyet verimliliği elde edebilirsiniz.

Kaynak boyutlarını değiştirme

İş yükünüzün kaynak kullanımını sürekli izleyin ve analiz edin. Gözlemlenen desenlere ve eğilimlere göre kaynak tüketimini iyileştirmek için kaynak boyutlandırma ve yapılandırma ayarlarını yapın.

Sanal makinelerin haklarını belirlemeyi, bellek ayırmayı ayarlamayı ve depolama kapasitesini iyileştirmeyi göz önünde bulundurun. Kaynaklara hak kazandırarak, az kullanım veya fazla sağlama ile ilişkili gereksiz maliyetleri önleyebilirsiniz.

Dengeleme: Kodun ve mimarinin yeniden çalışması geçerli proje zamanlamalarına uygun olmayabilir ve zamanlama ve maliyet kaymasına neden olabilir.

Azure kolaylaştırma

İzleme kodu: Azure, Azure İzleyici, Application Insights ve Log Analytics gibi izleme ve günlüğe kaydetme araçları sağlar. Kodunuzun performansını ve davranışını gerçek zamanlı olarak izlemek ve analiz etmek için bu araçları kullanabilirsiniz.

Sık erişimli ve en iyi duruma getirme yollarını belirleme: Application Insights ve Application Insights Profiler , yürütme sürelerini ve kaynak kullanımını analiz ederek kodunuzdaki sık erişimli yolları tanımlamaya ve iyileştirmeye yardımcı olur. Profiler ile gereksiz bellek ayırmalarını en aza indirip bellek kullanımını iyileştirebilirsiniz.

Doğru SDK'ları kullanma: Azure, performans ve kullanım kolaylığı için iyileştirilmiş, birden çok programlama dilinde SDK'lar sunar. Bu SDK'lar, özel uygulama gereksinimini azaltmak için Azure hizmetleriyle etkileşim kuran önceden oluşturulmuş işlevler ve kitaplıklar sağlar.

Ağ geçişlerini iyileştirme: Çeşitli Azure hizmetleri, hizmetler ve uygulamalar arasında verimli iletişim için HTTP/2 ve QUIC gibi yüksek hızlı ağ protokollerini destekler.

PostgreSQL için Azure Veritabanı - Esnek Sunucu gibi Azure hizmetleri bağlantı havuzunu destekler.

Azure çeşitli hizmetlerde toplu işlemeyi desteklediği için birden çok işlemi birlikte gruplandırabilir ve bunları tek bir istekte çalıştırabilirsiniz. Toplu işleme verimliliği önemli ölçüde artırabilir ve ağ yükünü azaltabilir.

Azure, veri serileştirme konusunda JSON ve XML gibi çeşitli serileştirme biçimlerini destekler. Veri boyutuna, performans gereksinimlerine ve birlikte çalışabilirlik gereksinimlerine göre uygun serileştirme biçimini seçin.

Veri erişimini iyileştirme: Azure, Redis için Azure Cache gibi önbelleğe alma hizmetleri sağlar. Önbelleğe alma özelliğini kullanarak sık erişilen verileri uygulamaya daha yakın bir şekilde depolayabilir ve bu sayede daha hızlı alma ve arka uç yükü azaltılabilir.

  • Dizin oluşturma ve sorgu iyileştirme:Azure SQL Veritabanı ve Azure Cosmos DB gibi Azure hizmetleri, sorgu performansını iyileştirmek için dizin oluşturma özellikleri sağlar. Doğru dizin oluşturma stratejisini seçip sorguları iyileştirerek, veri alma işleminin genel verimliliğini artırabilirsiniz.

  • Nesne ilişkisel eşleme (ORM): Azure, Entity Framework gibi ORM çerçevelerini destekler. Bu çerçeveler, nesne odaklı kod ile ilişkisel veya NoSQL veritabanları arasında veri erişimini ve eşlemeyi basitleştirir.

  • Saklı yordamları iyileştirme: Saklı yordamları oluşturmak ve iyileştirmek için Azure SQL Veritabanı gibi Azure hizmetlerini kullanabilirsiniz. Saklı yordamlar, ağ gidiş dönüşlerini azaltarak ve SQL deyimlerini önceden derleyerek performansı artırabilir.

  • Bölümleme ve parçalama: Azure, Azure Cosmos DB ve Azure SQL Veritabanı gibi hizmetlerde bölümleme ve parçalama özellikleri sunar. Ölçeklenebilirlik ve performans iyileştirme için verileri birden çok düğüme dağıtmak için bölümleme kullanabilirsiniz.

  • Verileri sıkıştırma: Azure hizmetleri GZIP ve DEFLATE gibi veri sıkıştırma tekniklerini destekler.

Mimariyi iyileştirme: Azure ölçeklenebilir, dayanıklı ve performanslı uygulamalar tasarlamaya yönelik mimari rehberlik ve tasarım desenleri sağlar. Daha fazla bilgi için bkz . Tasarım desenleri.

Maliyet İyileştirme denetim listesi

Önerilerin tamamına bakın.