Udostępnij za pośrednictwem


Zrównoważone praktyki inżynieryjne oprogramowania w usłudze Azure Kubernetes Service (AKS)

Zrównoważone zasady inżynierii oprogramowania to zestaw kompetencji, które ułatwiają definiowanie, tworzenie i uruchamianie zrównoważonych aplikacji. Ogólnym celem jest zmniejszenie śladu węglowego w każdym aspekcie aplikacji. Wskazówki dotyczące platformy Azure Well-Architected Framework dotyczące zrównoważonego rozwoju są zgodne z zasadami zrównoważonej inżynierii oprogramowania z Green Software Foundation i zawiera omówienie zasad zrównoważonej inżynierii oprogramowania.

Zrównoważona inżynieria oprogramowania to zmiana priorytetów i koncentracji uwagi. W wielu przypadkach większość oprogramowania została zaprojektowana i uruchomiona, co wyróżnia szybką wydajność i małe opóźnienia. Zrównoważona inżynieria oprogramowania koncentruje się na zmniejszeniu jak największej ilości emisji dwutlenku węgla.

  • Zastosowanie zrównoważonych zasad inżynierii oprogramowania może zapewnić szybszą wydajność lub mniejsze opóźnienie, takie jak obniżenie całkowitego przejścia sieci.
  • Zmniejszenie emisji dwutlenku węgla może spowodować wolniejsze działanie lub większe opóźnienie, takie jak opóźnienie obciążeń o niskim priorytcie.

Poniższe wskazówki koncentrują się na usługach, które tworzysz lub obsługujesz na platformie Azure za pomocą usługi Azure Kubernetes Service (AKS). Ten artykuł zawiera listy kontrolne dotyczące projektowania i konfiguracji, zalecane rozwiązania projektowe i opcje konfiguracji. Przed zastosowaniem zasad zrównoważonej inżynierii oprogramowania do aplikacji przejrzyj priorytety, potrzeby i kompromisy aplikacji.

Wymagania wstępne

  • Zrozumienie wskazówek dotyczących zrównoważonego rozwoju platformy Well-Architected Framework może pomóc w utworzeniu wysokiej jakości, stabilnej i wydajnej architektury chmury. Zalecamy rozpoczęcie od przeczytania więcej informacji na temat zrównoważonych obciążeń i przejrzenia obciążenia przy użyciu oceny dobrze zaprojektowanej recenzji platformy Microsoft Azure.
  • Kluczowe znaczenie ma jasno zdefiniowane wymagania biznesowe podczas tworzenia aplikacji, ponieważ mogą mieć bezpośredni wpływ zarówno na architektury klastra, jak i konfiguracje obciążeń. Podczas tworzenia lub aktualizowania istniejących aplikacji zapoznaj się z obszarami projektowania zrównoważonego rozwoju platformy Well-Architected Framework wraz z całościowym cyklem życia aplikacji.

Opis modelu wspólnej odpowiedzialności

Zrównoważony rozwój to wspólna odpowiedzialność między dostawcą chmury a klientem lub partnerem, który projektuje i wdraża klastry usługi AKS na platformie. Wdrożenie usługi AKS nie powoduje automatycznego zrównoważonego rozwoju, nawet jeśli centra danych są zoptymalizowane pod kątem zrównoważonego rozwoju. Aplikacje, które nie są prawidłowo zoptymalizowane, mogą nadal emitować więcej węgla niż jest to konieczne.

Dowiedz się więcej o modelu wspólnej odpowiedzialności dla zrównoważonego rozwoju.

Zasady projektowania

  • Emisja dwutlenku węgla: Emituj najmniejszą możliwą ilość węgla.

    Węglowa aplikacja w chmurze jest taka, która jest zoptymalizowana, a punktem wyjścia jest optymalizacja kosztów.

  • Efektywność energetyczna: użyj najmniejszej możliwej ilości energii.

    Jednym ze sposobów zwiększenia efektywności energetycznej jest uruchomienie aplikacji na jak najmniejszej liczbą serwerów z serwerami z najwyższym współczynnikiem wykorzystania, a także zwiększenie wydajności sprzętu.

  • Wydajność sprzętowa: użyj najmniejszej możliwej ilości wbudowanego węgla.

    Istnieją dwa główne podejścia do wydajności sprzętu:

    • W przypadku urządzeń użytkowników końcowych trwa jego żywotność sprzętu.
    • W przypadku przetwarzania w chmurze zwiększa się wykorzystanie zasobów.
  • Świadomość emisji dwutlenku węgla: Zrób więcej, gdy energia elektryczna jest czystsza i mniej, gdy energia elektryczna jest brudniejsza.

    Świadomość emisji dwutlenku węgla oznacza reagowanie na zmiany wskaźnika emisji dwutlenku węgla przez zwiększenie lub zmniejszenie zapotrzebowania.

