Zalecenia dotyczące optymalizowania kosztów składników

Dotyczy tej rekomendacji z listy kontrolnej optymalizacji kosztów platformy Azure Well-Architected Framework:

CO:07 Optymalizowanie kosztów składników. Regularne usuwanie lub optymalizowanie starszych, niepotrzebnych i niedostatecznie używanych składników obciążenia, w tym funkcji aplikacji, funkcji platformy i zasobów.

W tym przewodniku opisano zalecenia dotyczące optymalizowania kosztów składników obciążenia. Optymalizacja kosztów składników odnosi się do procesu oceny i poprawy efektywności kosztowej poszczególnych elementów w ramach obciążenia. Podkreśla ona ciągły przegląd i potencjalne usunięcie nieaktualnych, niepotrzebnych lub rzadko używanych składników, takich jak funkcje aplikacji, funkcje platformy i zasoby. Obejmuje również optymalizację kosztów środowisk odzyskiwania po awarii i sposób unikania wprowadzania niezoptymalizowanych składników. Wskazówki zawarte w tym artykule dotyczą istniejących obciążeń, które nie są w fazie projektowania. Zaniedbanie regularnej optymalizacji składników może prowadzić do zawyżonego kosztu, strat zasobów i nieefektywnych obciążeń, które opróżniają zarówno czas, jak i pieniądze.

Definicje

Okres Definicja
Funkcja aplikacji Odrębna funkcja w oprogramowaniu aplikacji, która umożliwia użytkownikom wykonywanie określonych zadań lub uzyskiwanie dostępu do określonych informacji.
Funkcja platformy Określona funkcjonalność lub możliwość zapewniana przez platformę. Może się różnić w zależności od platformy, ale ogólnie funkcje platformy są przeznaczone do ulepszania środowiska użytkownika, zwiększania produktywności lub włączania określonych zadań lub akcji.
Zasób Pojedyncza jednostka lub składnik, który można utworzyć, skonfigurować i wykorzystać w ramach dostawcy usług w chmurze.

Kluczowe strategie projektowania

Optymalizowanie składników obciążenia polega na udoskonaleniu różnych elementów obciążenia, w tym funkcji aplikacji, możliwości platformy i zasobów. Celem jest zapewnienie, że obciążenie korzysta ze wszystkich składników wydajnie i opłacalnie. Strategie obejmują usuwanie, modyfikowanie i unikanie składników, które powodują wydawanie więcej niż potrzebne. Proces optymalizacji kosztów składników zapewnia przydzielanie zasobów do funkcji i składników, które zapewniają największą wartość, unikając niepotrzebnych wydatków.

Optymalizowanie funkcji aplikacji

Optymalizacja funkcji aplikacji to proces usuwania, ponownego inwestowania lub zarabiania funkcji aplikacji na podstawie wartości. Zapewnia ona przydzielanie zasobów do funkcji aplikacji, które zapewniają klientom największą wartość. Optymalizacja funkcji aplikacji pomaga uniknąć inwestowania w funkcje, które przyczyniają się do długu technicznego lub nie przynoszą wystarczającego zwrotu z inwestycji.

Ocena wartości funkcji aplikacji

Aby określić wartość funkcji, rozważ jej wpływ na ogólną aplikację i wartość, która zapewnia klientom. Niektóre czynniki, które należy wziąć pod uwagę, obejmują:

  • Potrzeby klientów: oceń, jak dobrze funkcja spełnia potrzeby i oczekiwania klientów. Opinie klientów, ankiety i dane użycia mogą być przydatne w zrozumieniu postrzeganej wartości.

  • Cele biznesowe: Oceń, jak funkcja jest zgodna ze strategicznymi celami firmy. Zastanów się, w jaki sposób funkcje obsługują generowanie przychodów, zadowolenie klientów lub przewagę konkurencyjną.

  • Wpływ na środowisko użytkownika: określ wpływ, jaki funkcja ma na zwiększenie środowiska użytkownika i poprawę użyteczności lub produktywności.

  • Różnice: ocena, czy funkcja zapewnia unikatowy punkt sprzedaży, czy przewagę konkurencyjną w porównaniu z innymi aplikacjami na rynku.

