Kompromisy między wydajnością a efektywnością dla Power Platform obciążeń roboczych
Obciążenie, które spełnia swoje cele dotyczące wydajności bez nadmiernej aprowizacji, jest wydajne. Kluczowe strategie zwiększania wydajności obejmują właściwe wykorzystanie optymalizacji kodu, wzorców projektowych i planowania wydajności. Jasne cele w zakresie wydajności i testy stanowią podstawę tego filaru.
W fazie projektowania obciążenia ważne jest, aby rozważyć, w jaki sposób decyzje oparte na zasadach projektowania i zaleceniach dotyczących efektywności wydajności w zestawieniu kontrolnym przeglądu projektu dla efektywności wydajności mogą wpływać na cele i wysiłki optymalizacyjne innych filarów. Niektóre decyzje mogą być korzystne dla niektórych filarów, ale dla innych stanowią kompromisy. W tym artykule wymieniono przykładowe kompromisy, które zespół ds. obciążeń może napotkać podczas projektowania architektury i operacji obciążeń w celu zwiększenia wydajności.
Wydajność Efektywność Kompromis między niezawodnością a niezawodnością
Kompromis: Zmniejszona replikacja i zwiększona gęstość. Podstawą niezawodności jest zapewnienie odporności poprzez zastosowanie replikacji i ograniczenie promienia wybuchu awarii.
- Konsolidacja zasobów obciążeń może wykorzystywać nadmierną pojemność i poprawiać wydajność. Zwiększa to jednak promień wybuchu w przypadku nieprawidłowego działania w ulokowanym komponencie lub platformie aplikacyjnej.
Kompromis: Zwiększona złożoność. Niezawodność stawia na pierwszym miejscu prostotę.
Partycjonowanie i fragmentowanie danych pomaga uniknąć problemów z wydajnością w dużych lub często używanych zestawach danych. Jednak implementacja tych wzorców zwiększa złożoność, ponieważ (ostateczna) spójność musi być zachowana w dodatkowych zasobach.
Denormalizacja danych w celu zoptymalizowania wzorców dostępu może poprawić wydajność, ale wprowadza złożoność, ponieważ wiele reprezentacji danych musi być synchronizowanych.
Wzorce projektowe chmury skoncentrowane na wydajności czasami wymagają wprowadzenia dodatkowych komponentów. Użycie tych komponentów zwiększa powierzchnię obciążenia. W związku z tym komponenty muszą być niezawodne, aby zapewnić niezawodność całego obciążenia.
Kompromis: Testowanie i obserwacja w aktywnych środowiskach. Unikanie niepotrzebnego korzystania z systemów produkcyjnych jest podejściem samozachowawczym zapewniającym niezawodność.
Testowanie wydajności w środowiskach aktywnych niesie ze sobą ryzyko spowodowania nieprawidłowego działania lub konfiguracji testowych.
Obciążenia powinny być instrumentowane za pomocą systemu monitorowania wydajności aplikacji (APM), który umożliwia zespołom uczenie się na podstawie aktywnych środowisk. Narzędzia APM są instalowane i konfigurowane w kodzie aplikacji lub w środowisku hostingu. Niewłaściwe użytkowanie, przekroczenie ograniczeń lub błędna konfiguracja narzędzia może zagrozić jego funkcjonalności i konserwacji, potencjalnie podważając niezawodność.
Kompromisy między wydajnością a efektywnością i bezpieczeństwem
Kompromis: Ograniczenie kontroli bezpieczeństwa. Mechanizmy kontroli zabezpieczeń są ustanawiane w wielu warstwach, czasami nadmiarowo, w celu zapewnienia dogłębnej ochrony.
Jedną ze strategii optymalizacji wydajności jest usuwanie lub pomijanie składników lub procesów, które przyczyniają się do opóźnień w przepływie, zwłaszcza gdy ich czas przetwarzania nie jest uzasadniony. Jednak ta strategia może zagrozić bezpieczeństwu i powinna jej towarzyszyć dokładna analiza ryzyka. Rozważ następujące przykłady:
Usunięcie szyfrowania podczas przesyłania lub przechowywania w celu zwiększenia szybkości transferu naraża dane na potencjalne naruszenie integralności lub poufności.
Usunięcie lub ograniczenie narzędzi do skanowania lub inspekcji zabezpieczeń w celu skrócenia czasu przetwarzania może zagrozić poufności, integralności lub dostępności, które te narzędzia chronią.
Usunięcie reguł zapory z przepływów sieciowych w celu zmniejszenia opóźnienia sieci może umożliwić niepożądaną komunikację.
Zminimalizowanie sprawdzania poprawności danych w celu szybszego przetwarzania danych może zagrozić integralności danych, zwłaszcza jeśli dane wejściowe są złośliwe.
Kompromis: Zwiększona powierzchnia obciążenia. Zabezpieczenia nadają priorytet zmniejszonemu i ograniczonemu obszarowi powierzchni, aby zminimalizować wektory ataków i ograniczyć zarządzanie mechanizmami kontroli zabezpieczeń.
Wzorce projektowe chmury skoncentrowane na wydajności czasami wymagają wprowadzenia dodatkowych komponentów. Te składniki zwiększają powierzchnię obciążenia. Nowe komponenty muszą być zabezpieczone, prawdopodobnie w sposób, który nie jest jeszcze używany w systemie, i często zwiększają zakres zgodności. Rozważ te często dodawane składniki:
Wprowadzenie wielu różnych metod obsługi logiki biznesowej, takich jak przepływy w chmurze i wtyczki niskokodowe, w oparciu o wymagania dotyczące wydajności każdego zadania.
Przenoszenie przetwarzania do zadań w tle, a nawet obliczeń klienta.
Kompromis: Usunięcie segmentacji. Filar Bezpieczeństwo nadaje priorytet silnej segmentacji, aby umożliwić precyzyjne kontrole bezpieczeństwa i zmniejszyć promień wybuchu.
Współdzielenie zasobów to podejście do poprawy wydajności. Zwiększa gęstość, aby zoptymalizować wykorzystanie pojemności. Na przykład ponowne używanie wtyczek niskokodowych w wielu aplikacjach kanwy i przepływach w chmurze. Zwiększona gęstość zaludnienia może prowadzić do następujących problemów związanych z bezpieczeństwem:
Udostępniona tożsamość obciążenia, która narusza zasadę najmniejszych uprawnień i zasłania poszczególne dzienniki inspekcji w dziennikach dostępu.
Mechanizmy kontroli zabezpieczeń obwodowych, na przykład reguły sieciowe, które są zredukowane do wszystkich kolokowanych komponentów, zapewniając poszczególnym składnikom większy dostęp niż to konieczne.
Kompromis między wydajnością a efektywnością operacyjną
Kompromis: Zmniejszona obserwowalność. Monitorowanie jest konieczne, aby zapewnić obciążenie z istotnymi alertami i pomóc w zapewnieniu pomyślnej odpowiedzi na zdarzenia.
Zmniejszenie woluminu dzienników i metryk w celu skrócenia czasu przetwarzania poświęconego na zbieranie danych telemetrycznych zamiast innych zadań zmniejsza ogólną obserwowalność systemu. Oto kilka przykładów wynikającej z tego zmniejszonej obserwowalności:
- Ogranicza punkty danych, które są używane do tworzenia znaczących alertów.
- Prowadzi to do luk w zakresie działań związanych z odpowiedzią na incydenty.
- Ogranicza obserwację w interakcjach i granicach wrażliwych na zabezpieczenia lub zgodności.
Gdy wdrażane są wzorce projektowe wydajności, złożoność obciążenia często wzrasta. Składniki są dodawane do przepływów krytycznych. Strategia monitorowania obciążenia i monitorowanie wydajności muszą obejmować te składniki. Gdy przepływ obejmuje wiele składników lub granic aplikacji, zwiększa się złożoność monitorowania wydajności tego przepływu. Wydajność przepływu musi być skorelowana we wszystkich połączonych ze sobą komponentach.
Kompromis: Zwiększona złożoność operacji. Złożone środowisko charakteryzuje się bardziej złożonymi interakcjami i większym prawdopodobieństwem negatywnego wpływu rutynowych, doraźnych i awaryjnych operacji.
Poprawa wydajności poprzez zwiększenie gęstości zwiększa ryzyko w zadaniach operacyjnych. Błąd w pojedynczym procesie może mieć duży promień wybuchu.
Implementacja wzorców projektowych wydajności wpływa na procedury operacyjne, takie jak tworzenie kopii zapasowych, rotacje kluczy i strategie odzyskiwania. Na przykład partycjonowanie i fragmentowanie danych może komplikować rutynowe zadania, gdy zespoły próbują upewnić się, że te zadania nie wpływają na spójność danych.
Kompromis: Stres kulturowy. Doskonałość operacyjna jest zakorzeniona w kulturze nieobwiniania, szacunku i ciągłego doskonalenia.
Przeprowadzenie analizy przyczyn źródłowych problemów z wydajnością identyfikuje braki w procesach lub wdrożeniach, które wymagają korekty. Zespół powinien potraktować to ćwiczenie jako okazję do nauki. Jeśli członkowie zespołu są obwiniani za problemy, może to wpłynąć na morale.
Procesy rutynowe i ad hoc mogą mieć wpływ na wydajność obciążeń. Często uważa się, że lepiej jest wykonywać te czynności poza godzinami szczytu. Jednak godziny poza szczytem mogą być niewygodne lub poza regularnymi godzinami dla członków zespołu, którzy są odpowiedzialni za te zadania lub są w nich wykwalifikowani.
Kompromisy między wydajnością a efektywnością dzięki optymalizacji doświadczeń
Kompromis: Zmniejszone zaangażowanie użytkowników. Filar Optymalizacja doświadczeń nadaje priorytet bardziej angażującym doświadczeniom użytkowników.
Optymalizacja pod kątem wydajności nadaje priorytet korzystaniu z funkcji platformy nad dostosowaniami, które obniżają priorytet niestandardowych komponentów, które mogą prowadzić do bardziej angażującego doświadczenia użytkownika.
Optymalizacja pod kątem wydajności może zbytnio koncentrować się na minimalizowaniu złożoności, co obniża priorytety funkcji w celu uzyskania bardziej angażujących środowisk użytkownika, takich jak niestandardowe składniki i integracje.
Tworzenie interfejsu użytkownika jest często wykonywane w szybszych iteracjach i cyklach statków, co może utrudnić ciągłe zwiększanie wydajności.