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

Dotyczy tego zalecenia listy kontrolnej dotyczącej 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 wydajności kosztów poszczególnych elementów w ramach obciążenia. Podkreśla on 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 oraz 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żania kosztów, marnotrawstwa 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ę ona różnić w zależności od platformy, ale ogólnie funkcje platformy są zaprojektowane w celu ulepszenia środowiska użytkownika, zwiększenia produktywności lub włączenia określonych zadań lub akcji.
Zasób Pojedyncza jednostka lub składnik, który można tworzyć, konfigurować i wykorzystywać 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

Optymalizowanie 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, należy wziąć pod uwagę jej wpływ na ogólną aplikację i wartość dostarczaną klientom. Niektóre czynniki, które należy wziąć pod uwagę, obejmują:

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

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

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

  • Różnicowanie: oceń, 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ć koszty związane z każdą funkcją w celu efektywnej alokacji zasobów i optymalizacji. Podczas oceniania kosztów należy wziąć pod uwagę różne aspekty, takie jak:

  • Nakład pracy programistycznej: oceń czas, zasoby i wiedzę wymaganą do opracowania i utrzymania funkcji lub otaczających funkcji. Nie w pełni wykorzystywane 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 uczestnikami projektu

Przejrzyj wartość 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 dla celów 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 zmniejszyć możliwości tworzenia nowych, cennych funkcji. Twój zespół programistyczny może przekazać ważne informacje o tym, ile pracy potrzeba do utrzymania niektórych funkcji. Zachęcaj ich do mówienia o funkcjach, które mogą być bardziej kłopotliwe 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ń, reinwestuj lub zarabiaj 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.

    Ikona ryzykaRyzyko: przypadkowo można usunąć funkcje, które mają krytyczne znaczenie 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ść, jeśli ponownie je zainwestujesz. Ponowne reinwestowanie oznacza przerobienie lub promowanie funkcji aplikacji. Określ priorytety zidentyfikowanych ulepszeń 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 szansę 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 oddzielne płatne dodatki lub licencjonowanie ich innym firmom.

Optymalizowanie zasobów obciążeń

Optymalizacja zasobów obciążeń obejmuje usunięcie wszelkich zasobów, które nieużywane i optymalizują wszelkie nieużywane zasoby, których wymaga 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, z których nie korzystają procesy robocze lub operacje. 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.
  • Migawki.
  • Konta magazynu.
  • Tymczasowe środowiska testowe.
  • Tymczasowe środowiska klasyfikacji.

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

  1. Utwórz spis: przeprowadź dokładny spis wszystkich zasobów w ramach obciążenia w różnych środowiskach.

  2. Znajdowanie oddzielonych zasobów: zasoby mogą zostać oddzielone, gdy nie będą już potrzebne lub gdy zostaną usunięte zasoby nadrzędne. 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 bezczynnych składników: zazwyczaj jest to koszt związany z wdrożonym zasobem. Nawet jeśli zasób umożliwia zatrzymanie lub cofnięcie przydziału, 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 ponownie wdrożyć zasób i przywrócić dane, niż pozwolić zasobowi pozostać bezczynny.