Ocena kosztów funkcji aplikacji

Ważne jest, aby zrozumieć koszt skojarzony z każdą funkcją w celu efektywnej alokacji i optymalizacji zasobów. Podczas oceniania kosztów należy wziąć pod uwagę różne aspekty, takie jak:

  • Nakład pracy programistyjny: ocena czasu, zasobów i wiedzy wymaganej do opracowania i utrzymania funkcji lub otaczających funkcji. Niedosłużone funkcje często stają się kluczowym źródłem długu technicznego.

  • Konserwacja i obsługa techniczna: rozważ bieżące koszty związane z konserwacją i obsługą funkcji, w tym poprawki błędów, aktualizacje zabezpieczeń i rozwiązywanie problemów.

  • Wykorzystanie infrastruktury i zasobów: oceń wpływ funkcji na wymagania dotyczące infrastruktury, w tym zasoby serwera, magazyn i przepustowość.

  • Złożoność integracji: ocena złożoności i kosztów integracji funkcji z innymi systemami lub usługami innych firm.

  • Zagadnienia dotyczące wydajności: oceń wpływ funkcji na wydajność aplikacji, w tym skalowalność, czas odpowiedzi i użycie zasobów.

Przeglądanie wartości funkcji aplikacji z osobami biorącymi udział w projekcie

Zapoznaj się z wartością funkcji aplikacji z uczestnikami projektu, angażując kluczowych pracowników, takich jak menedżerowie produktów, deweloperzy oprogramowania i analitycy biznesowi, aby ocenić wartość określonych funkcji w celach biznesowych. Ta współpraca jest niezbędna do optymalizacji kosztów, ponieważ zapewnia wgląd w prace konserwacyjne i identyfikuje funkcje, które mogą utrudnić produktywność lub uniemożliwić opracowywanie nowych, cennych funkcji. Twój zespół programistyczny może przekazać ważne informacje o tym, ile pracy potrzeba do utrzymania niektórych funkcji. Zachęcamy ich do mówienia o funkcjach, które mogą być bardziej kłopoty niż warto, zwłaszcza jeśli te funkcje rozpraszają zespół od tworzenia nowych.

Określanie przyszłości funkcji

Na podstawie analizy i oceny określ przyszłość funkcji aplikacji. Usuń, przeinwestuj lub zarobij dowolną funkcję aplikacji, która nie zapewnia zwrotu z inwestycji:

  • Usunięcie: rozważ zaplanowany koniec życia funkcji aplikacji na podstawie danych. Przyczyny usunięcia funkcji mogą obejmować niskie zapotrzebowanie klientów, wysokie koszty konserwacji, złożoność lub nadmiarowość, które nie są warte naprawy. Utwórz plan usunięcia, który może obejmować refaktoryzowanie kodu, aktualizowanie zależności lub reorganizację interfejsu użytkownika.

    Ryzyko związane z ryzykiem: Nieumyślnie można usunąć funkcje krytyczne dla niektórych użytkowników lub scenariuszy i mogą negatywnie wpłynąć na wydajność, operacje i zabezpieczenia w aplikacji.

  • Reinwestowanie: niektóre funkcje aplikacji mogą nie dodać wystarczającej wartości w bieżącym stanie, ale mogą dodać wartość w przypadku ponownego inwestowania w nie. Reinwestowanie oznacza przerobienie lub promowanie funkcji aplikacji. Nadaj priorytet zidentyfikowanym ulepszeniom na podstawie ich wartości i możliwości. Określ harmonogram działania i oś czasu wdrażania zmian. Rozważ czynniki, takie jak zasoby programistyczne, zależności i potencjalny wpływ na aplikację.

  • Zarabianie: przekształcanie funkcji aplikacji w możliwość generowania przychodów za pośrednictwem monetyzacji. Czasami funkcje zapewniają użytkownikom wartość, ale nie są warte bieżącej inwestycji. Poznaj możliwości zarabiania na tych funkcjach, takie jak oferowanie ich jako oddzielnych płatnych dodatków lub licencjonowanie ich innym firmom.

