Ten model dojrzałości umożliwia przejście od podstawowej świadomości kosztów do zaawansowanego opanowania optymalizacji.
Począwszy od podstawowych praktyk, takich jak przejrzystość i odpowiedzialność, będziesz stopniowo tworzyć zaawansowane możliwości, w tym systematyczne analizy, analizy oparte na użytkownikach, uczenie produkcyjne i ostatecznie zaawansowane techniki wydajności. Postęp został zaprojektowany tak, aby przekształcić podejście od zwykłego reagowania na niespodzianki kosztów w celu aktywnego kształtowania wyników finansowych, które są zgodne z celami biznesowymi.
Model ma strukturę pięciu odrębnych poziomów dojrzałości, z których każdy ma podstawowy cel i zestaw podstawowych strategii. Użyj poniższych widoków z kartami, aby zapoznać się z poszczególnymi poziomami. Pamiętaj również, aby zapoznać się z wyróżnionymi kompromisami i powiązanymi zagrożeniami wraz z postępem.
Ustanowienie odpowiedzialności zespołu i podstawowych procesów zarządzania kosztami obciążeń w całym cyklu życia.
Poziom 1 modelu dojrzałości pomaga zespołom zajmującym się obciążeniami zrozumieć swój budżet i skonfigurować procesy i narzędzia do zarządzania kosztami w cyklu życia obciążeń. Zanim wprowadzisz bardziej zaawansowane procesy, takie jak budowa modelu kosztów, powinieneś skupić się na podstawowych najlepszych praktykach zarządzania kosztami, aby rozpocząć pracę bez obciążenia budżetu.
Poniższe zalecenia mogą pomóc w rozsądnym zarządzaniu kosztami podczas efektywnego budowania obciążenia.
Kluczowe strategie
√ Udostępnianie celów finansowych, szczegółów budżetu i wydatków na obciążenia wszystkim członkom zespołu, menedżerom i osobom podejmującym decyzje
Udostępnij interesariuszom szczegółowe informacje na temat przydzielonego budżetu, podziałów kosztów i celów finansowych dla zadań. Udostępnij szczegółowe informacje na temat różnych wydatków, takich jak koszty infrastruktury, licencje na oprogramowanie i wydatki operacyjne. Ta praktyka nie jest często brana pod uwagę, ale jest ważna. Pomaga to w budowaniu zaufania między zespołami ds. obciążeń i zespołami kierowniczymi oraz pokazuje, że zespół ds. obciążeń myśli z wyprzedzeniem o zarządzaniu kosztami. Ta współpraca pomaga również zmotywować zespół ds. obciążeń do zachowania staranności w zarządzaniu kosztami ze względu na ich zobowiązania wobec zespołów kierowniczych.
Użyj narzędzi do współpracy, aby zachęcić członków zespołu do dzielenia się pomysłami na optymalizację kosztów i szczegółowymi informacjami. Zapewnić mechanizmy dla zespołu do współpracy nad swoimi pomysłami i spostrzeżeniami. Takie podejście umożliwia członkom zespołu oferowanie sugestii we wszystkich dyscyplinach zespołu ds. zadań. Jeśli wspierasz kulturę współpracy w zakresie optymalizacji kosztów, wzmacniasz sposób myślenia, że zarządzanie kosztami obciążeń opiera się na każdym członkiem zespołu w równym stopniu.
Aby zmotywować sposób myślenia optymalizacji kosztów, rozważ uznanie osób i zespołów, które wykazują odpowiedzialność finansową i przyczyniają się do optymalizacji kosztów. Możesz użyć oceny wyników, systemów motywacyjnych lub innych programów uznania.
√ Zbieranie szczegółowych danych kosztów ze wszystkich źródeł, w tym zafakturowanych i mierzonych danych
Zafakturowane dane reprezentują rzeczywiste rozliczane kwoty, a mierzone dane są predykcyjne na podstawie planów rozliczeniowych. Aby uzyskać w pełni szczegółowy obraz kosztów obciążenia, zapoznaj się ze wszystkimi dostępnymi narzędziami i metodami oferowanymi przez dostawcę usług. Miesięczny rachunek może nie dać uczestnikom projektu wystarczającej ilości szczegółów dotyczących wydatków. Skompiluj dane, aby zaoszczędzić czas na badaniu niejasnych opłat i wyjaśnieniu niejasnych terminów. Po zebraniu danych użycia scentralizuje te dane w ujednoliconym systemie.
Korzystaj z kokpitów rozliczeniowych, które mają filtry do różnych widoków. Uczestnicy projektu i członkowie zespołu ds. obciążeń mogą używać filtrów, aby łatwo zobaczyć informacje, które są dla nich najbardziej istotne.
√ Określanie czynników kosztów
Aby określić, jak różne składniki obciążenia przyczyniają się do ogólnych kosztów, użyj narzędzi przyjętych do zbierania danych rozliczeniowych. Zwróć szczególną uwagę na koszty związane z procesami, takimi jak transfery danych lub transakcje, oraz sposób, w jaki przyczyniają się one do ogólnych kosztów. Te koszty są często pomijane podczas początkowych oszacowań kosztów zasobów przed wdrożeniem.
Należy również zrozumieć, jak czynniki, które nie są bezpośrednio związane z zasobami w chmurze, mogą mieć wpływ na budżet. Te czynniki mogą obejmować szkolenia dla członków zespołu i licencjonowania oprogramowania, którymi dostawca chmury nie zarządza.
√ Zdecyduj, czy budować, czy kupić
Jedną z pierwszych decyzji, które zespół ds. obciążeń musi podjąć, jest to, czy powinni korzystać z gotowych rozwiązań, czy tworzyć rozwiązania wewnętrzne. Ogólnie rzecz biorąc, Well-Architected Framework faworyzuje utrzymanie rzeczy proste. Korzystanie z gotowych rozwiązań jest zgodne z filozofią. Dobrze obsługiwane rozwiązania zwalniają zespół obciążeń operacyjnych i zmniejszają czas potrzebny na programowanie, aby deweloperzy mogli zamiast tego skupić się na podstawowych funkcjach aplikacji.
Kompromis: Podczas decydowania o tym, czy chcesz utworzyć, czy kupić rozwiązanie, należy wziąć pod uwagę koszty. Tworzenie rozwiązań w firmie zwykle oznacza inwestycję z góry na czas programowania i wszelkie zasoby potrzebne do ukończenia opracowywania. Jednak masz mniej kosztów cyklicznych, ponieważ nie musisz utrzymywać umów pomocy technicznej ani licencjonowania.
Aby ułatwić podjęcie właściwej decyzji dla zespołu, oceń następujące kwestie.
-
Żądany poziom kontroli: Zdecyduj, ile kontroli potrzebujesz nad funkcjonalnością rozwiązania.
-
Wymagana ilość dostosowywania: Określ poziom dostosowywania odpowiedni dla zmieniającego się obciążenia.
-
Oczekiwany czas wprowadzenia na rynek: Poznaj oczekiwania interesariuszy dotyczące wprowadzenia Twojego obciążenia na rynek i jak najlepiej sprostać temu harmonogramowi.
-
Wymagana wiedza techniczna: Określ, ile wiedzy należy zachować, aby utworzyć i obsługiwać rozwiązanie.
-
Oczekiwane obciążenie operacyjne: Szacowanie ilości czasu i nakładu pracy zespołów operacyjnych, które muszą obsługiwać rozwiązanie.
Te oceny pomagają zrozumieć łączne koszty każdej opcji, dzięki czemu można je ważyć nawzajem. Całkowity koszt może nie być jedynym czynnikiem decydującym. Jeśli jednak opcje mają znaczące różnice, wybierz opcję niższego kosztu, aby przyspieszyć opracowywanie obciążeń.
√ Zainwestuj w umiejętności twojego zespołu
Zainwestuj w upskilling w obszarach, w których twój zespół nie ma wiedzy. Silne umiejętności w chmurze ułatwiają dobre długoterminowe podejmowanie decyzji i optymalizowanie codziennej produktywności. Rozważ szkolenia lub certyfikaty oferowane przez dostawcę usług w chmurze lub innych partnerów. Zwiększenie produktywności zespołu ds. obciążeń i innych osób podejmujących decyzje pozwala zaoszczędzić czas i pieniądze, minimalizując kosztowne błędy.
Utwórz systematyczną analizę kosztów i raportowanie, aby zrozumieć wzorce wydatków.
Po początkowym wdrożeniu często skupia się na opracowywaniu nowych funkcji i prowadzeniu sprzedaży przy jednoczesnym pomijaniu zarządzania kosztami. Na poziomie 2 oczekuje się, że wydatki wzrosną, więc należy podjąć ustrukturyzowane podejście. Oceń koszty narzędzi i technologii, utwórz punkt odniesienia i zidentyfikuj kluczowe czynniki kosztowe.
Zarządzanie kosztami może wydawać się przytłaczające, ale systematyczna analiza kosztów na wczesnym etapie jest niezbędna do utrzymania kontroli finansowej i wspierania wzrostu.
Kluczowe strategie
Opracowanie bazowego modelu kosztów
Model kosztów to oszacowanie ogólnego kosztu obciążenia. Koszt jest podzielony na czynniki, takie jak usługi platformy, magazyn danych, przepływy użytkowników i systemu oraz operacje. Co najmniej należy przeprowadzić systematyczną analizę kosztów i utworzyć podstawowy model kosztów. To ćwiczenie ułatwia podejmowanie świadomych decyzji dotyczących alokacji i optymalizacji zasobów.
Utwórz spis wszystkich zasobów platformy Azure i określ, które aspekty poszczególnych zasobów powodują wyższe koszty.
Zadaj pytania dotyczące wyborów technologicznych i ich dopasowania do celów, takich jak skalowalność i niezawodność w ramach ograniczeń kosztów. Dla każdego zasobu zanotuj koszt i określ, czy koszt jest zbyt wysoki, czy zbyt niski. Mierz się z oczekiwanymi obciążeniami, pamiętając o potencjalnym wzroście.
Zwróć uwagę na koszt przepływów i rozróżnianie przepływów krytycznych i niekrytycznych. Określanie priorytetów przepływów krytycznych, takich jak środowisko użytkownika w aplikacji do handlu elektronicznego, nad przepływami niekrytycznymi, takimi jak zadania w tle na potrzeby inspekcji.
Oblicz koszty magazynowania danych i wzorców dostępu do danych.
√ Tworzenie raportów kosztów
Tworzenie podstawowych raportów kosztów na potrzeby widoczności finansowej i analizowania wzorców kosztów. Ponadto skonfiguruj alerty dotyczące kosztów w przypadku przekroczenia określonej kwoty wydatków.
Zalecamy używanie usługi Microsoft Cost Management do analizowania, monitorowania i kontrolowania wydatków na usługi. Jeśli ta opcja nie jest dostępna, utwórz system do śledzenia użycia i generowania raportu miesięcznego.
√ Konfigurowanie odpowiedzialności
Odpowiedzialność jest nienegocjacjalna dla zarządzania kosztami. Na wczesnych etapach przypisz członka zespołu do przeglądu budżetów i raportów kosztów co miesiąc oraz poinformuj zespół o nieoczekiwanych skokach. Osoba odpowiedzialna powinna ocenić nakład pracy i odpowiednio kierować zespołem.
Początkowo odpowiedzialność może być elastyczna. W miarę dojrzewania startupu wymuszaj bardziej rygorystyczne mechanizmy kontroli.
√ Ocena możliwości optymalizacji
Model kosztów powinien zapewnić dobre zrozumienie kluczowych czynników kosztów, a raporty kosztów powinny zawierać dowody. Oceń te czynniki i zapoznaj się z możliwościami optymalizacji. Rozważ następujące strategie:
Oceń model rozliczeń dla każdego zasobu platformy Azure używanego przez obciążenie. Ustal, czy potrzebujesz wszystkich funkcji, które są powiązane z każdym planem. Jeśli na przykład potrzebujesz określonych funkcji, takich jak prywatny punkt końcowy z usługą Azure Front Door, może być potrzebny plan Premium. W przeciwnym razie rozważ wybranie niższego planu, aby zaoszczędzić koszty.
Wybór między rozliczeniami opartymi na użyciu a rozliczeniami opartymi na zobowiązaniach. Zalecamy rozpoczęcie od rozliczeń opartych na użyciu, aby móc zrozumieć poniesione koszty. Jeśli obciążenie jest spójne, możesz rozważyć rabaty oferowane przez platformę Azure na spójne obciążenia na późniejszym etapie.
Ocena praktyk kodowania. Instrumentacja kodu służy do identyfikowania procesów, które są kosztowne do uruchomienia i zapewniają wgląd w problemy z wydajnością, co może spowodować niepotrzebne koszty. Zbierz metryki, takie jak czas trwania procesu i współczynniki niepowodzeń, aby podejmować decyzje oparte na danych na potrzeby przyszłej optymalizacji.
√ Wybieranie początkowej strategii skalowania
Preferowane jest skalowanie poziome, ponieważ jest bardziej ekonomiczne i łatwiejsze do zaimplementowania w porównaniu ze skalowaniem w górę. Skalowanie w górę obejmuje przestój i wyższe koszty.
Rozważ testowanie wydajności i metryki oraz skalowanie w poziomie lub skalowanie w górę na podstawie oceny.
Uwzględnij opinie użytkowników i sygnały operacyjne w celu uściślinia strategii optymalizacji kosztów.
We wczesnych etapach rozwoju i eksploatacji obciążenia możesz polegać na wewnętrznej pętli informacji zwrotnych dotyczących rozwoju w celu zoptymalizowania obciążenia. Na tym poziomie dojrzałości ważne jest, aby rozszerzyć pętlę opinii, aby uwzględnić zarówno użytkowników wewnętrznych, jak i zewnętrznych, a także innych uczestników projektu. W miarę wprowadzania ulepszeń optymalizacji kosztów do obciążenia należy również rozważyć kompromisy z innymi filarami, zwłaszcza filarami wydajności i niezawodności.
Poziom 3 filaru Optymalizacji kosztów koncentruje się na przygotowaniu obciążenia do produkcji przez zintegrowanie zarówno wewnętrznych, jak i zewnętrznych opinii na temat strategii przy jednoczesnym zapewnieniu spełnienia celów dotyczących wydajności i niezawodności.
Kluczowe strategie
√ Inwestowanie w wpływowe przepływy i dostosowywanie innych przepływów
Weź pod uwagę priorytety przypisane do przepływów aplikacji. Skoncentruj wysiłki rozwojowe na przepływach krytycznych, szukając sposobów na uproszczenie i redukcję kosztów przepływów niekrytycznych. Przepływy niekrytyczne mogą mieć mniej rygorystyczne wymagania dotyczące niezawodności. W związku z tym może być możliwe uproszczenie ich projektu.
Dla każdego przepływu wyeliminuj niepotrzebne elementy, wybierz odpowiednie warstwy wydajności, dostosuj ustawienia skalowania dla zmiennego zapotrzebowania i dostosuj konfiguracje w celu dostosowania ich do potrzeb związanych z wydajnością i budżetem. Monitorowanie przepływów w celu identyfikowania nieefektywności, takich jak bezczynne wystąpienia obliczeniowe, nieużywane dane i niska przepustowość sieci. Użyj natywnych narzędzi do rejestrowania i analizy, aby ułatwić agregowanie i analizowanie tych metryk pod kątem trendów.
Wymuszanie ograniczeń kosztów za pomocą powiadomień
Utwórz progi wydatków i skojarzone alerty, aby wymusić zabezpieczenia kosztów. Takie podejście zapewnia, że zakres pracy pozostaje w granicach budżetu. Przykłady alertów obejmują następujące typy:
Alerty budżetowe umożliwiają ustawianie progów wydatków, monitorowanie kosztów i otrzymywanie powiadomień, aby pomóc w kontrolowaniu wydatków i uzyskaniu informacji.
Alerty anomalii kosztów powiadamiają o nieoczekiwanych zmianach kosztów. Umożliwiają one badanie i rozwiązywanie problemów z nieefektywnymi lub nietypowymi wzorcami wydatków.
Alerty użycia planu opartego na zobowiązaniach ułatwiają monitorowanie i optymalizowanie użycia zasobów opartych na zobowiązaniach przez powiadamianie uczestników projektu, gdy użycie spadnie poniżej żądanego progu.
• Opracowywanie strategii optymalizacji użycia zasobów
Podczas tworzenia środowisk nieprodukcyjnych i produkcyjnych można przypadkowo wdrożyć nadmiernie aprowizowane zasoby. W miarę upływu czasu możesz gromadzić zasoby, które zostały wdrożone na potrzeby weryfikacji koncepcji (PoC) lub do testowania, które nie są już potrzebne. Opracowanie strategii identyfikowania niedostatecznie używanych i nieużywanych zasobów jest niezbędne do ciągłego ulepszania w utrzymaniu zoptymalizowanego środowiska chmury. Rozważmy następujące zalecenia:
Użyj poprawnych typów zasobów i jednostek SKU dla każdego środowiska. Zbadaj opcje infrastruktury zapewniane przez platformę w chmurze oraz wybierz typy zasobów i jednostki SKU, które są odpowiednie dla każdego przypadku użycia. Często istnieją określone typy zasobów i jednostki SKU przeznaczone specjalnie dla środowisk weryfikacji koncepcji i tworzenia i testowania. Te typy zasobów i jednostki SKU są znacznie tańsze niż standardowe lub wysokowydajne zasoby, ale nie można ich używać w przypadku obciążeń produkcyjnych.
Konfigurowanie i wymuszanie zasad w celu ograniczenia typów zasobów, jednostek SKU, regionów i uprawnień wdrażania dla użytkowników. Zasady automatyczne ułatwiają zarządzanie zmianami w środowisku. Ten proces zmniejsza ryzyko nieautoryzowanych wdrożeń.
Standaryzacja przy użyciu infrastruktury jako kodu dla wszystkich zmian środowiska. Takie podejście pomaga wymusić zasady zmiany środowiska i upraszcza praktyki operacyjne w celu zmniejszenia ryzyka błędu ludzkiego.
Monitoruj metryki użycia, takie jak procesor CPU, pamięć i magazyn, aby ułatwić określenie, czy zasoby są niedostatecznie używane i można je skalować w dół.
Przejrzyj środowiska nieprodukcyjne i produkcyjne pod kątem nieużywanych zasobów, które można bezpiecznie zamknąć lub usunąć.
Skorzystaj z narzędzi zapewnianych przez platformę w chmurze, aby ułatwić identyfikowanie optymalizacji zasobów. Na przykład usługa Azure Advisor udostępnia zalecenia dotyczące optymalizacji kosztów , które identyfikują potencjalne nieefektywności i sugerują kroki, aby je rozwiązać.
Kompromis: Podczas dostosowywania zasobów należy wziąć pod uwagę cele dotyczące wydajności i niezawodności. Skontaktuj się z interesariuszami, gdy kompromisy mogą pomóc w zrównoważeniu wydajności, niezawodności i kosztów, lub gdy ograniczenia budżetowe uniemożliwiają ulepszanie obciążeń roboczych.
√ Optymalizowanie licencji i innych kosztów statycznych
Podczas wdrażania zasobów w chmurze należy podjąć strategiczne podejście do zakupu licencji i innych stałych miesięcznych kosztów. Te koszty obejmują licencjonowanie serwerów i baz danych, licencjonowanie oprogramowania i rezerwacje wstępne. Rozważ następujące strategie oszczędzania kosztów:
Zbadaj opcje, takie jak hybrydowa korzyść platformy Azure, dla wykorzystania istniejących licencji na systemy migrowane do chmury bądź dla nowych wdrożeń w chmurze. Przeanalizuj wszelkie licencjonowanie zbiorcze lub umowy dotyczące przedsiębiorstwa, które organizacja posiada, aby skorzystać z możliwych redukcji kosztów na zasobach w chmurze lub licencjonowaniu oprogramowania.
Używaj licencjonowania nieprodukcyjnego i tworzenia/testowania dla odpowiednich systemów, takich jak licencje tworzenia/testowania z programu Visual Studio.
Wstępne zakup pojemności dla zasobów w chmurze, gdy jest to praktyczne. Rezerwowanie pojemności może znacznie zmniejszyć miesięczne koszty użycia i pomóc w utrzymaniu bardziej spójnych wydatków.
Ryzyko: W przypadku zakupu rezerwacji upewnij się, że wybrano najbardziej ekonomiczny model dla danego przypadku użycia. Jeśli na przykład zasób można skalować w dół w nocy lub sezonowo, bardziej opłacalne może być inteligentne dostosowanie skalowania. Ponadto zidentyfikuj prawidłową jednostkę SKU, aby zakupić z wyprzedzeniem poprzez testowanie bazowe i planowanie pojemności.
√ Uściślij zasady skalowania automatycznego
Początkowe zasady skalowania mogą być oparte na wewnętrznej pętli sprzężenia zwrotnego rozwoju. Te zasady koncentrują się na dostosowywaniu skalowania w celu spełnienia potrzeb rozwojowych. W miarę rozwoju obciążenia uwzględnij zarówno opinie użytkowników wewnętrznych, jak i zewnętrznych, aby zapewnić, że wydajność pozostanie w akceptowalnym zakresie.
Dostosuj progi skalowania i wprowadź okresy ochładzania, aby ograniczyć tymczasowe skoki obciążenia. Stale monitoruj i dostrajaj system, aby zoptymalizować koszty i spełnić wymagania. Zdefiniuj jednostki skalowania do użycia w przyszłości. Te jednostki zależą od czynników, takich jak projektowanie obciążeń, przypadek użycia, składniki, przepływy i wymagania biznesowe.
Na przykład w przypadku obciążeń o znaczeniu krytycznym, jako jednostką skalowania może być cały deployment stamp. Alternatywnie w przypadku prostszych obciążeń, które mają przepływy niekrytyczne, jednostka skalowania może być oparta na liczbie wystąpień obliczeniowych określonej jednostki SKU przydzielonej do obciążenia. Wybierz jednostki skalowania, które umożliwiają obciążeniu obsługę oczekiwanych wzrostów obciążenia bez marnowania pojemności. Zaktualizuj model kosztów, aby uwzględnić prognozowane potrzeby skalowania.
√ Optymalizowanie majątku danych
Dane są podstawowym czynnikiem kosztów chmury. Właściwe zarządzanie danymi może pomóc w utrzymaniu spójnych kosztów i w budżecie. Aby zarządzać infrastrukturą danych, użyj następujących strategii:
Klasyfikowanie i etykietowanie danych w celu zastosowania odpowiednich kontrolek oraz określenie odpowiednich poziomów niezawodności i wydajności dla różnych typów danych i magazynów.
Przechwyć tylko niezbędne dane, kompresować dane do chłodniejszego magazynu i usuwać niepotrzebne dane przy użyciu odpowiednich zasad przechowywania. Deduplikuj dane w celu wyeliminowania nadmiarowych danych i informowania użytkowników o wydajnych rozwiązaniach dotyczących magazynowania danych.
Optymalizowanie kopii zapasowych przy użyciu przyrostowych kopii zapasowych, włączanie kompresji i przenoszenie starszych kopii zapasowych do magazynu zimnego.
Zoptymalizuj replikację, stosując odpowiednie modele replikacji, zarówno synchroniczne, jak i asynchroniczne, aby zoptymalizować replikację na podstawie wymagań. Dostosuj częstotliwość replikacji, aby dopasować je do określonych potrzeb. Stale oceniaj wymagania i konfigurację.
Uwzględnij wewnętrzne i zewnętrzne opinie, aby przejrzeć wzorce dostępu do magazynu i dostosować strategie zarządzania cyklem życia danych.
Użyj narzędzi, aby ułatwić optymalizowanie zapytań.
Kompromis: Porównaj zasady tworzenia kopii zapasowych i replikacji z celami odzyskiwania. Rzadsza replikacja lub odciążanie starszych kopii zapasowych do magazynu zimnego może mieć wpływ na czas odzyskiwania, dlatego należy pamiętać o implementowaniu tych optymalizacji.
• Optymalizowanie kodu, praktyk programistycznych i strategii tworzenia funkcji
Nieefektywny kod może obniżyć wydajność systemu. Ta nieefektywność może spowodować wyższe koszty użycia zasobów. Optymalizacja kodu może zwiększyć wydajność i pozwolić na obsługę większego obciążenia bez konieczności zwiększania zasobów. Użyj następujących strategii, aby zoptymalizować kod:
Analizowanie danych środowiska uruchomieniowego i mierzenie wydajności przy użyciu narzędzi profilowania.
Oceń logikę biznesową i jej wpływ na środowisko użytkownika.
Przejrzyj zalecenia dotyczące wydajności specyficzne dla języka.
Usuń niepotrzebne wywołania funkcji, zminimalizuj rejestrowanie i ulepsz pętle oraz warunki.
Zmniejszanie przetwarzania danych, minimalizowanie żądań sieci i alokacji pamięci oraz ocenianie implementacji krzyżowych.
Użyj następujących metod, aby zoptymalizować ścieżki sieciowe:
Zminimalizuj transfery danych między składnikami i między regionami odległymi geograficznie, analizując i eliminując niepotrzebne transfery. Upewnij się, że wysyłane są tylko wymagane pola danych, a nie całe obiekty lub struktury danych. Takie podejście zmniejsza rozmiar i częstotliwość transferów danych.
Unikaj przesyłania nadmiarowych danych, wysyłając tylko niezbędne informacje.
Przekształć kod, aby zmniejszyć liczbę powtarzających się żądań i grupować je, gdy jest to możliwe.
Usprawnianie praktyk programistycznych zwiększa szybkość kompilacji. Pomaga zespołom zajmującym się zarządzaniem obciążeniem zaoszczędzić cenny czas i efektywnie dostarczać ulepszenia w produkcji. Użyj następujących strategii, aby usprawnić praktyki programistyczne:
Skracanie czasu kompilacji przez optymalizowanie konfiguracji, usuwanie niepotrzebnych kroków i procesów, równoległość zadań, używanie buforowania i włączanie kompilacji przyrostowych w celu zapobiegania nadmiarowej kompilacji.
Użyj pozorowania produkcyjnego, aby zoptymalizować testowanie. Symulowanie produkcyjne umożliwia deweloperom skoncentrowanie się na testowaniu symulowanych scenariuszy, które są niepraktyczne do odtworzenia w środowisku produkcyjnym.
Zoptymalizuj praktyki planowania rozwoju, definiując jasne cele i metryki, używając narzędzi do monitorowania w celu śledzenia kluczowych wskaźników wydajności i określania priorytetów szczegółowych informacji z możliwością działania.
Użyj narzędzi do pomocy przy kodowaniu sztucznej inteligencji, takich jak GitHub Copilot, aby skrócić czas programowania, gdy jest to praktyczne.
Oceń strategię tworzenia funkcji, aby upewnić się, że wartościowe funkcje są priorytetowe. Uwzględnij opinie użytkowników wewnętrznych i zewnętrznych oraz uczestników projektu, aby zidentyfikować funkcje, które zwiększają zadowolenie użytkowników i zwiększają zaangażowanie użytkowników. W niektórych scenariuszach funkcje mogą być zaprojektowane specjalnie w celu optymalizacji kosztów. Porównaj te funkcje z priorytetami funkcjonalnymi, aby ocenić ich względną wartość.
Napędzaj ukierunkowane optymalizacje kosztów przy użyciu danych operacyjnych z produkcji.
Na etapie 4 modelu dojrzałości zakłada się, że wdrożono już obciążenie robocze w środowisku produkcyjnym i działa ono wystarczająco długo, aby zebrać przydatne informacje o jego typowym działaniu. Na tym poziomie zastosuj te spostrzeżenia dotyczące produkcji w swoim środowisku.
Zmiany w środowisku produkcyjnym bezpośrednio wpływają na inne aspekty obciążenia. Na przykład usprawnienia oszczędnościowe mogą mieć wpływ na co najmniej jeden z pozostałych filarów Well-Architected Framework. Z tego powodu dojrzałe praktyki zarządzania zmianami mają kluczowe znaczenie. Podczas dokonywania korekt oszczędności w obciążeniu należy dokładnie przejrzeć i przetestować zmiany oraz opracować plany wycofywania, aby ograniczyć wpływ na wydajność, bezpieczeństwo i niezawodność.
Kluczowe strategie
√ Uściślij model kosztów na podstawie uczenia produkcyjnego
Po wdrożeniu i uruchomieniu obciążenia w środowisku produkcyjnym na tyle długo, aby zrozumieć normalne wzorce użycia, przejrzyj swój model kosztów, aby zaplanować przyszłość. Model kosztów powinien projektować przyszłe wydatki, przydzielać fundusze i dostosowywać się do odchyleń. W analizie scenariusza model kosztów ocenia wpływ finansowy różnych zmian biznesowych i przewiduje wpływ kosztów na zachowanie klientów. W przypadku optymalizacji zasobów identyfikuje niedostatecznie używane zasoby w chmurze, prognozuje koszty skalowania i porównuje modele rozliczeń dostawców usług w chmurze, dzięki czemu można wybrać najbardziej ekonomiczną opcję.
W ramach tego ćwiczenia określ, jak ściśle koszty działania są zgodne z wcześniej opracowanym modelem kosztów i zbadaj przyczyny rozbieżności. Znalezienie nieoczekiwanych kosztów jest powszechne i przypisywanie winy za nie jest zwykle nieprodukcyjne. Zamiast tego należy ocenić wartość składników, które generują nieoczekiwane koszty. Współpracuj z uczestnikami projektu, aby zdecydować, czy dostosować projekt obciążenia w celu lepszego dostosowania modelu kosztów, czy też należy zmodyfikować model kosztów.
Kompromis: Należy pamiętać, że trudno jest dokładnie projektować koszty zmienne, zwłaszcza w przypadku wdrażania nowych technologii. Podczas planowania budżetu może być konieczne wyszukanie kompromisów. Upewnij się, że uczestnicy projektu rozumieją sposób określania szacowanych kosztów zmiennych i strategii utrzymania tych kosztów pod kontrolą.
Ryzyko: Środki cięcia kosztów mogą niekorzystnie wpływać na niezawodność, bezpieczeństwo, wydajność i doskonałość operacyjną. Uważnie przeanalizuj wpływ każdej planowanej miary cięcia kosztów i ustal, czy wprowadzenie zmiany jest warte potencjalnego wpływu.
√ Optymalizowanie użycia danych pod kątem kosztów
Użyj szczegółowych informacji produkcyjnych, aby uściślić strategie danych. W szczególności poszukaj możliwości optymalizacji dla następujących czynników:
- Zoptymalizuj rozwiązania pamięci masowej, mając na uwadze łatwość zarządzania. Oceń, czy obecnie wdrożone rozwiązania magazynu najlepiej pasują do twojego przypadku użycia i czy przejście do innej technologii może zmniejszyć obciążenie operacyjne lub koszty użycia. Na przykład początkowo wdrożono program SQL Server na maszynach wirtualnych, aby łatwo migrować obciążenie lub ponieważ był to najbardziej znana technologia dla zespołu ds. obciążeń. Przejście do rozwiązania typu "platforma jako usługa" (PaaS) może znacznie zmniejszyć nakład pracy operacyjnej i obniżyć koszty, w zależności od różnych czynników.
√ Zwiększanie gęstości zasobów
W praktyce zoptymalizuj koszty, konsolidując usługi udostępnione między obciążeniami. Na przykład można hostować wiele aplikacji internetowych na jednym serwerze lub w instancji PaaS. Wiele obciążeń roboczych może dzielić bazę danych, sieć, zabezpieczenia i inne usługi. Przeprowadź analizę kosztów i korzyści, aby określić, czy konsolidowanie zasobów jest wystarczająco cenne, aby zespół mógł wykonać tę operację. Po zidentyfikowaniu kandydatów do konsolidacji należy dokładnie zaplanować implementację i postępować zgodnie z dobrymi rozwiązaniami w zakresie zarządzania zmianami. Upewnij się, że uczestnicy projektu rozumieją zagrożenia.
Ryzyko: Konsolidacja zasobów może sprawić, że obciążenie będzie mniej niezawodne i mniej bezpieczne. Obciążenia o znaczeniu krytycznym dla misji i działalności firmy powinny przedkładać niezawodność i bezpieczeństwo nad konsolidację.
Ryzyko: Źle wykonana konsolidacja może prowadzić do przyszłych nieefektywności. Dokładnie przejrzyj plan konsolidacji, aby upewnić się, że nie tworzysz wąskich gardeł, które mogą mieć wpływ na Ciebie w przyszłości przed przeprowadzeniem migracji. Po migracji należy zwrócić szczególną uwagę na monitorowanie skonsolidowanych zasobów, aby upewnić się, że działają zgodnie z oczekiwaniami.
√ Ocenianie i optymalizowanie funkcji aplikacji
Monitoruj wzorce użycia funkcji w środowisku produkcyjnym, aby ocenić ich dopasowanie do modelu kosztów. Ustal, czy funkcja powinna być utrzymywana, refaktoryzowana, czy usuwana. W niektórych przypadkach funkcje zarabiania mogą być strategiczną decyzją biznesową. Funkcje mogą nie uzasadniać bieżących inwestycji, ale mogą nadal zapewniać klientom wartość. Oferowanie tych funkcji jako płatnych dodatków lub subskrypcji może pomóc zrównoważyć koszty inwestycji.
√ Minimalizowanie kosztów skalowania przez regulację zapotrzebowania
Strategia, która może pomóc w optymalizacji kosztów skalowania zasobów, reguluje zapotrzebowanie zamiast dodawać pojemność. Takie podejście może obejmować odciążanie zapotrzebowania na inne zasoby lub zmniejszenie go za pomocą różnych strategii, takich jak kolejki priorytetów, buforowanie, równoważenie obciążenia i buforowanie. Jeśli rozważysz te taktyki, ocenisz ich wpływ na inne filary Well-Architected Framework. Kontrolowanie podaży przez ograniczenie limitów skalowania i ustawienie budżetu pomaga zachować wydatki w ramach zdefiniowanych progów. Śledzenie użycia i korzystanie z platform zarządzania kosztami oraz alertów budżetowych w celu efektywnego monitorowania i kontrolowania wydatków.
Kompromis: Odciążanie zadań do innych zasobów może zmniejszyć koszty skalowania, ale może to powodować problemy z operacjami i konserwacją. Wykonaj dokładną analizę kosztów i korzyści, aby potwierdzić, że wybrana metoda odciążania jest wydajna i wykonalna. Pamiętaj, aby zrównoważyć oszczędności z potencjalnymi złożonościami.
√ Wymuszanie odpowiedzialności za koszty poprzez własność
Wyznaczenie bezpośrednio odpowiedzialnej osoby za koszty (DRI) pomaga zespołowi zadaniowemu przejąć odpowiedzialność za ich koszty. DrI jest odpowiedzialny za zarządzanie i optymalizowanie kosztów przez monitorowanie użycia, implementowanie strategii oszczędzania kosztów i zapewnienie, że wydatki są zgodne z celami budżetowymi i biznesowymi. DrI podejmuje decyzje związane z alokacją zasobów w chmurze, identyfikuje obszary potencjalnego obniżenia kosztów i zapewnia efektywne korzystanie z usług w chmurze, aby uniknąć niepotrzebnych wydatków.
DRI służy również jako linia frontu obrony przed kosztami obciążeń wyższymi niż oczekiwano. DrI mogą pomóc zidentyfikować przyczynę tych wysokich kosztów i aktywnie współpracować z zespołem ds. obciążeń, aby zmniejszyć ich oczekiwany zakres, zanim staną się one kosztami nadzwyczajnymi.
Przekształć optymalizację kosztów w przewagę konkurencyjną dzięki ciągłej innowacji.
Na poziomie 5 modelu dojrzałości powinno istnieć wiele mechanizmów i procesów optymalizacji kosztów. Poziom 5 koncentruje się na maksymalizacji zwrotu z inwestycji (ROI), utrzymując spójny i przewidywalny budżet obciążeń, generując bardzo dokładne prognozy i stosując zaawansowane udoskonalenia. Rozważ następujące zalecenia, aby osiągnąć te cele.
Kluczowe strategie
Egzekwowanie limitów wydatkowych w procesach tworzenia oprogramowania
Użyj bram wydań, aby stanowić bariery wydatkowe, ustanawiając kryteria związane z kosztami, które muszą zostać spełnione, aby przejść przez bramę. Możesz na przykład ustawić limity wydatków, aby upewnić się, że wydania nie generują nieoczekiwanych kosztów do budżetu operacyjnego. Uwzględnij te bramy w potoku ciągłej integracji i ciągłego dostarczania, aby upewnić się, że są one uwzględnione w każdym wdrożeniu.
√ Zainwestuj w budowanie wiedzy
Zwiększ możliwości zespołu ds. obciążeń, aby przejął na własność inicjatywy optymalizacji kosztów, opracowując program szkoleniowy umiejętności. Zachęcaj członków zespołu do uczenia się od liderów myśli branżowych, uczestnicząc w konferencjach, seminariach internetowych i innych ważnych wydarzeniach. Zapewnij wewnętrzne szkolenia wspierające rozwój interdyscyplinarnych umiejętności oraz twórz środowiska piaskownicy dla praktycznych doświadczeń szkoleniowych. Dopasowanie szkolenia do inicjatyw optymalizacji kosztów, takich jak optymalizacja strategii skalowania. Wysoko wykwalifikowane zespoły poprawiają wydajność i mogą zmniejszyć zależność od innych firm w przyszłych projektach.
Upewnij się, że model kosztów obejmuje zaplanowane szkolenia dla określonego okresu obrachunkowego, na przykład w nadchodzącym kwartale.
• Optymalizowanie kosztów wysokiej dostępności i odzyskiwania po awarii
Po przeprowadzeniu praktycznych symulacji odzyskiwania po awarii (DR) lub wystąpieniu rzeczywistych incydentów odzyskiwania po awarii możesz znaleźć możliwości optymalizacji kosztów. Możesz zauważyć, że tańsza strategia odzyskiwania po awarii jest wystarczająca dla niektórych komponentów, jednocześnie osiągając cele odzyskiwania. Na przykład w przypadku przepływów niekrytycznych możesz nie potrzebować projektowania gorącej rezerwy. W tym scenariuszu rozważ wdrożenie podejścia do odzyskiwania po wdrożeniu.
W ramach praktyk ciągłego ulepszania regularnie zapoznaj się z celami odzyskiwania, aby upewnić się, że są one odpowiednie zarówno dla wymagań dotyczących niezawodności, jak i kosztów.
√ Uściślij projekt obciążenia
Po obserwowaniu obciążenia w środowisku produkcyjnym przez dłuższy okres możesz stwierdzić, że jesteś na granicy opłacalnych optymalizacji bez konieczności refaktoryzacji części tego. Refaktoryzacja może być czasochłonna i kosztowna. Jednak refaktoryzacja może być opłacalna, jeśli skutkuje długoterminowymi oszczędnościami kosztów. Może również rozszerzyć cykl życia obciążenia, stosując bardziej wydajne technologie i praktyki zarządzania. Rozważ następujące strategie:
Połącz podobne przepływy. Zredukuj nadmiarowość lub optymalizuj wykorzystanie niedostatecznie używanych zasobów poprzez konsolidację podobnych przepływów na wspólne zasoby lub zestaw zasobów. Można na przykład hostować wiele aplikacji internetowych w jednym wystąpieniu obliczeniowym lub hostować wiele baz danych na jednym serwerze logicznym.
Oddzielaj różne przepływy. Przypisywanie zadań mających różne potrzeby obliczeniowe do dedykowanych zasobów zwiększa wydajność i zmniejsza koszty. Takie podejście zwiększa skalowalność, odporność na uszkodzenia i skalowalność, minimalizując interferencję i optymalizując alokację zasobów zgodnie z priorytetem każdego zadania.
Zmiana architektury obciążenia w celu uzyskania wydajności. Przejrzyj całą architekturę obciążenia, aby wyszukać możliwości poprawy wydajności. Faworyzowanie projektowania mikrousług i eksplorowania przy użyciu usług bezserwerowych lub zarządzanych, które zmniejszają obciążenie operacyjne i mogą łatwo mieć odpowiedni rozmiar dzięki automatycznemu skalowaniu. Celem końcowym architektury może być automatyczne wdrażanie środowisk nieprodukcyjnych tylko wtedy, gdy jest to konieczne w przypadku działań związanych z wdrażaniem. Te środowiska można następnie zniszczyć, aby zminimalizować niepotrzebne koszty użycia.
Ciągłe monitorowanie i dostosowywanie rozmiarów zasobów na podstawie wzorców użycia w celu optymalizacji kosztów.
• Rozwijanie operacji zespołu
Badania i wdrażanie wydajnych metodologii rozwoju, takich jak Scrum, Kanban i wodospad. Regularnie ocenia wydajność twojego zespołu, aby określić, czy wybrana metodologia jest najlepsza. Określ koszty zadań dla każdego pracownika, znanego jako koszty jednostkowe, i poszukaj możliwości obniżenia tych kosztów. Przejrzyj najdroższe zadania i oceń ich zwrot z inwestycji.
Oceń, czy konkretne zadania można odciążyć do innych zespołów. Na przykład scentralizowany zespół ds. chmury może zarządzać zadaniami operacyjnymi dla innych jednostek biznesowych lub obciążeń, podczas gdy scentralizowany zespół ds. zabezpieczeń może obsługiwać monitorowanie i testowanie. Podczas odciążania zadań należy dokładnie zaplanować przekazywanie, zapewnić wyraźną komunikację między wszystkimi zaangażowanymi zespołami i postępować zgodnie z ustalonymi procesami zarządzania zmianami.