Zalecenia dotyczące optymalizowania kosztów przepływu

Dotyczy tego zalecenia listy kontrolnej dotyczącej optymalizacji kosztów platformy Azure Well-Architected Framework:

CO:09 Optymalizowanie kosztów przepływu. Wyrównywanie kosztów każdego przepływu z priorytetem przepływu. Podczas określania priorytetów przepływów należy wziąć pod uwagę funkcje, funkcje i wymagania niefunkcjonalne dla każdego przepływu. Optymalizacja wydatków na przepływ często wymaga strategicznych kompromisów.

W tym przewodniku opisano zalecenia dotyczące optymalizacji kosztów poszczególnych przepływów w obciążeniu. Optymalizacja kosztów przepływów w obciążeniu obejmuje strategiczne przydzielanie zasobów i zarządzanie nimi w celu zminimalizowania wydatków przy zachowaniu wydajności. Ta optymalizacja ma kluczowe znaczenie, ponieważ zapewnia efektywne wykorzystanie zainwestowanych zasobów, zmniejsza niepotrzebne wydatki i poprawia ogólny zwrot z inwestycji w infrastrukturę. Jeśli nie zoptymalizujesz przepływów w obciążeniu, ryzykujesz nadmierne wydatki na zasoby, co skutkuje zawyżonymi kosztami operacyjnymi i zmniejszoną rentownością.

Definicje

Okres Definicja
Rozdzielanie Strategia usuwania przepływu z zasobu zawierającego wiele przepływów i umieszczania go w osobnym zasobie.
Flow W obciążeniu sekwencja akcji wykonujących określoną funkcję. Przepływ obejmuje przenoszenie danych i uruchamianie procesów między składnikami obciążenia.
Przepływ systemu Przepływ informacji i procesów w systemie. System automatycznie podąża za tym przepływem, aby umożliwić przepływy użytkownika lub funkcje obciążenia.
Przepływ użytkownika Ścieżki lub sekwencje akcji, które użytkownicy podejmują w aplikacji lub systemie.

Kluczowe strategie projektowania

Zainwestuj więcej w przepływy o wysokim priorytcie niż w przepływach o niższym priorytcie. Dostosowanie priorytetu przepływu i wydatków może obejmować oddzielenie przepływów, które obecnie współdzielą ten sam zasób. Może również obejmować łączenie przepływów, które mają podobne wymagania, ale są uruchamiane w oddzielnych zasobach. Załóżmy na przykład, że masz aplikację internetową zawierającą wiele przepływów, takich jak rejestracja użytkownika, logowanie i przetwarzanie danych. Te przepływy są uruchamiane na jednym serwerze, mimo że mają różne potrzeby dotyczące zasobów. Aby zoptymalizować zarówno koszty, jak i wydajność, możesz oddzielić przepływy lub połączyć przepływy:

  • Oddzielaj przepływy. Możesz na przykład rozdzielić przepływ rejestracji użytkownika z innych osób i przenieść go na dedykowany serwer o niższych kosztach. Ten przepływ jest ważny, ale nie intensywnie korzystający z zasobów, dlatego jest dobrym kandydatem na mniej kosztowny serwer.

  • Łączenie przepływów. Na przykład możesz połączyć przepływy logowania i przetwarzania danych, które mają wyższe wymagania dotyczące zasobów, i uruchomić je razem na serwerze o wysokiej wydajności. Połączenie tych przepływów umożliwia serwerowi efektywne radzenie sobie z potrzebami intensywnie korzystającymi z zasobów obu przepływów. Optymalizuje wydajność i koszty.

W obciążeniu mogą istnieć różne typy przepływów lub ścieżek, które należy wziąć pod uwagę. Ten przewodnik koncentruje się na następujących typach przepływów:

  • Przepływy systemowe. Optymalizacja przepływów systemu polega na usprawnieniu komunikacji i interakcji między składnikami systemu, zminimalizowaniu wąskich gardeł i zapewnieniu efektywnego wykorzystania zasobów.

  • Przepływy użytkownika. Optymalizacja przepływów użytkowników polega na ulepszaniu środowiska użytkownika, zmniejszeniu liczby problemów oraz zapewnieniu bezproblemowej nawigacji i interakcji w aplikacji lub systemie.

Tworzenie spisu przepływów