Wzorce i praktyki projektowe

Przed zapoznaniem się ze szczegółowymi zaleceniami w każdym z obszarów projektowych zalecamy dokładne rozważenie następujących wzorców projektowych dotyczących tworzenia zrównoważonych obciążeń w usłudze AKS:

Wzorzec projektowania Dotyczy obciążenia Dotyczy klastra
Projektowanie pod kątem niezależnego skalowania składników logicznych ✔️
Projektowanie pod kątem skalowania opartego na zdarzeniach ✔️
Cel w projektowanie bezstanowe ✔️
Włączanie automatycznych aktualizacji klastra i węzła ✔️
Instalowanie obsługiwanych dodatków i rozszerzeń ✔️ ✔️
Konteneryzowanie obciążenia, jeśli ma to zastosowanie ✔️
Korzystanie ze sprzętu wydajnego energetycznie ✔️
Dopasuj potrzeby dotyczące skalowalności i korzystaj z funkcji skalowania automatycznego i zwiększania skali ✔️
Wyłączanie obciążeń i pul węzłów poza godzinami pracy ✔️ ✔️
Usuwanie nieużywanych zasobów ✔️ ✔️
Tagowanie zasobów ✔️ ✔️
Optymalizowanie wykorzystania magazynu ✔️ ✔️
Wybierz region, który znajduje się najbliżej użytkowników ✔️
Zmniejszanie przechodzenia przez sieć między węzłami ✔️
Ocena przy użyciu siatki usług ✔️
Optymalizowanie zbierania dzienników ✔️ ✔️
Buforowanie danych statycznych ✔️ ✔️
Ocena, czy należy użyć zakończenia protokołu TLS ✔️ ✔️
Korzystanie z natywnych narzędzi i mechanizmów kontroli zabezpieczeń sieci w chmurze ✔️ ✔️
Skanowanie pod kątem luk w zabezpieczeniach ✔️ ✔️

Projekt aplikacji

Zapoznaj się z tą sekcją, aby dowiedzieć się więcej na temat optymalizowania aplikacji pod kątem bardziej zrównoważonego projektowania aplikacji.

Projektowanie pod kątem niezależnego skalowania składników logicznych

Architektura mikrousług może zmniejszyć wymagane zasoby obliczeniowe, ponieważ umożliwia niezależne skalowanie składników logicznych i zapewnia ich skalowanie zgodnie z zapotrzebowaniem.

  • Rozważ użycie platformy Dapr Framework lub innych projektów CNCF, aby ułatwić rozdzielenie funkcjonalności aplikacji na różne mikrousługi i umożliwienie niezależnego skalowania jego składników logicznych.

Projektowanie pod kątem skalowania opartego na zdarzeniach

Podczas skalowania obciążenia na podstawie odpowiednich metryk biznesowych, takich jak żądania HTTP, długość kolejki i zdarzenia w chmurze, można zmniejszyć wykorzystanie zasobów i emisję dwutlenku węgla.

  • Użyj Keda podczas tworzenia aplikacji opartych na zdarzeniach, aby umożliwić skalowanie w dół do zera, gdy nie ma zapotrzebowania.

Cel w projektowanie bezstanowe

Usunięcie stanu z projektu zmniejsza ilość danych w pamięci lub na dysku wymaganych przez obciążenie do działania.

  • Rozważmy projektowanie bezstanowe w celu zmniejszenia niepotrzebnego obciążenia sieciowego, przetwarzania danych i zasobów obliczeniowych.

Platforma aplikacji

Zapoznaj się z tą sekcją, aby dowiedzieć się, jak podejmować lepsze świadome decyzje związane z platformą w zakresie zrównoważonego rozwoju.

Włączanie automatycznych aktualizacji klastra i węzła

Aktualny klaster unika niepotrzebnych problemów z wydajnością i zapewnia korzyści z najnowszych ulepszeń wydajności i optymalizacji obliczeniowych.

Instalowanie obsługiwanych dodatków i rozszerzeń

Dodatki i rozszerzenia objęte zasadami pomocy technicznej usługi AKS zapewniają dodatkowe obsługiwane funkcje klastra, jednocześnie umożliwiając korzystanie z najnowszych ulepszeń wydajności i optymalizacji energii w całym cyklu życia klastra.

Konteneryzowanie obciążenia, jeśli ma to zastosowanie

Kontenery umożliwiają zmniejszenie niepotrzebnej alokacji zasobów i lepsze wykorzystanie wdrożonych zasobów, ponieważ umożliwiają pakowanie pojemników i wymagają mniejszej ilości zasobów obliczeniowych niż maszyny wirtualne.

  • Użyj wersji roboczej , aby uprościć konteneryzowanie aplikacji przez generowanie manifestów dockerfile i Kubernetes.

