Azure AI ile kod seviyesinde performans iyileştirmek
Merhaba Arkadaşlar;
Yapay zekanın büyüsü karşi konulamaz ve bizi onu günlük hayatlarımıza her geçen gün daha fazla dahil ediyoruz. Yazılım endüstrisinde çabalarımızın önemli bir kısmı, kodu optimize etmenin ve sistem performansını artırmanın yollarını keşfetme etrafında dönüyor. Keşke yapay zeka bu sürece yardım edebilseydi; dediğinizi duyar gibiyim 😀
Azure bize yapay zeka dalgasını kullanarak güçlü bir araç kombinasyonu sunuyor: Uygulamanız ağır ve yüksek yükle boğuşurken kodunuzdaki darboğazları ortaya çıkarmak için tasarlanmış Application Insights Profiler, ile Kod Optimizasyonları ve Azure Yük Testinde bizim yerimize sisteminizin performansını artırmak için kod düzeyindeki bu önerileri işimizi kolaylaştiriyor.
Application Insights Profiler
Application Insights Profiler , Azure’da çalışan uygulamanızın performans analizi için, tanımlamanıza ve görüntülemenize yardımcı olan bir Azure İzleyici özelliğidir. Application Insights Profiler’ı etkinleştirdikten sonra yeni bir profil oluşturma oturumu başlatabilir, Profiler tetikleyicilerini yapılandırabilir ve son profil oluşturma oturumlarını görüntüleyebilirsiniz. (çok dikkatli bir şekilde profil oluşturmaliyiz uygulamamıza extra yük bindirmemek için sistem en boşta olduğu zamanlarda profil oluşturmanizi tavsiye ederim.)
Application Insights ile Kod Optimizasyonları
Kod Optimizasyonları, daha iyi ve daha verimli uygulamalar oluşturmanıza yardımcı olmak için Application Insights Profiler ile birlikte çalışan, Azure Application Insights’taki yapay zeka tabanlı bir hizmettir. Kod düzeyinde CPU ve bellek kullanımı performansı sorunlarını tespit eder ve bunların nasıl düzeltilebileceğine ilişkin öneriler sağlar. Kod Optimizasyonları,Application Insights Profiler tarafından toplanan profil oluşturma verilerini analiz eder ve zaman içinde toplanan toplu verileri görüntüler. (azıcık çalişmasi gerekli AI analiz edebilmesi için bolca log okuyacak sabırlı olmak lazım 1-2 gün gerçi insightiniz açiksa 2-4 saat arasinda hemen öneriler düşmeye başlar)
Azure Load Testing
Azure Load Testing, gerçek dünya trafiğini simüle ederek uygulamanızın performansını ve ölçeklenebilirliğini optimize etmenize yardımcı olan bir Azure hizmetidir. Uygulamanıza ve hizmetlerinize yönelik trafiği simüle etmek, kaynak ölçümlerini izlemek ve performans ve ölçeklenebilirlik sorunlarına ilişkin içgörüler elde etmek için Azure Load Testi kullanabilirsiniz.
Kod Düzeyindeki Önerilerini Etkinleştirmek için Adımlar
Kod iyileştirme konusunda yapay zeka önerileri almak için,
Tek ihtiyacınımız olan, Azure üzerinde Application Insights’ın etkin olduğu bir .NET uygulaması. (henüz .net dışındakileri desteklemiyor 🙁 zamanla destek kapsami genişlemesi bekleniyor)
- Uygulamız için > Profiler’ı etkinleştirelim.
- .NET uygulamanız için zaten bir Azure Load Test varsa direkt 3. adıma geçelim.
Aksi takdirde, .NET Uygulamanızda yük testleri oluşturmak için Azure Load Test e gidelim ve bu adımları yapalim. - Oluşturduğumuz yük testini çalıştırarak uygulamanıza yüksek ölçekli trafik yaratalım. Eş zamanlı olarak .NET uygulamanızın profillerin logunu izleyelim ve toplayalim .
- Yük testi ve profil toplama tamamlandıktan sonra, Application Insights->Performance soldaki dikey menüye gidip aşağıda gösterildiği gibi ‘Kod Optimizasyonları’na tıklayarak kod düzeyi optimizasyonlarını görüntüleyebiliriz.
5. Kod Optimizasyonlarının sonuç sayfasında, aşağıda gösterildiği gibi belleği ve CPU tüketimini iyileştirmek için uygulanabilir kod değişiklikleriyle ilgili öneriler içerir. Ayrıca, kod değişikliği yapıldıktan sonra sistem performansının ne düzeyde iyileşebileceğine ilişkin bir tahmin de verir. Kod Optimizasyonları hakkında detaylı bilgi almak için >buraya < başvurabilirsiniz .
- Önerilen değişiklikleri kodunuza uygulayabilirsiniz (macera burda başliyor)
- Uygulamanın kodunu optimize ettikten sonra uygulama için başka bir Load Testing oluşturalım ki performansı karşilaştiralim.
- Kod düzeyinde optimizasyonlar yapmadan önce ve sonra Test Çalıştırmalarını karşılaştırın ve cevap süreleri ile prod ortamındaki network apiler vs sistemlerin ms değerleri IO cpu daki iyileşmeleri gözlemleyelim bu bize günün sonunda sistemin aşaği yada yukari ölçeklenmesi, ekonomi yapmayı en önemlisi de performans kazanımı ile daha çok trafik ve veri işlememize olanak sağladı.
Genel olarak bakıldığında yapay zekanın yapamayacağı bir şey var mı?
Ağır yük altında uygulamanızın profillerini ne kadar sorunsuz bir şekilde analiz ettiğine ve performansı artırmak için kod değişiklikleri önerdiğine şahit olduk. Yapay zekanın gücünü ile .net uygulamamızın kodunu bambaşka bir boyuta taşidık düşünsenize basit bi kaç performans iyileştirmesi için kodlar içinde saatlerimizi harcadığımız günler geride mi kalıyor ?
Önemli Not : Kaynak linklere mutlaka gözatın MS in learn sayfalarından yaralanıyorum bende ordan öğrenip deniyor ve test ediyorum
Herkese iyi haftalar bir sonraki makalemizde görüşmek üzere
Eline sağlık.