Spis przepływu to kompleksowa lista i opis wszystkich sekwencji akcji, przejść danych i interakcji systemowych w ramach obciążenia. Spis przepływów to pierwszy krok w celu zapewnienia, że inwestycje są zgodne z priorytetem przepływów. Należy zoptymalizować przepływy tylko wtedy, gdy w pełni zrozumiesz ich przeznaczenie i zależności. Poniżej przedstawiono kroki tworzenia spisu przepływów obciążeń:

  1. Przepływy dokumentów. Zacznij od dokumentowania i wyświetlania listy wszystkich istniejących przepływów w obciążeniu, aby zrozumieć kompleksowy stan systemu. Uwzględnij każdą sekwencję akcji, przejścia danych i interakcje systemowe. Zapoznaj się z każdym składnikiem, takimi jak usługi zewnętrzne, bazy danych, oprogramowanie pośredniczące i integracje innych firm. Ponadto śledź lub szacuj ilość żądań w czasie.

  2. Wizualizowanie przepływów. Aby uzyskać jaśniejszą perspektywę, przedstawiaj wyniki wizualnie, prawdopodobnie w schematach blokowych lub diagramach. Wizualizacje ułatwiają sprawdzenie współzależności między składnikami. Rozważ użycie narzędzia, takiego jak Visio, aby ułatwić korzystanie z wizualizacji.

  3. Kategoryzuj przepływy. Dołącz podobne przepływy, biorąc pod uwagę atrybuty, takie jak ich funkcje (na przykład uwierzytelnianie, pobieranie danych i przetwarzanie transakcji), krytyczne znaczenie dla działalności biznesowej lub używane zasoby (procesor CPU, pamięć lub przepustowość).

Określanie priorytetów przepływów

Priorytetyzacja przepływu to proces klasyfikowania przepływów na podstawie ich wpływu na wyniki biznesowe, wpływ na środowisko użytkownika i używane zasoby. Przepływy krytyczne często wymagają wyższych poziomów dostępności, krótszych czasów odzyskiwania i lepszej wydajności w celu spełnienia celów obciążenia. Dzięki priorytetyzacji przepływów można lepiej dostosować wydatki do priorytetu przepływu. Aby określić priorytety przepływów, należy wziąć pod uwagę następujące kroki:

  • Identyfikowanie wartości przepływu. Podczas optymalizowania kosztów przepływu obciążeń należy zidentyfikować przepływ, który zapewnia największą wartość. Nie chcesz wydawać więcej niż przepływ jest wart. Zamiast po prostu obniżać koszty, rozważ przeniesienie kosztów w celu nadania priorytetów bardziej cennym przepływom. Na przykład przepływ wyewidencjonowania ma kluczowe znaczenie dla firmy, ale historia zakupów nie jest. Należy przydzielić więcej zasobów i budżetu do przepływu wyewidencjonowania.

    Przepływy o niskim priorytcie mają niższe oczekiwania dotyczące dostępności, odzyskiwania i wydajności. Możesz obniżyć koszty, korzystając z tańszych konfiguracji, aby zmniejszyć wydajność, dostępność lub wydatki na ciągłość działania.

  • Rozważ metryki przepływu. Jeśli masz problemy z ustalaniem priorytetów przepływów, rozważ przypisanie im celów dotyczących dostępności i odzyskiwania. Krytyczne przepływy często mają wymagania dotyczące wysokiej dostępności i umowy dotyczące poziomu usług (SLA). Przepływy skojarzone z niższymi celami punktu odzyskiwania i celu punktu odzyskiwania są ważniejsze niż przepływy, które mają wyższy cel punktu odzyskiwania i cel punktu odzyskiwania.

Optymalizowanie niezależnych przepływów

Czasami przepływy są już uruchomione w różnych zasobach. W takich przypadkach można łatwiej ocenić i zoptymalizować wydatki. Oceń składniki i procesy zaangażowane w każdy niezależny przepływ, aby określić, czy istnieją sposoby ich optymalizacji lub uproszczenia. Aby zoptymalizować niezależne przepływy, możesz wykonać następujące kroki:

  • Eliminowanie niepotrzebnych składników. Usuń wszelkie dodatkowe elementy, które nie przyczyniają się do podstawowych funkcji przepływu, co zmniejsza złożoność i koszty.

  • Przeprojektuj przepływ. Rozważ przeprojektowanie architektury przepływu, aby zwiększyć jej wydajność. Możesz na przykład zmienić sekwencję operacji, zmniejszyć opóźnienie lub zwiększyć szybkość transferu danych.

  • Wybierz odpowiednią warstwę wydajności. Różne przepływy mogą mieć różne wymagania dotyczące szybkości przetwarzania, pamięci lub innych metryk zasobów. Pamiętaj, aby wybrać warstwę zasobów, która dobrze pasuje do określonych wymagań każdego przepływu.

  • Dostosuj ustawienia skalowania. Jeśli przepływ doświadcza zmiennego zapotrzebowania, rozważ zaimplementowanie skalowania automatycznego w celu dynamicznego dostosowywania zasobów zgodnie z potrzebami w czasie rzeczywistym, co pozwala na optymalizację kosztów.

  • Dostosuj konfiguracje. Dostosuj inne ustawienia, takie jak opcje sieci lub magazynu danych, aby lepiej dopasować je do wymagań dotyczących wydajności i budżetu przepływu.

