Kod maliyetlerini iyileştirmeye yönelik öneriler

Bu Azure İyi Tasarlanmış Çerçeve 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 maliyet verimliliğ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 neden olabilecek verimsizlikleri tanımlayabilir ve ortadan kaldırabilirsiniz. İşleme süresini, bellek kullanımını ve ağ ek yükünü azaltarak daha hızlı ve daha hızlı yanıt veren uygulamalara yol açabilirsiniz. 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 gerektiğinde bunları özgün formlarına geri dönüştürme işlemi.
Sık erişimli yollar Yüksek performans ve düşük gecikme süresi gerektiren bir programın kritik veya sık çalıştırılacak bölümleri.

Temel tasarım stratejileri

Kodun maliyet iyileştirmesi, CPU döngüleri, bellek ve depolama gibi örnek başına daha az kaynakla aynı işlevselliği elde etmek için kodun geliştirilmesi anlamına gelir. Kaynak tüketimini azaltarak, uygulamalar büyük hacimli verileri işlediğinde veya yüksek trafik yükleriyle karşılaştığında 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.

Verimsiz kodunuz olup olmadığını bilmiyor olabilirsiniz. Sunucusuz, otomatik ölçeklendirme ve güvenilirlik özellikleri kod verimsizliklerini 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 yollara ilişkin 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, yazılım geliştirme yaşam döngüsünün erken aşamalarında kod analizi 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 çoğunu 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ı 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ıldığında 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 önemini, uygulamanın işlevselliğine veya kritik iş işlemlerine olan ilgilerine göre değerlendirin. Kullanıcılara değer sunmak veya performans gereksinimlerini karşılamak için hangi kod yollarının kritik öneme sahip olduğunu belirleyin.

    Üzerinde ç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 indirme: 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 paketleyerek 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.

Denge: Kodu ve sık erişimli yolları iyileştirmek için kod verimsizliklerini tanımlama konusunda geliştirici uzmanlığı gerekir. Bu yüksek vasıflı kişilerin diğer görevlerde zaman geçirmesi gerekebilir.

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

Eşzamanlılık kullanımının değerlendirilmesi zaman uyumsuz işleme, çok iş parçacığı kullanımı veya çok işlemli işlemlerin kaynak kullanımını en üst düzeye çıkarabileceğini ve giderleri azaltabileceğini değerlendirmeyi içerir. Zaman uyumsuz işleme, çoklu 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 uygun uygulamanın sağlanması ç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 bitebilmesi 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 .NET veya JavaScript'teki vaatler gibi async/await desteklediği zaman uyumsuz programlama modelini anlayın.

    Görevlerin engelsiz 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 tanımlayın. Çoklu iş parçacığı kullanımı en iyi yöntemleri 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, mutex'ler 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 daha ü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 paralel işlemeye uygun olup olmadığını belirleyin. Kullandığınız programlama dilini veya çerçeveyi belirleyin ve çok işlemli özelliklerini keşfedin. Örneğin, Python'da çok işlemcili 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ı geliştirmek için tasarlanmış SDK'ları seçin. Her SDK'nın özelliklerini ve özelliklerini değerlendirmek önemlidir. Programlama dilinizle 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ı izleme. 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ğerlendirme: 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. teknoloji yığınınızla iyi bir uyumluluğu olduğundan emin olmak için işletim sisteminin belgelerine ve topluluk desteğine bakın.

  • İşlevselliği değerlendirme: Alternatif işletim sisteminin geçerli işletim sisteminizle aynı veya benzer işlevselliği 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üvenlik ve kararlılığını değerlendirin. İşletim sisteminin etkin bir şekilde korunmasını ve genel olarak güvenli ve kararlı olmasını sağlamak için güvenlik güncelleştirmelerini, düzeltme eklerini ve topluluk desteğini 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 bir kullanıcı topluluğu olup olmadığını denetleyin.

Ağ trafiğini 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 protokoller seçin: Veri aktarım hızı ve ek yükü en aza indirme açısından verimlilikleriyle 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ılmakta olan verilerin boyutunu küçültmek 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 için yerleşik ağ bağlantılarının yeniden kullanılmasına olanak tanır. Bağlantı havuzu, bağlantı kurulumu ve kopma yükünden kaçınarak ağ iletişiminin verimliliğini artırabilir. Bir bağlantı havuzu kitaplığı veya çerçeve 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 iyi hale getirmek için içerik önbelleğe alma, yük dengeleme ve trafik şekillendirme 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ğ ek yükünü azaltarak veri çıkışı ve giriş ile 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 bir 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 Açıklama
    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 Kablo ü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) İnsan tarafından okunabilir ve kullanımı kolay olan, yaygın olarak kullanılan 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çimde seri hale getirmek ve bunları özgün biçimlerinde seri durumdan çıkarmak için mantık 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 veri alma ve depolama desenlerini ve tekniklerini akışa almayı 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 maliyetlerden tasarruf edebilirsiniz. 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, sık erişilen verilerin gerekli olan bileşenlere daha yakın bir şekilde depolanmasını 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 önbelleğe alma 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ı artıran 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 bağlı olarak uygun birleştirme türlerini (örneğin, iç birleşim ve sol birleştirme) kullanarak başlayın. Performansı geliştirmek 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 kullanma: 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 Beklet 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 tabloların, değişkenlerin ve imleçlerin kullanımını iyileştirin.

Verileri düzenleme

Verileri verimli erişim ve alma için düzenlemek, verileri performansı en üst düzeye çıkaracak ve kaynak tüketimini en aza indiren bir şekilde yapılandırmayı ve depolamayı 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 boyutunu azaltmayı içerir. Sıkıştırılmış veriler daha az disk alanı kapladığı için depolama maliyetlerinde tasarruf 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.

Çözüm tasarımını 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şlev dışı 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ı kontrollü 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 maliyet iyileştirmesine yardımcı olabilir:

  • Daha az 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 sağlar. 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. Daha az hata ayıklama ve bakım çalışmaları açısından maliyet tasarrufuna yol açabilir.

  • Ö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 belirlemeyi, 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 desenini 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. Kaynakları haklayarak, 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 uymayabilir 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. Profil Oluşturucu 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 desteği çeşitli hizmetlerde toplu işlem gerçekleştirir, böylece 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ğ ek yükünü azaltabilir.

Veri serileştirmeyle ilgili olarak, JSON ve XML dahil olmak üzere çeşitli serileştirme biçimleri Azure desteği. 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çerek ve sorguları iyileştirerek, veri alımının genel verimliliğini artırabilirsiniz.

  • Nesne-ilişkisel eşleme (ORM): Entity Framework gibi Azure desteği ORM çerçeveleri. Bu çerçeveler, nesne odaklı kod ve 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üğüm arasında 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

Öneriler kümesinin tamamına bakın.