Optymalizowanie zasobów obciążenia

Optymalizacja zasobów obciążeń polega na usunięciu wszystkich zasobów, które nieużywane i optymalizują wszelkie nieużywane zasoby wymagane przez obciążenie. Ten wysiłek może zaoszczędzić pieniądze, uniknąć strat i zapewnić, że obciążenie korzysta tylko z zasobów, które dodają wartość.

Usuń nieużywane zasoby obciążenia. Nieużywane zasoby są wdrażane w usługach, których nie używasz w przypadku obciążeń lub procesów operacyjnych. Te zasoby mogą być długoterminowe bezczynne, oddzielone lub zapomniane. Nie zapewniają zwrotu z inwestycji i należy je usunąć. Typowe przyczyny nieużywanych zasobów to:

  • Alerty.
  • Kompilacje demonstracyjne.
  • Likwidowanie środowiska.
  • Likwidowanie funkcji.
  • Adresy IP.
  • Zapory sieciowe.
  • Weryfikacja koncepcji.
  • Migawek.
  • Konta magazynu.
  • Tymczasowe środowiska testowania.
  • Tymczasowe środowiska klasyfikacji.

Aby usunąć nieużywane zasoby w obciążeniu, rozważ następujące kroki:

  1. Weź udział w spisie: przeprowadź dokładny spis wszystkich zasobów w obciążeniu w różnych środowiskach.

  2. Znajdowanie oddzielonych zasobów: zasoby mogą być oddzielone, gdy nie są już potrzebne lub gdy ich zasoby nadrzędne zostaną usunięte. Możesz na przykład usunąć maszynę wirtualną, ale skojarzone z nią konto magazynu nie zostanie usunięte. Przejrzyj obciążenie, aby zidentyfikować niepotrzebne lub oddzielone zasoby.

  3. Usuwanie składników bezczynnych: zazwyczaj koszt jest skojarzony z wdrożonym zasobem. Nawet jeśli zasób pozwala zatrzymać lub cofnąć przydział, możesz nadal płacić za zasób. Rozważ usunięcie bezczynnych zasobów. Jeśli potrzebujesz danych, utwórz kopię zapasową najpierw, a następnie usuń zasób. Lepiej jest ponownie wdrażać zasób i przywracać dane niż zezwalać zasobowi na pozostanie bezczynności.

Optymalizowanie niedostatecznie wykorzystanych zasobów. Niewykorzystane zasoby reprezentują zmarnowane wydatki, gdy płacisz za pojemność zasobów, która nie jest w pełni wykorzystywana. Identyfikowanie i optymalizowanie tych zasobów w celu zmniejszenia kosztów i efektywniejszego przydzielania zasobów. Aby ocenić i zoptymalizować koszt niedostatecznie wykorzystanych zasobów, wykonaj następujące kroki:

  1. Monitorowanie zasobów: użyj narzędzi do monitorowania ilości procesora CPU, pamięci i magazynu, którego faktycznie używasz. Wybierz najlepszy plan odpowiadający Twoim potrzebom na podstawie tych informacji.

  2. Analizowanie wykorzystania: przyjrzyj się danym, aby dowiedzieć się, które zasoby nie są używane. Zwróć uwagę na zasoby, które mają niskie użycie w czasie lub duże różnice w użyciu między czasem zajętym a wolnym czasem.

  3. Ustalanie rozmiaru po prawej stronie: sprawdź, czy istnieje zbyt wiele zasobów przydzielonych do funkcji, które nie są używane. Jeśli tak, dostosuj ich rozmiar, aby lepiej dopasować to, czego rzeczywiście potrzebujesz.

  4. Automatyczne skalowanie: użyj automatycznego skalowania, aby dostosować używane zasoby w zależności od tego, jak jesteś zajęty. Upewnij się, że ustawiono maksymalny limit skalowania, aby uniknąć nagłych skoków, które mogą być kosztowne i niepotrzebne.