Oddzielanie różnych przepływów

Rozdzielenie różnych przepływów na różne zasoby to proces przydzielania różnych zadań z różnymi potrzebami obliczeniowymi do dedykowanych zasobów. Różne przepływy to przepływy, które mają różne atrybuty. Te atrybuty mogą obejmować wymagania obliczeniowe, zależności danych, operacje we/wy, czułość opóźnienia, wymagania dotyczące zabezpieczeń i zgodności. Często bardziej opłacalne jest uruchamianie różnych typów przepływów w oddzielnych zasobach. Dzięki temu można precyzyjnie przydzielać zasoby do każdego przepływu, co zmniejsza niepotrzebne wydatki i zapewnia maksymalną wydajność.

Rozważ oddzielenie różniących się przepływów, które są obecnie połączone. Ta separacja zwiększa skalowalność, odporność na uszkodzenia i adaptację, a także usprawnia koszty. Dzięki zapewnieniu, że każdy przepływ działa niezależnie, zmniejsza ryzyko zakłóceń i może przydzielać zasoby bardziej ekonomiczne na podstawie priorytetu każdego przepływu. Załóżmy na przykład, że colocate CRM (przepływ użytkownika) z aparatem danych (przepływ danych). Ruch użytkowników do systemu CRM w godzinach pracy może spowolnić aparat danych. W przypadku oddzielenia przepływów aparat danych może skalować każdy składnik lub usługę niezależnie na podstawie zapotrzebowania na obciążenia. To oddzielenie optymalizuje alokację zasobów i zmniejsza koszty.

Łączenie podobnych przepływów

Łączenie podobnych przepływów z jednym zasobem to proces konsolidowania zadań lub procesów o porównywalnych atrybutach i używania zasobów udostępnionych dla nich. Ta strategia eliminuje nadmiarowość i zapewnia bardziej wydajne wykorzystanie zasobów, co prowadzi do znacznych oszczędności kosztów. Podobne typy przepływów współdzielą podobne atrybuty. Możesz rozważyć te same atrybuty, które są analizowane podczas oddzielania różnych przepływów: wymagania obliczeniowe, zależności danych, operacje we/wy, czułość opóźnienia, wymagania dotyczące zabezpieczeń i wymagania dotyczące zgodności. Oto kilka przykładów, w których łączenie podobnych przepływów obciążeń w celu użycia tego samego zasobu może prowadzić do znacznych oszczędności:

  • Serwery internetowe. Zamiast poświęcać oddzielne serwery internetowe dla każdej aplikacji, rozważ ich konsolidację, zwłaszcza jeśli ruch nie jest stale wysoki. Udostępniony serwer internetowy, sparowany z zwrotnym serwerem proxy, może skutecznie zarządzać ruchem i kierować go do wielu aplikacji.

  • Bramy interfejsu API. Zamiast obsługiwać poszczególne bramy interfejsu API dla oddzielnych mikrousług lub aplikacji, możesz użyć scentralizowanej bramy interfejsu API, aby usprawnić żądania i skierować je do odpowiedniej usługi. Dzięki temu zarządzanie jest łatwiejsze, a także zmniejsza koszty.

  • Przetwarzanie dzienników. Zamiast mieć wiele aplikacji lub usług, które każda z nich obsługuje własne wystąpienia przetwarzania dzienników, rozważ skierowanie ich wszystkich do udostępnionego narzędzia do przetwarzania dzienników. Takie podejście minimalizuje liczbę aktywnych wystąpień, co przekłada się na bezpośrednie oszczędności kosztów.

  • Usługi uwierzytelniania. Jeśli wiele aplikacji wdraża własne odrębne mechanizmy uwierzytelniania, zostanie wprowadzona nadmiarowość. Zintegrowanie rozwiązania logowania jednokrotnego (SSO) lub wspólnej usługi uwierzytelniania zmniejsza to duplikowanie i optymalizuje użycie zasobów, co zmniejsza koszty.