Optymalizowanie niedostatecznie używanych zasobów. Niewykorzystane zasoby reprezentują zmarnowane wydatki w miarę płacenia 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 zgodny z twoimi potrzebami 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 zajętymi i wolnymi czasami.

  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 na podstawie zajętości. 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. Ciągłe monitorowanie wykorzystania zasobów i dostosowywanie alokacji zasobów w miarę zmiany zapotrzebowania na obciążenia w miarę upływu 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 efektywnego wykorzystania zasobów przydzielonych na potrzeby odzyskiwania po awarii. Ciepła (aktywna-pasywna) strategia odzyskiwania po awarii jest typowym źródłem niedostatecznego wykorzystania. W ciepłej strategii odzyskiwania po awarii jedno środowisko odbiera całe obciążenie, podczas gdy drugie środowisko jest w stanie bezczynności do momentu wystąpienia scenariusza awarii. Aby zoptymalizować środowisko odzyskiwania po awarii, rozważ, jak gorące (aktywne-aktywne), zimne (aktywne/wyłączone) lub aktywne ponowne wdrażanie może pomóc uniknąć niedostatecznie wykorzystanych zasobów. Oto omówienie tych trzech metod 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 wymagania w czasie rzeczywistym. Rozłożenie obciążenia między dwoma aktywnymi środowiskami umożliwia korzystanie z tańszych zasobów, zmniejszanie wąskich gardeł pojedynczego punktu i wykorzystywanie 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 wyzwoli potrzeby przejścia w tryb failover. Ponieważ środowisko rezerwowe nie działa aktywnie, koszty związane z operacjami obliczeniowymi, magazynem i siecią są zminimalizowane. Wydatki koncentrują się na przechowywaniu kopii zapasowych, obrazów maszyn wirtualnych lub szablonów. Przejście w tryb failover w zimnym modelu może trwać dłużej, ponieważ zasoby muszą być uruchamiane, a dane mogą być przywracane. Przed zatwierdzeniem tego podejścia upewnij się, że czas odzyskiwania jest zgodny z celami czasu odzyskiwania (RTO) firmy.

  • Aktywne ponowne wdrażanie: ta strategia używa infrastruktury jako kodu. Po wystąpieniu zdarzenia trybu failover środowisko pomocnicze jest wdrażane 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 obejmuje wyeliminowanie lub zaktualizowanie funkcji platformy, takich jak warstwy wydajności i ustawienia konfiguracji, w celu zoptymalizowania kosztów. 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 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, plan niższej warstwy może wystarczyć.

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

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

  • Użyj odpowiednich konfiguracji: możesz płacić za większą dostępność lub wydajność, niż potrzebujesz. Wyeliminowanie dostępności lub gwarancji wydajności, że obciążenie nie jest potrzebne.

  • Eliminowanie niepotrzebnej automatyzacji: oceń procesy automatyzacji i zlikwiduj wszelkie nieużywane automatyzacji, 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 funkcji 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 znajduje się 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.

Bądź metodyczny w wysiłkach optymalizacji

Zapobieganie niezoptymalizowanym składnikom polega na proaktywnym zapewnieniu, że składniki są niezbędne i zoptymalizowane przed dodaniem lub modyfikacją. Najlepszym sposobem na pozbycie się odpadów jest uniknięcie go w pierwszej kolejności. Używaj strategii, które uniemożliwiają niepotrzebne wydatki, zwracając się do nieefektywności w katalogu głównym, zapewniając, że obciążenie działa kosztowo 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 rzeczywiście powoduje. Jeśli na przykład witryna internetowa działa wolno, nie przełączaj się natychmiast do nowego systemu. Po pierwsze, dowiedz się, dlaczego działa wolno. Możesz dowiedzieć się, że prawdziwym problemem jest coś innego, takiego jak 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.

  • Dokumentowanie nietypowych zmian: dokumentowanie wszelkich zmian wprowadzonych w infrastrukturze lub konfiguracjach wykonywanych poza normalnym procesem kontroli obciążenia w celu obniżenia nieoczekiwanych kosztów. Możesz na przykład zwiększyć wydajność skalowania (w górę lub w poziomie) zasobu, aby spełnić krótkoterminowe zapotrzebowanie lub sklasyfikować problem, ale nie zapomnij go skalować 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 platformy Azure

Optymalizowanie funkcji aplikacji: możesz użyć usług Azure Monitor i Application Insights do monitorowania użycia aplikacji i identyfikowania obszarów, 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, które umożliwiają 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 scentralizowany koncentrator 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ż zidentyfikować bezczynne zasoby i zarządzać nieprawidłowo 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 i zgłasza oddzielone zasoby w zdefiniowanym zakresie. Usługa Azure Automation umożliwia zamykanie maszyn wirtualnych 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, dzięki czemu nie trzeba nadmiernie aprowizować pojemności. 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ć bezczynne zasoby, na przykład w podejściach odzyskiwania po awarii.

Lista kontrolna optymalizacji kosztów

Zapoznaj się z pełnym zestawem zaleceń.