Po wprowadzeniu tych korekt przetestuj, aby upewnić się, że wszystko nadal działa tak, jak powinno. Stale monitoruj wykorzystanie zasobów i dostosowuj alokację zasobów, gdy zapotrzebowanie na obciążenie zmienia się wraz z upływem czasu. Regularne przeglądanie i optymalizowanie wykorzystania zasobów w celu utrzymania wydajności i optymalizacji wydajności.

Optymalizowanie zasobów odzyskiwania po awarii. Optymalizacja środowisk odzyskiwania po awarii polega na zapewnieniu wydajnego wykorzystania zasobów przydzielonych do odzyskiwania po awarii. Strategia odzyskiwania po awarii w ciepłej (aktywne-pasywne) jest typowym źródłem niedostatecznego wykorzystania. W strategii ciepłego odzyskiwania po awarii jedno środowisko odbiera wszystkie obciążenia, podczas gdy drugie środowisko jest w stanie bezczynności do momentu wystąpienia awarii. Aby zoptymalizować środowisko odzyskiwania po awarii, rozważ, jak gorąca (aktywna-aktywna), zimna (aktywna) lub podejście do ponownego wdrażania aktywne może pomóc uniknąć niedostatecznie wykorzystanych zasobów. Oto omówienie tych trzech podejść odzyskiwania po awarii:

  • Gorące plany: zarówno podstawowe, jak i pomocnicze środowiska obsługują ruch współbieżnie. Obciążenie może równoważyć obciążenia między tymi środowiskami i reagować na żądania w czasie rzeczywistym. Dystrybucja obciążenia między dwoma aktywnymi środowiskami umożliwia korzystanie z tańszych zasobów, zmniejszanie wąskich gardeł pojedynczego punktu i wykorzystanie pojemności do najpełniejszych. Może to prowadzić do obniżenia kosztów pod względem braku zasobów lub bezczynności. Gorące podejście może wymagać większej inwestycji w synchronizację i utrzymania parzystości między dwoma środowiskami.

  • Zimne plany: Zimny model odzyskiwania po awarii obejmuje środowisko rezerwowe, które pozostaje uśpione, dopóki awaria nie wywoła potrzeby przejścia w tryb failover. Ponieważ środowisko rezerwowe nie jest aktywnie uruchomione, zminimalizowane są koszty związane z operacjami obliczeniowymi, magazynem i siecią. Wydatki dotyczą przechowywania kopii zapasowych, obrazów maszyn wirtualnych lub szablonów. Przejście w tryb failover w zimnym modelu może trwać dłużej, ponieważ należy uruchomić zasoby, a dane mogą wymagać przywrócenia. Przed zatwierdzeniem tego podejścia upewnij się, że czas odzyskiwania jest zgodny z celami czasu odzyskiwania (RTO) firmy.

  • Ponowne wdrażanie aktywne: Ta strategia używa infrastruktury jako kodu. W przypadku wystąpienia zdarzenia trybu failover należy wdrożyć środowisko pomocnicze przy użyciu wstępnie zdefiniowanych szablonów i skryptów. Bez wstępnie wdrożonych zasobów obliczeniowych w środowisku odzyskiwania po awarii można zaoszczędzić na kosztach związanych z utrzymywaniem bezczynnych zasobów. Koszty są naliczane tylko podczas rzeczywistego wdrożenia w scenariuszu trybu failover. Podobnie jak w przypadku zimnego podejścia ten model może wprowadzać dłuższe czasy odzyskiwania, zwłaszcza jeśli złożoność infrastruktury jest wysoka. Należy przetestować i zmierzyć czas odzyskiwania, aby upewnić się, że spełnia cel czasu odzyskiwania.

