Projektowanie aplikacji zrównoważonych obciążeń na platformie Azure
Podczas tworzenia nowych lub aktualizowania istniejących aplikacji ważne jest, aby rozważyć, w jaki sposób rozwiązanie wpłynie na klimat i czy istnieją sposoby ulepszania i optymalizowania. Dowiedz się więcej o zagadnieniach i zaleceniach dotyczących optymalizacji kodu i aplikacji w celu bardziej zrównoważonego projektowania aplikacji.
Ważne
Ten artykuł jest częścią serii zrównoważonych obciążeń platformy Azure Well-Architected . Jeśli nie znasz tej serii, zalecamy rozpoczęcie od tego, co to jest zrównoważone obciążenie?
Wydajność kodu
Zapotrzebowanie na aplikacje może się różnić i ważne jest, aby rozważyć sposoby stabilizacji wykorzystania, aby zapobiec nadmiernej lub niedostatecznej ilości zasobów, co może prowadzić do niepotrzebnych wycieków energii.
Ocena przenoszenia monolitów do architektury mikrousług
Aplikacje monolityczne zwykle są skalowane jako jednostka, pozostawiając niewielkie miejsce na skalowanie tylko poszczególnych składników, które mogą jej potrzebować.
Dopasowanie Green Software Foundation: Efektywność energetyczna, Wydajność sprzętowa
Zalecenie:
- Oceń wskazówki dotyczące architektury mikrousług .
- Architektura mikrousług umożliwia skalowanie tylko niezbędnych składników podczas szczytowego obciążenia; zapewnienie, że składniki bezczynności są skalowane w dół lub w poziomie. Ponadto może zmniejszyć nakład pracy i zasoby wymagane do wdrażania aplikacji monolitycznych.
- Rozważmy tę kompromis: zmniejszenie wymaganych zasobów obliczeniowych może spowodować zwiększenie ilości ruchu w sieci, a złożoność aplikacji może znacznie wzrosnąć.
- Rozważmy tę inną kompromis: przejście do mikrousług może spowodować dodatkowe obciążenie wdrożenia z wieloma podobieństwami w potokach wdrażania. Dokładnie rozważ wymagane zasoby wdrożenia dla architektur monolitycznych i mikrousług.
- Ponadto przeczytaj o konteneryzowaniu aplikacji monolitycznych.
Zwiększanie wydajności interfejsu API
Wiele nowoczesnych aplikacji w chmurze jest przeznaczonych do obsługi wielu komunikatów między usługami i składnikami asynchronicznie. Rozważmy format używany do kodowania danych ładunku. Ile informacji potrzebuje aplikacja do komunikowania się i czy istnieje miejsce na zmniejszenie czattinessu?
Dopasowanie Green Software Foundation: Efektywność energetyczna
Zalecenie:
- Dowiedz się więcej o antywzorzecu we/ wy, aby lepiej zrozumieć, jak duża liczba żądań może wpływać na wydajność i czas reakcji.
- Zwiększ niezawodność i zmniejsz niepotrzebne obciążenie systemów. Zaimplementuj zaawansowane ograniczanie żądań za pomocą API Management.
- Zminimalizuj ilość danych zwracanych przez aplikację z żądań przez selektywne i kodowanie komunikatów. Zobacz zagadnienia dotyczące kodowania komunikatów.
- Odpowiedzi pamięci podręcznej, aby uniknąć ponownego przetwarzania tych samych typów informacji z systemu zaplecza, chyba że jest to konieczne. Zobacz buforowanie w usłudze Azure API Management.
Zapewnienie zgodności oprogramowania z poprzednimi wersjami, aby upewnić się, że działa na starszym sprzęcie
Rozważ sposób renderowania informacji przez aplikacje. Czy aplikacja musi krytycznie obsługiwać wszystko w najwyższej jakości, co skutkuje większą przepustowością i przetwarzaniem? Czy istnieje miejsce na zmniejszenie jakości składników w interfejsie użytkownika, aby lepiej obsługiwać cele zrównoważonego rozwoju?
Wyrównanie green Software Foundation: Wydajność sprzętu
Zalecenie:
- Obsługa większej liczby urządzeń konsumenckich użytkowników końcowych, takich jak starsze przeglądarki i systemy operacyjne. Ta zgodność z poprzednimi wersjami poprawia wydajność sprzętu przez ponowne wykorzystanie istniejącego sprzętu zamiast konieczności uaktualnienia sprzętu do działania rozwiązania.
- Rozważmy tę kompromis: jeśli najnowsze aktualizacje oprogramowania mają znaczne ulepszenia wydajności, użycie starszych wersji oprogramowania może nie być bardziej wydajne.
Korzystanie z natywnych wzorców projektowania chmury
Poznanie wzorców projektowania natywnych dla chmury jest przydatne w przypadku tworzenia aplikacji, niezależnie od tego, czy są hostowane na platformie Azure, czy w innym miejscu. Optymalizacja wydajności i kosztów aplikacji w chmurze spowoduje również zmniejszenie wykorzystania zasobów, dlatego emisje dwutlenku węgla.
Dopasowanie Green Software Foundation: Efektywność energetyczna, Wydajność sprzętowa
Zalecenie:
- Korzystaj z natywnych dla chmury wzorców projektowania podczas pisania lub aktualizowania aplikacji.
Rozważ użycie wzorców wyłącznika
Rozważ ocenę i zapobieganie aplikacjom wykonywania operacji, które mogą zakończyć się niepowodzeniem. Powtarzające się błędy mogą prowadzić do nakładu pracy i niepotrzebnego przetwarzania, którego można uniknąć przy użyciu odpowiednich wzorców projektowania.
Dopasowanie Green Software Foundation: Efektywność energetyczna
Zalecenie:
- Wyłącznik może działać jako serwer proxy dla operacji, które mogą zakończyć się niepowodzeniem i powinny monitorować liczbę ostatnich awarii, które wystąpiły i użyć tych informacji, aby zdecydować, czy kontynuować.
- Zapoznaj się ze wzorcem wyłącznika, a następnie zastanów się, jak można zaimplementować wzorce wyłącznika dla aplikacji.
- Rozważ użycie usługi Azure Monitor do monitorowania błędów i konfigurowania alertów.
Optymalizowanie kodu pod kątem wydajnego użycia zasobów
Aplikacje wdrożone przy użyciu nieefektywnego kodu mogą mieć nieodłączny wpływ na zrównoważony rozwój.
Dopasowanie Green Software Foundation: Efektywność energetyczna, Wydajność sprzętowa
Zalecenie:
- Zmniejsz cykle procesora CPU i liczbę zasobów potrzebnych dla aplikacji.
- Użyj zoptymalizowanych i wydajnych algorytmów i wzorców projektowych.
- Rozważ zasadę Nie powtarzaj siebie (DRY).
Optymalizowanie pod kątem wzorców dostępu asynchronicznego
Zapotrzebowanie na aplikacje może się różnić i ważne jest, aby rozważyć sposoby stabilizacji wykorzystania, aby zapobiec nadmiernej lub niedostatecznej ilości zasobów, co może prowadzić do niepotrzebnych wycieków energii.
Dopasowanie Green Software Foundation: Efektywność energetyczna
Zalecenie:
- Żądania kolejki i buforu, które nie wymagają natychmiastowego przetwarzania, a następnie przetwarzają wsadowe. Projektowanie aplikacji w ten sposób pomaga osiągnąć stabilne wykorzystanie i pomaga spłaszczać zużycie, aby uniknąć kolczastych żądań.
- Przeczytaj o optymalizacji wzorców dostępu asynchronicznego.
Ocena renderowania po stronie serwera a po stronie klienta
Ustal, czy renderować po stronie serwera, czy po stronie klienta podczas tworzenia aplikacji za pomocą interfejsu użytkownika.
Dopasowanie Green Software Foundation: Efektywność energetyczna, Wydajność sprzętowa
Zalecenie:
Rozważ następujące korzyści z renderowania po stronie serwera:
- Gdy moc serwera pochodzi z mniej zanieczyszczających alternatyw niż ustawienia regionalne klienta.
- Gdy sprzęt na serwerze ma lepsze współczynniki zużycia energii obliczeniowej.
- Może używać scentralizowanego buforowania w celu zmniejszenia wielu niepotrzebnych renderów.
- Zmniejszenie liczby rund przeglądarki do serwera może być szczególnie ważne, gdy urządzenie klienta ma łącze stratowe.
- Gdy urządzenia klienckie są starsze i mają wolniejsze procesory CPU. Użytkownicy nie muszą uaktualniać swoich urządzeń do obsługi nowoczesnej przeglądarki.
Rozważ następujące korzyści z renderowania po stronie klienta:
- Gdy urządzenia użytkowników końcowych są bardziej odpowiednie, wypychanie odpowiedzialności za renderowanie do klientów.
- Jest to bardziej wydajne tylko renderowanie potrzebnych elementów i zgodnie z żądaniem, w przeciwieństwie do renderowania wszystkiego co najmniej raz.
- Nie ma potrzeby korzystania z serwera, ponieważ można polegać na magazynie statycznym.
- Buforowanie przeglądarki jest używane na klientach.
Należy pamiętać o projektowaniu środowiska użytkownika na potrzeby zrównoważonego rozwoju
Zastanów się, w jaki sposób projekt środowiska użytkownika obciążenia ma wpływ na zrównoważony rozwój i określ, jakie opcje istnieją w celu poprawy efektywności energetycznej i zmniejszenia niepotrzebnego obciążenia sieci, przetwarzania danych i zasobów obliczeniowych.
Dopasowanie Green Software Foundation: Efektywność energetyczna
Zalecenie:
- Rozważ zmniejszenie liczby składników do załadowania i renderowania na stronach.
- Ustal, czy aplikacja może renderować obrazy i filmy wideo o niższej rozdzielczości.
- Nie renderuj obrazów o pełnym rozmiarze jako miniatur, w których przeglądarka wykonuje zmianę rozmiaru.
- Użycie obrazów o pełnym rozmiarze jako miniatur lub zmienionych rozmiarów obrazów spowoduje transfer większej ilości danych, niepotrzebnego ruchu sieciowego i dodatkowego użycia procesora CPU po stronie klienta ze względu na zmianę rozmiaru i wstępne renderowanie obrazów.
- Zapewnienie braku nieużywanych stron pomoże zminimalizować projekt środowiska użytkownika.
- Rozważ wyszukiwanie i znajdowanie. Ułatwianie użytkownikom znajdowania szukanych danych pomaga zmniejszyć ilość przechowywanych i pobranych danych.
- Rozważ zapewnienie lżejszego interfejsu użytkownika przy użyciu mniejszej liczby zasobów i mniejszego wpływu na zrównoważony rozwój oraz zapewnienie użytkownikom świadomego wyboru.
- Oszczędzaj energię, oferując aplikacje i witryny internetowe w trybie ciemnym, z ciemnymi tłami.
- Zdecyduj się na używanie czcionek systemowych, jeśli jest to możliwe, aby uniknąć wymuszania na klientach pobierania dodatkowych czcionek, co powoduje większe obciążenie sieci.
Aktualizowanie starszego kodu
Rozważ uaktualnienie lub wycofanie starszego kodu, jeśli nie jest ono uruchomione w nowoczesnej infrastrukturze chmury lub z najnowszymi aktualizacjami.
Wyrównanie green Software Foundation: Wydajność sprzętu
Zalecenie:
- Zidentyfikuj nieefektywny starszy kod odpowiedni do modernizacji.
- Sprawdź, czy istnieją opcje przejścia do bezserwerowej lub dowolnej z zoptymalizowanych opcji PaaS.
- Rozważmy tę kompromis: Aktualizowanie starego kodu, który może skończyć się przestarzałym, może zużywać cenny czas.
Następny krok
Zapoznaj się z zagadnieniami dotyczącymi projektowania dla platformy aplikacji.