Korzystanie ze sprzętu wydajnego energetycznie

Procesory natywne dla chmury firmy Ampere są unikatowo zaprojektowane tak, aby spełniały zarówno wymagania dotyczące wysokiej wydajności, jak i wydajności energetycznej chmury.

  • Oceń, czy węzły z procesorami arm Ampere Altra są dobrym rozwiązaniem dla obciążeń.

Dopasuj potrzeby dotyczące skalowalności i korzystaj z funkcji skalowania automatycznego i zwiększania skali

Nadmierny klaster nie maksymalizuje wykorzystania zasobów obliczeniowych i może prowadzić do strat energii. Rozdziel aplikacje na różne pule węzłów, aby umożliwić odpowiednie ustalanie rozmiaru klastra i niezależne skalowanie zgodnie z wymaganiami aplikacji. Gdy zabraknie pojemności w klastrze usługi AKS, zwiększ się z usługi AKS do usługi ACI, aby skalować dodatkowe zasobniki do węzłów bezserwerowych i zapewnić, że obciążenie efektywnie używa wszystkich przydzielonych zasobów.

Wyłączanie obciążeń i pul węzłów poza godzinami pracy

Obciążenia mogą nie wymagać ciągłego uruchamiania i można je wyłączyć, aby zmniejszyć ilość odpadów energetycznych i emisji dwutlenku węgla. Możesz całkowicie wyłączyć (zatrzymać) pule węzłów w klastrze usługi AKS, co pozwala również zaoszczędzić na kosztach obliczeń.

  • Użyj zatrzymania/uruchamiania puli węzłów, aby wyłączyć pule węzłów poza godzinami pracy.
  • Użyj narzędzia skalowania CRON KEDA, aby skalować obciążenia (zasobniki) w dół na podstawie czasu.

Procedury operacyjne

Zapoznaj się z tą sekcją, aby skonfigurować środowisko do mierzenia i ciągłego ulepszania kosztów obciążeń i efektywności emisji dwutlenku węgla.

Usuń nieużywane zasoby

Należy zidentyfikować i usunąć wszystkie nieużywane zasoby, takie jak obrazy nieużywane i zasoby magazynu, ponieważ mają bezpośredni wpływ na sprzęt i efektywność energetyczną. Aby zapewnić ciągłą optymalizację energii, należy traktować identyfikowanie i usuwanie nieużywanych zasobów jako proces, a nie działanie do punktu w czasie.

  • Użyj usługi Azure Advisor , aby zidentyfikować nieużywane zasoby.
  • Użyj narzędzia ImageCleaner , aby wyczyścić nieaktualne obrazy i usunąć obszar ryzyka w klastrze.

Tagowanie zasobów

Uzyskanie odpowiednich informacji i szczegółowych informacji w odpowiednim czasie jest ważne w przypadku tworzenia raportów dotyczących wydajności i wykorzystania zasobów.

Storage

Zapoznaj się z tą sekcją, aby dowiedzieć się, jak zaprojektować bardziej zrównoważoną architekturę magazynu danych i zoptymalizować istniejące wdrożenia.

Optymalizowanie wykorzystania magazynu

Operacje pobierania danych i magazynowania danych mogą mieć znaczący wpływ zarówno na wydajność energetyczną, jak i sprzętową. Projektowanie rozwiązań z prawidłowym wzorcem dostępu do danych może zmniejszyć zużycie energii i wbudowany ślad węglowy.

  • Zapoznaj się z potrzebami aplikacji, aby wybrać odpowiedni magazyn i zdefiniować go przy użyciu klas magazynu, aby uniknąć niedostatecznego wykorzystania magazynu.
  • Rozważ dynamiczne aprowizowanie woluminów w celu automatycznego skalowania liczby zasobów magazynu.

Sieć i łączność

Zapoznaj się z tą sekcją, aby dowiedzieć się, jak zwiększyć i zoptymalizować wydajność sieci w celu zmniejszenia niepotrzebnych emisji dwutlenku węgla.

Wybierz region, który znajduje się najbliżej użytkowników

Odległość od centrum danych do użytkowników ma znaczący wpływ na zużycie energii i emisję dwutlenku węgla. Skrócenie odległości podróży pakietów sieciowych zwiększa zarówno efektywność energetyczną, jak i węglową.

  • Przejrzyj wymagania aplikacji i lokalizacje geograficzne platformy Azure, aby wybrać region najbliżej regionu, w którym dzieje się większość pakietów sieciowych.

Zmniejszanie przechodzenia przez sieć między węzłami

