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:

Tasarım deseni İş yükü için geçerlidir Küme için geçerlidir
Mantıksal bileşenlerin bağımsız olarak ölçeklenmesi için tasarım ✔️
Olay odaklı ölçeklendirme için tasarım ✔️
Durum bilgisi olmayan tasarımı hedefleyin ✔️
Küme ve düğüm otomatik güncelleştirmelerini etkinleştirme ✔️
Desteklenen eklentileri ve uzantıları yükleme ✔️ ✔️
uygun olduğunda iş yükünüzü kapsayıcıya alma ✔️
Enerji tasarruflu donanım kullanma ✔️
Ölçeklenebilirlik gereksinimlerini karşılayın ve otomatik ölçeklendirme ve ani artış özelliklerini kullanma ✔️
İş saatleri dışında iş yüklerini ve düğüm havuzlarını kapatma ✔️ ✔️
Kullanılmayan kaynakları silme ✔️ ✔️
Kaynaklarınızı etiketleme ✔️ ✔️
Depolama kullanımını iyileştirme ✔️ ✔️
Kullanıcılara en yakın bölgeyi seçin ✔️
Düğümler arasında ağ geçişi azaltma ✔️
Hizmet ağı kullanarak değerlendirme ✔️
Günlük toplamayı iyileştirme ✔️ ✔️
Statik verileri önbelleğe alma ✔️ ✔️
TLS sonlandırmanın kullanılıp kullanılmayacağını değerlendirme ✔️ ✔️
Buluta özel ağ güvenlik araçlarını ve denetimlerini kullanma ✔️ ✔️
Güvenlik açıklarını tarama ✔️ ✔️

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.

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.

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.

İş 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.

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.

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.

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.

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.

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.

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