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:
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.
- Włącz automatyczne skalowanie klastra i zastosuj aktualizacje zabezpieczeń do węzłów automatycznie przy użyciu funkcji GitHub Actions , aby upewnić się, że klaster ma najnowsze ulepszenia.
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.
- Zainstaluj aplikację KEDA jako dodatek.
- Zainstaluj rozszerzenia GitOps i Dapr .
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.
- Dopasuj rozmiar klastra, aby odpowiadał potrzebom skalowalności aplikacji. Użyj narzędzia do automatycznego skalowania klastra z węzłami wirtualnymi, aby szybko skalować i zmaksymalizować wykorzystanie zasobów obliczeniowych.
- Możesz również wymusić przydziały zasobów na poziomie przestrzeni nazw i skalować pule węzłów użytkownika do zera , gdy nie ma zapotrzebowania.
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.
- Ustaw tagi platformy Azure w klastrze , aby umożliwić monitorowanie obciążeń.
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.
- Upewnij się, że zbierasz i zachowujesz tylko niezbędne dane dziennika do obsługi wymagań. Skonfiguruj reguły zbierania danych dla obciążeń usługi AKS i zaimplementuj zagadnienia projektowe dotyczące optymalizowania kosztów usługi Log Analytics.
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.
- Upewnij się, że stosujesz najlepsze rozwiązania dotyczące usługi CDN.
- Rozważ użycie usługi Azure CDN , aby obniżyć zużywaną przepustowość i obniżyć koszty.
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.
- Użyj kontrolera ruchu przychodzącego usługi Application Gateway (AGIC) w usłudze AKS , aby filtrować i odciążać ruch na brzegu sieci z dotarcia do źródła, aby zmniejszyć zużycie energii i emisję dwutlenku węgla.
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
Azure Kubernetes Service