Azure Kubernetes Service'te (AKS) sürdürülebilir yazılım mühendisliği uygulamaları
Sürdürülebilir yazılım mühendisliği ilkeleri, sürdürülebilir uygulamaları tanımlamanıza, oluşturmanıza ve çalıştırmanıza yardımcı olacak bir dizi yetkinliktir. Genel olarak amaç, uygulamanızın her alanında karbon ayak izini azaltmaktır. Sürdürülebilirliğe yönelik Azure İyi Tasarlanmış Çerçeve kılavuzu, Yeşil Yazılım Vakfı'nın Sürdürülebilir Yazılım Mühendisliği İlkeleri ile uyumludur ve sürdürülebilir yazılım mühendisliği ilkelerine genel bir bakış sağlar.
Sürdürülebilir yazılım mühendisliği, önceliklerde ve odakta bir değişimdir. Çoğu durumda, çoğu yazılımın tasarlanıp çalıştırıldığında hızlı performans ve düşük gecikme süresi vurgulanır. Sürdürülebilir yazılım mühendisliği, mümkün olduğunca fazla karbon emisyonu azaltmaya odaklanır.
- Sürdürülebilir yazılım mühendisliği ilkelerini uygulamak size daha hızlı performans veya toplam ağ geçişinin düşürülmesi gibi daha düşük gecikme süresi sağlayabilir.
- Karbon emisyonlarını azaltmak, düşük öncelikli iş yüklerini geciktirme gibi daha yavaş performansa veya artan gecikme süresine neden olabilir.
Aşağıdaki kılavuz, Azure Kubernetes Service (AKS) ile Azure'da oluşturduğunuz veya çalıştırdığınız hizmetlere odaklanır. Bu makale tasarım ve yapılandırma denetim listelerini, önerilen tasarım uygulamalarını ve yapılandırma seçeneklerini içerir. Uygulamanıza sürdürülebilir yazılım mühendisliği ilkeleri uygulamadan önce, uygulamanızın önceliklerini, ihtiyaçlarını ve dengelemelerini gözden geçirin.
Önkoşullar
- İyi Tasarlanmış Çerçeve sürdürülebilirlik kılavuzunu anlamak, yüksek kaliteli, kararlı ve verimli bir bulut mimarisi oluşturmanıza yardımcı olabilir. Microsoft Azure İyi Tasarlanmış Gözden Geçirme değerlendirmesini kullanarak sürdürülebilir iş yükleri hakkında daha fazla bilgi edinerek ve iş yükünüzü gözden geçirerek başlamanızı öneririz.
- Hem küme hem de iş yükü mimarileri ve yapılandırmaları üzerinde doğrudan etkisi olabileceğinden, uygulama oluştururken iş gereksinimlerini net bir şekilde tanımlamış olmanız çok önemlidir. Mevcut uygulamaları oluştururken veya güncelleştirirken uygulamanızın bütünsel yaşam döngüsünün yanı sıra İyi Tasarlanmış Çerçeve sürdürülebilirlik tasarım alanlarını gözden geçirin.
Paylaşılan sorumluluk modelini anlama
Sürdürülebilirlik, bulut sağlayıcısı ile platformda AKS kümelerini tasarlayan ve dağıtan müşteri veya iş ortağı arasında paylaşılan bir sorumlulukdur. Veri merkezleri sürdürülebilirlik için iyileştirilmiş olsa bile AKS'nin dağıtılması bunu otomatik olarak sürdürülebilir hale getirmez. Düzgün şekilde iyileştirilmemiş uygulamalar yine de gerekenden daha fazla karbon yayabilir.
Sürdürülebilirlik için paylaşılan sorumluluk modeli hakkında daha fazla bilgi edinin.
Tasarım ilkeleri
Karbon Verimliliği: Mümkün olan en az miktarda karbonu yayar.
Karbon açısından verimli bir bulut uygulaması iyileştirilmiş bir uygulamadır ve başlangıç noktası da maliyet iyileştirmedir.
Enerji Verimliliği: Mümkün olan en az enerji miktarını kullanın.
Enerji verimliliğini artırmanın bir yolu, en yüksek kullanım hızında çalışan sunucular ile uygulamayı mümkün olduğunca az sunucuda çalıştırmak ve ayrıca donanım verimliliğini artırmaktır.
Donanım Verimliliği: Mümkün olan en az miktarda gömülü karbon kullanın.
Donanım verimliliğine yönelik iki ana yaklaşım vardır:
- Son kullanıcı cihazları için bu, donanım ömrünü uzatır.
- Bulut bilişim için kaynak kullanımını artırıyor.
Karbon Farkındalığı: Elektrik daha temiz olduğunda daha fazlasını yapın ve elektrik daha kirli olduğunda daha az iş yapın.
Karbona duyarlı olmak, talebinizi artırarak veya azaltarak karbon yoğunluğundaki değişimlere yanıt vermek anlamına gelir.
Tasarım desenleri ve uygulamaları
Tasarım alanlarının her birinde ayrıntılı önerileri gözden geçirmeden önce AKS'de sürdürülebilir iş yükleri oluşturmak için aşağıdaki tasarım desenlerini dikkatle incelemenizi öneririz:
Uygulama tasarımı
Uygulamalarınızı daha sürdürülebilir bir uygulama tasarımı için iyileştirme hakkında daha fazla bilgi edinmek için bu bölümü inceleyin.
Mantıksal bileşenlerin bağımsız olarak ölçeklenmesi için tasarım
Mikro hizmet mimarisi, mantıksal bileşenlerinin bağımsız olarak ölçeklendirilmesine olanak tanıdığından ve talebe göre ölçeklendirilmelerini sağladığından gerekli işlem kaynaklarını azaltabilir.
- Uygulama işlevselliğinizi farklı mikro hizmetlere ayırmanıza ve mantıksal bileşenlerinin bağımsız olarak ölçeklendirilebilmesine olanak sağlamak için Dapr Framework veya diğer CNCF projelerini kullanmayı göz önünde bulundurun.
Olay odaklı ölçeklendirme için tasarım
İş yükünüzü HTTP istekleri, kuyruk uzunluğu ve bulut olayları gibi ilgili iş ölçümlerine göre ölçeklendirirken kaynak kullanımını ve karbon emisyonlarını azaltmaya yardımcı olabilirsiniz.
- Talep olmadığında ölçeğin sıfıra indirilmesine izin vermek için olay temelli uygulamalar oluştururken Keda kullanın.
Durum bilgisi olmayan tasarımı hedefleyin
Tasarımınızdan durum kaldırma, iş yükünün çalışması için gereken bellek içi veya disk içi verileri azaltır.
- Gereksiz ağ yükünü, veri işlemeyi ve işlem kaynaklarını azaltmak için durum bilgisi olmayan tasarımı göz önünde bulundurun.
Uygulama platformu
Sürdürülebilirlik konusunda platformla ilgili daha bilinçli kararlar almayı öğrenmek için bu bölümü keşfedin.
Küme ve düğüm otomatik güncelleştirmelerini etkinleştirme
Güncel bir küme gereksiz performans sorunlarını önler ve en son performans iyileştirmelerinden ve işlem iyileştirmelerinden yararlanmanızı sağlar.
- Kümenizin en son iyileştirmelere sahip olduğundan emin olmak için GitHub Actions'ı kullanarak kümenin otomatik olarak yükseltilmesini etkinleştirin ve düğümlere güvenlik güncelleştirmelerini otomatik olarak uygulayın.
Desteklenen eklentileri ve uzantıları yükleme
AKS destek ilkesi kapsamındaki eklentiler ve uzantılar kümenize daha fazla desteklenen işlevler sağlarken, kümenizin yaşam döngüsü boyunca en son performans iyileştirmelerinden ve enerji iyileştirmelerinden yararlanmanızı sağlar.
- KEDA'yi eklenti olarak yükleyin.
- GitOps ve Dapr'ı uzantı olarak yükleyin.
uygun olduğunda iş yükünüzü kapsayıcıya alma
Kapsayıcılar gereksiz kaynak ayırmayı azaltmaya ve dağıtılan kaynaklardan daha iyi yararlanmaya olanak sağlar çünkü bölme paketlemeye olanak sağlar ve sanal makinelere göre daha az işlem kaynağı gerektirir.
- Dockerfiles ve Kubernetes bildirimleri oluşturarak uygulama kapsayıcısını basitleştirmek için Taslak'ı kullanın.
Enerji tasarruflu donanım kullanma
Ampere'in Buluta Özel İşlemcileri, bulutun hem yüksek performans hem de güç verimliliği gereksinimlerini karşılayacak şekilde benzersiz bir şekilde tasarlanmıştır.
- Ampere Altra Arm tabanlı işlemcilere sahip düğümlerin iş yükleriniz için iyi bir seçenek olup olmadığını değerlendirin.
Ölçeklenebilirlik gereksinimlerini karşılayın ve otomatik ölçeklendirme ve ani artış özelliklerini kullanma
Büyük büyük küme, işlem kaynaklarının kullanımını en üst düzeye çıkarmaz ve enerji israflarına yol açabilir. Uygulama gereksinimlerine göre kümenin doğru boyutlandırmasını ve bağımsız ölçeklendirmesini sağlamak için uygulamalarınızı farklı düğüm havuzlarına ayırın. AKS kümenizde kapasiteniz tükendikçe, ek podların ölçeğini sunucusuz düğümlere genişletmek ve iş yükünüzün ayrılan tüm kaynakları verimli bir şekilde kullandığından emin olmak için AKS'den ACI'ye geçin.
- Kümenizi uygulamanızın ölçeklenebilirlik gereksinimlerine uyacak şekilde boyutlandırın. İşlem kaynağı kullanımını hızla ölçeklendirmek ve en üst düzeye çıkarmak için sanal düğümlerle küme otomatik ölçeklendiricisini kullanın.
- Ayrıca , ad alanı düzeyinde kaynak kotalarını zorunlu kılabilir ve talep olmadığında kullanıcı düğümü havuzlarını sıfır olarak ölçeklendikleyebilirsiniz.
İş saatleri dışında iş yüklerini ve düğüm havuzlarını kapatma
İş yüklerinin sürekli çalışması gerekmeyebilir ve enerji israfını ve karbon emisyonlarını azaltmak için kapatılabilir. AKS kümenizdeki düğüm havuzlarınızı tamamen kapatabilir (durdurarak) işlem maliyetlerinden de tasarruf edebilirsiniz.
- Düğüm havuzlarınızı iş saatleri dışında kapatmak için düğüm havuzu durdurma/başlatma özelliğini kullanın.
- KeDA CRON ölçeklendiricisini kullanarak iş yüklerinizin (podların) ölçeğini zamana göre azaltın.
operasyonel yordamlar
İş yüklerinizin maliyetini ve karbon verimliliğini ölçmek ve sürekli iyileştirmek için ortamınızı ayarlamak için bu bölümü inceleyin.
Kullanılmayan kaynakları silme
Başvurulmamış görüntüler ve depolama kaynakları gibi kullanılmayan kaynakları tanımlamanız ve silmeniz gerekir. Bu kaynaklar donanım ve enerji verimliliği üzerinde doğrudan etkiye sahiptir. Sürekli enerji iyileştirmesini sağlamak için kullanılmayan kaynakları tanımlamayı ve silmeyi belirli bir nokta etkinliği yerine bir süreç olarak ele almalıdır.
- Kullanılmayan kaynakları tanımlamak için Azure Danışmanı'na bakın.
- Eski görüntüleri temizlemek ve kümenizdeki bir risk alanını kaldırmak için ImageCleaner'ı kullanın.
Kaynaklarınızı etiketleme
Doğru bilgileri ve içgörüleri doğru zamanda almak, performans ve kaynak kullanımı hakkında rapor oluşturmak için önemlidir.
- İş yüklerinizin izlenmesini etkinleştirmek için kümenizde Azure etiketlerini ayarlayın.
Depolama
Daha sürdürülebilir bir veri depolama mimarisi tasarlamayı ve mevcut dağıtımları iyileştirmeyi öğrenmek için bu bölümü inceleyin.
Depolama kullanımını iyileştirme
Veri alma ve veri depolama işlemleri hem enerji hem de donanım verimliliği üzerinde önemli bir etkiye sahip olabilir. Çözümlerin doğru veri erişim düzeniyle tasarlanması enerji tüketimini ve gömülü karbonu azaltabilir.
- Uygulamanızın uygun depolamayı seçme gereksinimlerini anlayın ve depolamanın az kullanılmasını önlemek için depolama sınıflarını kullanarak tanımlayın.
- Depolama kaynaklarının sayısını otomatik olarak ölçeklendirmek için birimleri dinamik olarak sağlamayı göz önünde bulundurun.
Ağ ve bağlantı
Gereksiz karbon emisyonlarını azaltmak için ağ verimliliğini artırmayı ve iyileştirmeyi öğrenmek için bu bölümü inceleyin.
Kullanıcılara en yakın bölgeyi seçin
Veri merkezinden kullanıcılara olan uzaklık, enerji tüketimi ve karbon emisyonları üzerinde önemli bir etkiye sahiptir. Bir ağ paketinin kat etme mesafesini kısaltmak hem enerjinizi hem de karbon verimliliğinizi artırır.
- Çoğu ağ paketine en yakın bölgeyi seçmek için uygulama gereksinimlerinizi ve Azure coğrafyalarınızı gözden geçirin.
Düğümler arasında ağ geçişi azaltma
Düğümleri tek bir bölgeye veya tek bir kullanılabilirlik alanına yerleştirmek, örnekler arasındaki fiziksel uzaklığı azaltır. Bununla birlikte, iş açısından kritik iş yükleri için kümenizin birden çok kullanılabilirlik alanına yayıldığını ve bu sayede daha fazla ağ geçişi ve karbon ayak izinizin artmasına neden olabileceğinizden emin olmanız gerekir.
- İşlem kaynaklarınızın fiziksel olarak birbirine yakın olduğundan emin olarak ağ geçişini azaltmak için düğümlerinizi bir yakınlık yerleştirme grubu içinde dağıtmayı göz önünde bulundurun.
- Kritik iş yükleri için yakınlık yerleştirme gruplarını kullanılabilirlik alanlarıyla yapılandırın.
Hizmet ağı kullanarak değerlendirme
Hizmet ağı, cpu kullanımı ve ağ trafiğinde artışa yol açan daha fazla işlem özelliği sağlamak için genellikle sepet düzeninde iletişim için ek kapsayıcılar dağıtır. Bununla birlikte, uygulamanızı uygulama katmanından altyapı katmanına taşırken bu özelliklerden ayırmanıza olanak tanır.
- Kullanmaya karar vermeden önce, hizmet ağı iletişim bileşenleri tarafından oluşturulan CPU kullanımı ve ağ trafiği artışını dikkatle göz önünde bulundurun.
Günlük toplamayı iyileştirme
Tüm olası kaynaklardan (iş yükleri, hizmetler, tanılamalar ve platform etkinliği) tüm günlüklerin gönderilmesi ve depolanması, depolama ve ağ trafiğini artırabilir ve bu da maliyetleri ve karbon emisyonlarını etkileyebilir.
- Gereksinimlerinizi desteklemek için yalnızca gerekli günlük verilerini topladığınızdan ve tuttuğunuzdan emin olun. AKS iş yükleriniz için veri toplama kurallarını yapılandırın ve Log Analytics maliyetlerinizi iyileştirmek için tasarımla ilgili dikkat edilmesi gerekenleri uygulayın.
Statik verileri önbelleğe alma
Content Delivery Network (CDN) kullanmak, ağ genelinde veri hareketini azalttığı için ağ trafiğini iyileştirmeye yönelik sürdürülebilir bir yaklaşımdır. Sık okunan statik verileri kullanıcılara daha yakın bir şekilde depolayarak gecikme süresini en aza indirir ve ağ trafiğinin ve sunucu yükünün azaltılmasına yardımcı olur.
- CDN için en iyi yöntemleri izlediğinize emin olun.
- Tüketilen bant genişliğini düşürmek ve maliyetleri düşürmek için Azure CDN kullanmayı göz önünde bulundurun.
Güvenlik
Sürdürülebilir, doğru boyutlu bir güvenlik duruşu için öneriler hakkında daha fazla bilgi edinmek için bu bölümü inceleyin.
TLS sonlandırmanın kullanılıp kullanılmayacağını değerlendirme
Aktarım Katmanı Güvenliği (TLS), web sunucusu ile web tarayıcıları arasında geçirilen tüm verilerin özel ve şifrelenmiş kalmasını sağlar. Ancak TLS'yi sonlandırmak ve yeniden kurmak CPU kullanımını artırır ve belirli mimarilerde gereksiz olabilir. Dengeli bir güvenlik düzeyi daha sürdürülebilir ve enerji açısından verimli bir iş yükü sunabilirken, daha yüksek bir güvenlik düzeyi işlem kaynağı gereksinimlerini artırabilir.
- Application Gateway veya Azure Front Door kullanırken TLS sonlandırma hakkındaki bilgileri gözden geçirin. Sınır ağ geçidinizde TLS'yi sonlandırıp sonlandıramayacağınızı belirleyin ve iş yükü yük dengeleyiciniz ve iş yükünüz için TLS olmayanlarla devam edin.
Buluta özel ağ güvenlik araçlarını ve denetimlerini kullanma
Azure Front Door ve Application Gateway web uygulamalarından gelen trafiğin yönetilmesine yardımcı olurken, Azure Web Uygulaması Güvenlik Duvarı OWASP ilk 10 saldırılarına karşı koruma sağlar ve ağ kenarında hatalı botları yükler. Bu özellikler, gereksiz veri iletimini kaldırmaya ve daha düşük bant genişliği ve daha az altyapı gereksinimiyle bulut altyapısı üzerindeki yükü azaltmaya yardımcı olur.
- Aks'de Application Gateway Giriş Denetleyicisi'ni (AGIC), enerji tüketimini ve karbon emisyonlarını azaltmak için ağ kenarındaki trafiği kaynağınıza ulaşmadan filtrelemek ve boşaltmak için kullanın.
Güvenlik açıklarını tarama
Bulut altyapısına yönelik birçok saldırı, saldırganın doğrudan kazancı için dağıtılan kaynakları kötüye kullanmayı amaçlar ve bu da gereksiz bir kullanım ve maliyet artışına neden olur. Güvenlik açığı tarama araçları, saldırganlar için fırsat penceresini en aza indirmeye ve kaynakların kötü amaçlı olabilecek kullanımını azaltmaya yardımcı olur.
- Bulut için Microsoft Defender önerileri izleyin.
- Gereksiz kaynak kullanımını önlemek için Kapsayıcılar için Defender gibi otomatik güvenlik açığı tarama araçlarını çalıştırın. Bu araçlar, görüntülerinizdeki güvenlik açıklarını belirlemeye ve saldırganlar için fırsat penceresini en aza indirmeye yardımcı olur.
Sonraki adımlar
Azure Kubernetes Service