Ryzyko: Nie błęduj zbiegu okoliczności z projektem. Dwa przepływy, które wyglądają podobnie, nie muszą pełnić tego samego celu. Przed scaleniem lub zmianą należy zrozumieć funkcję i projekt każdego przepływu. Błędna interpretacja przepływu przez skupienie się wyłącznie na jego wyglądzie może prowadzić do niezamierzonych konsekwencji i zakłócić usługę lub proces, który obsługuje. Jeśli wiele przepływów pełni tę samą funkcję i nie ma zauważalnych różnic w ich projekcie lub intencji, rozważ ich skonsolidowanie.

Ciągłe monitorowanie przepływów

Charakter przepływów i obciążeń może ulec zmianie w czasie, więc należy przejrzeć wydatki na przepływy, aby upewnić się, że koszty są zgodne z priorytetami. Oceń wykorzystanie zasobów każdego przepływu, analizując użycie zasobów obliczeniowych, magazynu i sieci skojarzonych z każdym przepływem. Zidentyfikuj wszelkie nieefektywne zasoby lub obszary, w których zasoby są niedostatecznie wykorzystywane. Ta analiza ułatwia wskazanie możliwości optymalizacji kosztów. Poniżej przedstawiono kilka zagadnień, które należy wziąć pod uwagę podczas przeglądania wykorzystania przepływu:

  • Analizowanie wzorców użycia. Analizowanie wzorców użycia przepływów. Niektóre przepływy mogą być bardziej aktywne w określonych porach dnia lub miesiąca, podczas gdy inne mogą mieć spójne obciążenie. Zrozumienie tych wzorców pozwala przewidzieć potrzeby zasobów i dostosować alokację, aby uniknąć wąskich gardeł i nadmiernej aprowizacji.

  • Monitoruj odpowiednie metryki. Określ metryki, które mogą pomóc ocenić wydajność i efektywność kosztową każdego przepływu. Rozważ użycie procesora CPU, koszty transferu danych, koszty transakcji i ślad magazynu. Użyj narzędzi do monitorowania, aby zebrać szczegółowe metryki dotyczące użycia zasobów i wydajności.

  • Rozważ ciągłą konserwację. Rozważ koszty konserwacji, szczególnie w przypadku korzystania z rozwiązań typu infrastruktura jako usługa, takich jak maszyny wirtualne. Musisz uwzględnić działania, takie jak stosowanie poprawek, uaktualnienia, kopie zapasowe, monitorowanie i zabezpieczenia.

Podczas analizy zidentyfikuj wszelkie nieefektywności lub obszary, w których zasoby nie są efektywnie wykorzystywane. Rozważ bezczynne wystąpienia obliczeniowe, nieużywane dane i niską przepustowość sieci. Te nieefektywności mogą wskazywać możliwości optymalizacji kosztów.

Ułatwienia platformy Azure

Określanie priorytetów, optymalizowanie i monitorowanie przepływów: narzędzie przepływ użytkownika w usłudze Application Insights zapewnia wizualną reprezentację nawigacji użytkownika na stronach i funkcjach witryny. To narzędzie ułatwia identyfikowanie obszarów, w których użytkownicy często opuszczają, powtarzają akcje lub śledzą określone ścieżki. Porównując rzeczywiste zachowanie użytkownika z przewidywanymi wynikami i celami, możesz zidentyfikować krytyczne przepływy. Umożliwia również optymalizację potencjalnych problemów, takich jak wysokie współczynniki zmian, powtarzające się akcje lub wady projektowe. Narzędzie umożliwia również filtrowanie właściwości niestandardowych za pośrednictwem wymiarów, oferując bardziej dostosowaną analizę.

Usługa Azure Monitor pomaga uzyskać wgląd w wydajność i kondycję aplikacji. Zapewnia możliwości monitorowania i diagnostyki. Te możliwości umożliwiają identyfikowanie wąskich gardeł wydajności, optymalizowanie wykorzystania zasobów oraz wykrywanie i rozwiązywanie problemów, które mogą mieć wpływ na koszty.

Log Analytics to narzędzie, które umożliwia zbieranie, analizowanie i wizualizowanie danych dziennika z różnych źródeł. Korzystając z usługi Log Analytics, możesz uzyskać wgląd w dzienniki aplikacji i infrastruktury, zidentyfikować trendy i zoptymalizować koszty, zarządzając użyciem i przechowywaniem danych. Rozważ przeniesienie dzienników i użycie dedykowanych rozwiązań zamiast udostępnionych, aby lepiej zarządzać kosztami.

Lista kontrolna optymalizacji kosztów

Zapoznaj się z pełnym zestawem zaleceń.