Optymalizowanie funkcji platformy

Optymalizacja funkcji platformy polega na wyeliminowaniu lub zaktualizowaniu funkcji platformy, takich jak warstwy wydajności i ustawienia konfiguracji, aby zoptymalizować koszty. Pomaga dostosować wydatki do wymagań obciążenia i uniknąć niepotrzebnych wydatków na niepotrzebne funkcje. Poniżej przedstawiono kilka wskazówek dotyczących optymalizowania kosztów funkcji platformy:

  • Poznaj możliwości zakupionych elementów: Zanim będzie można zoptymalizować, potrzebujesz jasnego spisu usług i ich funkcji na różnych platformach w chmurze. Zapoznaj się z funkcjami i funkcjami platform lub usług w obciążeniu. Należy pamiętać o wybranej warstwie i funkcjach oferowanych przez poszczególne warstwy. Jeśli na przykład nie potrzebujesz skalowania automatycznego ani zaawansowanych sieci, wystarczy plan niższej warstwy.

  • Wyłącz nieużywane funkcje: zidentyfikuj i wyłącz funkcje platformy, które kosztują pieniądze. Mogą istnieć niepotrzebne migawki magazynu, nieużywane dyski, nadmiarowe funkcje zabezpieczeń lub niedostatecznie wykorzystywane możliwości sieciowe.

  • Użyj odpowiednich wersji: nowsze wersje usługi mogą zapewnić podobną wydajność za tę samą cenę. Na przykład maszyna wirtualna z nowszym sprzętem często zapewnia taką samą wydajność za mniej pieniędzy.

  • Użyj odpowiednich konfiguracji: możesz płacić za większą dostępność lub wydajność, niż potrzebujesz. Eliminowanie dostępności lub gwarancji wydajności, których obciążenie nie wymaga.

  • Eliminowanie niepotrzebnej automatyzacji: oceń procesy automatyzacji i wyeliminuj wszelkie nieużywane automatyzacje, które mogą wiązać się z dodatkowymi kosztami.

  • Eliminowanie nadmiarowości narzędzi: pozbywaj się narzędzi, których nie potrzebujesz, ani narzędzi, które udostępniają tę samą funkcję. Oceń potencjalną nadmiarowość w narzędziach używanych do tworzenia oprogramowania, pisania kodu, zabezpieczeń i monitorowania. Jeśli na przykład używasz GitHub Actions do tworzenia oprogramowania, nie musisz kupować innego narzędzia, które tworzy oprogramowanie. Przed zakupem funkcji lub narzędzi sprawdź, czy w obciążeniu istnieje już narzędzie, które może wykonać to zadanie. Wyeliminuj nadmiarowość narzędzi, aby uniknąć marnotrawstwa pieniędzy i jak najlepiej wykorzystać to, co już masz.

Zapobieganie niezoptymalizowanym składnikom