Umieszczenie węzłów w jednym regionie lub pojedynczej strefie dostępności zmniejsza odległość fizyczną między wystąpieniami. Jednak w przypadku obciążeń o krytycznym znaczeniu dla działania firmy należy upewnić się, że klaster jest rozłożony w wielu strefach dostępności, co może spowodować zwiększenie przechodzenia przez sieć i zwiększenie śladu węglowego.

  • Rozważ wdrożenie węzłów w grupie umieszczania w pobliżu, aby zmniejszyć przechodzenie przez sieć, zapewniając, że zasoby obliczeniowe znajdują się fizycznie blisko siebie.
  • W przypadku obciążeń krytycznych skonfiguruj grupy umieszczania w pobliżu ze strefami dostępności.

Ocena przy użyciu siatki usług

Siatka usług wdraża dodatkowe kontenery na potrzeby komunikacji, zwykle we wzorcu przyczepki, aby zapewnić więcej możliwości operacyjnych, co prowadzi do wzrostu użycia procesora CPU i ruchu sieciowego. Niemniej jednak umożliwia oddzielenie aplikacji od tych funkcji, ponieważ przenosi je z warstwy aplikacji i w dół do warstwy infrastruktury.

  • Przed podjęciem decyzji o użyciu jednostki należy dokładnie rozważyć wzrost użycia procesora CPU i ruchu sieciowego generowanego przez składniki komunikacji siatki usług.

Optymalizowanie zbierania dzienników

Wysyłanie i przechowywanie wszystkich dzienników ze wszystkich możliwych źródeł (obciążeń, usług, diagnostyki i aktywności platformy) może zwiększyć ruch magazynu i sieci, co wpływa na koszty i emisje dwutlenku węgla.

Buforowanie danych statycznych

Użycie usługi Content Delivery Network (CDN) to zrównoważone podejście do optymalizacji ruchu sieciowego, ponieważ zmniejsza ruch danych w sieci. Minimalizuje opóźnienia dzięki przechowywaniu często odczytywanych danych statycznych bliżej użytkowników i pomaga zmniejszyć ruch sieciowy i obciążenie serwera.

Zabezpieczenia

Zapoznaj się z tą sekcją, aby dowiedzieć się więcej na temat zaleceń prowadzących do zrównoważonego, odpowiedniego stanu zabezpieczeń.

Ocena, czy należy użyć zakończenia protokołu TLS

Protokół Transport Layer Security (TLS) gwarantuje, że wszystkie dane przekazywane między serwerem internetowym a przeglądarkami internetowymi pozostaną prywatne i zaszyfrowane. Jednak zakończenie i ponowne ustanowienie protokołu TLS zwiększa wykorzystanie procesora CPU i może być niepotrzebne w niektórych architekturach. Zrównoważony poziom zabezpieczeń może oferować bardziej zrównoważone i wydajne energetycznie obciążenie, podczas gdy wyższy poziom zabezpieczeń może zwiększyć wymagania dotyczące zasobów obliczeniowych.

  • Zapoznaj się z informacjami na temat kończenia żądań protokołu TLS podczas korzystania z usługi Application Gateway lub usługi Azure Front Door. Ustal, czy możesz przerwać protokół TLS w bramie obramowania i kontynuować pracę z modułem równoważenia obciążenia i obciążeniem bez protokołu TLS.

Korzystanie z natywnych narzędzi i mechanizmów kontroli zabezpieczeń sieci w chmurze

Usługi Azure Front Door i Application Gateway pomagają zarządzać ruchem z aplikacji internetowych, podczas gdy usługa Azure Web Application Firewall zapewnia ochronę przed atakami OWASP top 10 i ładować szkodliwe boty na brzegu sieci. Te możliwości pomagają usunąć niepotrzebne przesyłanie danych i zmniejszyć obciążenie infrastruktury chmury przy mniejszej przepustowości i mniejszej liczbie wymagań dotyczących infrastruktury.

Skanowanie pod kątem luk w zabezpieczeniach

Wiele ataków na infrastrukturę chmury ma na celu niewłaściwe użycie wdrożonych zasobów dla bezpośredniego zysku osoby atakującej, co prowadzi do niepotrzebnego wzrostu użycia i kosztów. Narzędzia do skanowania luk w zabezpieczeniach pomagają zminimalizować okno możliwości atakujących i ograniczyć potencjalne złośliwe użycie zasobów.

  • Postępuj zgodnie z zaleceniami z Microsoft Defender dla Chmury.
  • Uruchom zautomatyzowane narzędzia do skanowania luk w zabezpieczeniach, takie jak Defender for Containers, aby uniknąć niepotrzebnego użycia zasobów. Te narzędzia pomagają identyfikować luki w zabezpieczeniach obrazów i zminimalizować okno możliwości dla osób atakujących.

Następne kroki