Zalecenia dotyczące optymalizowania kosztów przepływu

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

CO:09 Optymalizowanie kosztów przepływu. Wyrównaj koszt 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 każdego przepływu. Optymalizacja wydatków na przepływ często wymaga strategicznych kompromisów.

W tym przewodniku opisano zalecenia dotyczące optymalizowania 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 optymalizujesz przepływów w obciążeniu, ryzykujesz nadmierne wydatki na zasoby, co powoduje zawyżanie kosztów operacyjnych i zmniejszenie rentowności.

Definicje

Okres Definicja
Rozdzielanie Strategia usuwania przepływu z zasobu zawierającego wiele przepływów i umieszczania go w osobnym zasobie.
Przepływ 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 śledzi ten przepływ, aby umożliwić przepływy użytkownika lub funkcjonalność 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. Wyrównanie priorytetu przepływu i wydatków może obejmować oddzielenie przepływów, które obecnie współużytkuje ten sam zasób. Może również obejmować łączenie przepływów, które mają podobne wymagania, ale są uruchamiane na 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 działają na jednym serwerze, mimo że mają różne potrzeby dotyczące zasobów. Aby zoptymalizować koszty i wydajność, możesz oddzielić przepływy lub połączyć przepływy:

  • Oddzielne przepływy. Możesz na przykład rozdzielić przepływ rejestracji użytkownika z innych osób i przenieść go do dedykowanego, niższego kosztu serwera. Ten przepływ jest ważny, ale nie intensywnie korzystający z zasobów, więc jest dobrym kandydatem na mniej kosztowny serwer.

  • Łączenie przepływów. Można na przykład połączyć przepływy logowania i przetwarzania danych, które mają wyższe wymagania dotyczące zasobów i uruchamiać je razem na serwerze o wysokiej wydajności. Połączenie tych przepływów umożliwia serwerowi wydajną obsługę potrzeb związanych z zasobami 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ływu:

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

  • Przepływy użytkownika. Optymalizacja przepływów użytkowników obejmuje poprawę środowiska użytkownika, zmniejszenie liczby punktów tarć oraz zapewnienie płynnej 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 jest pierwszym krokiem w celu zapewnienia, że inwestycje są zgodne z priorytetem przepływów. Przepływy należy optymalizować tylko wtedy, gdy w pełni rozumiesz 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 uzyskać informacje na temat kompleksowego stanu 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 śledzenie lub szacowanie liczby żą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ą wyświetlanie 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 funkcjonalność (na przykład uwierzytelnianie, pobieranie danych i przetwarzanie transakcji), krytyczne znaczenie dla działalności biznesowej lub używane zasoby (procesor, 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, implikacje dotyczące środowiska 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. Ustalając priorytety przepływów, można lepiej dopasować wydatki do priorytetu przepływu. Aby określić priorytety przepływów, rozważ następujące kroki:

  • Zidentyfikuj wartość 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żyć koszty, rozważ przesunięcie 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 zmniejszyć 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 trudności z ustalaniem priorytetów przepływów, rozważ cele dostępności i odzyskiwania przypisane do nich. Przepływy krytyczne często mają wymagania dotyczące wysokiej dostępności i umowy dotyczące poziomu usług (SLA). Przepływy skojarzone z niższym obiektem punktu odzyskiwania i cel 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 zoptymalizować koszty.

  • Dostrajanie konfiguracji. 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.

Oddzielne różne przepływy

Rozdzielenie różnych przepływów na różne zasoby to proces przydzielania odrębnych 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, poufność opóźnienia, potrzeby zabezpieczeń i wymagania dotyczące 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 niepodmiernych przepływów, które są obecnie łączone. Ta separacja zwiększa skalowalność, odporność na uszkodzenia i dostosowanie, a także usprawnia koszty. Dzięki upewnieniu się, że każdy przepływ działa niezależnie, można zmniejszyć ryzyko ingerencji i przydzielić 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ływem danych). Ruch użytkowników do systemu CRM w godzinach pracy może spowolnić aparat danych. Po oddzieleniu 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 na pojedynczy zasób jest procesem konsolidowania zadań lub procesów z porównywalnymi atrybutami 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, poufność opóźnienia, potrzeby zabezpieczeń i wymagania dotyczące zgodności. Poniżej przedstawiono 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 sieci Web. Zamiast dedykować oddzielne serwery internetowe dla każdej aplikacji, rozważ ich konsolidację, zwłaszcza jeśli ich 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ć pojedyncze bramy interfejsu API dla oddzielnych mikrousług lub aplikacji, można użyć scentralizowanej bramy interfejsu API, aby usprawnić żądania i przekierować 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żdy z nich obsługuje własne wystąpienia przetwarzania dzienników, rozważ przekierowanie 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 usługi uwierzytelniania wspólnego 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, niekoniecznie służą temu samemu celowi. Przed scaleniem lub zmianą należy zrozumieć funkcję i projekt każdego przepływu. Błędne interpretowanie przepływu poprzez skupienie się wyłącznie na jego wyglądzie może prowadzić do niezamierzonych konsekwencji i zakłócać obsługę usługi lub procesu. Jeśli wiele przepływów obsługuje tę samą funkcję i nie ma zauważalnych różnic w ich projekcie lub intencji, rozważ ich konsolidację.

Ciągłe monitorowanie przepływów

Charakter przepływów i obciążeń może ulec zmianie w czasie, dlatego należy przejrzeć wydatki związane z przepływem, aby zapewnić, ż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 poszczególnymi przepływami. Zidentyfikuj wszelkie nieefektywności lub obszary, w których zasoby są niedostatecznie wykorzystywane. Ta analiza pomaga wskazać 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. Przeanalizuj wzorce użycia przepływów. Niektóre przepływy mogą być bardziej aktywne w niektórych porach dnia lub miesiąca, podczas gdy inne mogą mieć spójne obciążenie. Zrozumienie tych wzorców pozwala przewidywać potrzeby zasobów i dostosowywać 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ż bieżącą konserwację. Rozważ koszty konserwacji, szczególnie w przypadku korzystania z rozwiązań infrastruktury jako usługi, 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ć na możliwości optymalizacji kosztów.

Ułatwienia platformy Azure

Ustalanie 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 podążają za określonymi ścieżkami. Porównując rzeczywiste zachowanie użytkownika z przewidywanymi wynikami i celami, można zidentyfikować przepływy krytyczne. 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 ona 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ń.