Zapobieganie niezoptymalizowanym składnikom polega na proaktywnym zapewnieniu, że składniki są niezbędne i zoptymalizowane przed dodaniem lub zmodyfikowanie. Najlepszym sposobem na pozbycie się odpadów jest uniknięcie go w pierwszej kolejności. Używaj strategii, które zapobiegają niepotrzebnym wydatkom, zwracając się do nieefektywności w katalogu głównym, zapewniając, że obciążenie działa opłacalnie od samego początku. Aby zapobiec marnowaniu, rozważ następujące strategie:

  • Znajdź główną przyczynę przed zmianą rozwiązań: Przed rozwiązaniem problemu upewnij się, że wiesz, co to rzeczywiście powoduje. Jeśli na przykład witryna internetowa działa wolno, nie przełączaj się natychmiast do nowego systemu. Najpierw zastanów się, dlaczego jest powolny. Możesz dowiedzieć się, że prawdziwym problemem jest coś innego, na przykład nieprawidłowe zapytania bazy danych. Rozwiąż rzeczywisty problem, aby zaoszczędzić czas i pieniądze.

  • Stosowanie metadanych: stosowanie metadanych w celu organizowania i śledzenia zasobów. Metadane umożliwiają kategoryzowanie i grupowanie zasobów, co ułatwia śledzenie, usuwanie i unikanie oddzielonych zasobów. Utwórz spójną strategię metadanych między zasobami. Rozważ dodanie właścicieli, przewidywanego czasu trwania zasobu (na przykład sunset-30d) lub innych tagów.

  • Udogodność ze zmianami niestandardowymi: umożliwia dokumentowanie wszelkich zmian wprowadzonych w infrastrukturze lub konfiguracjach wykonywanych poza normalnym procesem kontroli obciążenia w celu obniżenia nieoczekiwanych kosztów. Na przykład możesz zwiększyć pojemność skalowania zasobów (w górę lub w poziomie), aby zaspokoić krótkoterminowe zapotrzebowanie lub sklasyfikować problem, ale zapomnij skalować go z powrotem w dół. Wprowadź listę nietypowych zmian i użyj jej jako przypomnienia, aby przywrócić zmiany, gdy nie są już potrzebne.

  • Zachowaj prostotę: uprość infrastrukturę i minimalizuj złożoność, aby zmniejszyć koszty. Używaj tylko niezbędnych zasobów i usług, które spełniają Twoje wymagania.

Ułatwienia dla platformy Azure

Optymalizacja funkcji aplikacji: za pomocą usług Azure Monitor i Application Insights można monitorować użycie aplikacji i identyfikować obszary, które są lub nie są używane. Na podstawie zebranych szczegółowych informacji możesz podejmować świadome decyzje dotyczące usuwania lub optymalizowania nieużywanych lub niedostatecznie używanych funkcji.

Optymalizowanie zasobów obciążeń i funkcji platformy: usługa Azure Advisor udostępnia zalecenia dotyczące kosztów umożliwiające identyfikowanie i eliminowanie nieużywanych zasobów. Usługa Advisor umożliwia analizowanie użycia zasobów i otrzymywanie sugestii dotyczących zasobów w celu usunięcia lub skalowania w dół. Skoroszyt optymalizacji kosztów w usłudze Azure Advisor służy jako scentralizowane centrum dla niektórych najczęściej używanych narzędzi, które mogą pomóc w osiąganiu celów wykorzystania i wydajności. Oferuje szereg zaleceń, w tym rekomendacje dotyczące kosztów usługi Azure Advisor. Pomaga również identyfikować bezczynne zasoby i zarządzać niewłaściwie cofniętymi przydziałami maszyn wirtualnych.

Usługa Azure Monitor obsługuje skoroszyty. Za pomocą skoroszytów usługi Azure Monitor można znaleźć lub utworzyć skoroszyt, który znajduje zasoby oddzielone i zgłasza je w zdefiniowanym zakresie. Możesz użyć Azure Automation, aby zamknąć maszyny wirtualne w okresach braku aktywności. Zamknięcia zasobów pomagają zmniejszyć koszty, minimalizując użycie bezczynnych zasobów.

Za pomocą funkcji autoskalowania na platformie Azure możesz automatycznie skalować aplikację na podstawie wstępnie zdefiniowanych warunków, aby nie trzeba było nadmiernie aprowizacji. Automatyczne skalowanie może ułatwić efektywne i ekonomiczne przydzielanie zasobów.

Z perspektywy projektu moduły równoważenia obciążenia platformy Azure mogą dystrybuować obciążenia między strefami dostępności i regionami. Te moduły równoważenia obciążenia mogą pomóc wyeliminować zasoby bezczynne, na przykład w podejściach odzyskiwania po awarii.

Lista kontrolna optymalizacji kosztów

Zapoznaj się z pełnym zestawem zaleceń.