7 praktyk devops poprawiających wydajność aplikacji

Devops jest trudny, ale wybór między szybszym rozwojem a poprawą niezawodności nie powinien być trudny. Rozważmy bezpieczeństwo, lepszą obserwowalność, platformy AIops i wiele innych.

7 praktyk devops poprawiających wydajność aplikacji

Fot. Miguel Á. Padriñán, Pexels

Pojęcie devops jest kojarzone przede wszystkim ze współpracą między programistami a działami operacyjnymi w celu poprawy dostarczania i niezawodności aplikacji w produkcji. Najpopularniejsze, najlepsze praktyki mają na celu zastąpienie ręcznych, podatnych na błędy procedur zarządzanych na granicy między zespołami dev i ops bardziej solidną automatyzacją. Obejmują one automatyzację procesu dostarczania za pomocą CI/CD (continuous integration and continuous delivery), standaryzację konfiguracji za pomocą kontenerów oraz konfigurowanie infrastruktury jako kodu. Po stronie operacyjnej, najlepsze praktyki devops poprawiające niezawodność aplikacji obejmują poprawę obserwowalności aplikacji, zwiększenie monitorowania oraz automatyzację operacji w chmurze i infrastrukturze.

Ale co z poprawą wydajności aplikacji, baz danych, strumieni danych i infrastruktury chmury? Skonsultowaliśmy się z ekspertami i zidentyfikowaliśmy siedem możliwości, w których praktyki i metodologie devops mogą wpłynąć na wydajność i wrażenia użytkowników.

Zobacz również:

  • Najpopularniejsze stanowiska pracy w chmurze obliczeniowej

1. Wbudowanie praktyk bezpieczeństwa w aplikacje od pierwszego dnia

Ostatnią rzeczą, jakiej potrzebują zespoły devops, jest wdrażanie nowych możliwości z lukami w zabezpieczeniach. Brak lub pogorszenie bezpieczeństwa wpływa na doświadczenia użytkowników i stwarza istotne problemy biznesowe. Najlepszą praktyką devops jest „shift-left security” poprzez współpracę z bezpieczeństwem informacji w zakresie wymagań, testowanie luk w kodzie w ramach potoków CI/CD oraz wdrażanie innych praktyk bezpieczeństwa w procesie rozwoju oprogramowania.

Mike Elissen, senior developer advocate, Akamai, mówi: "Kluczowym elementem niezawodności aplikacji jest dostępność, a podjęcie odpowiednich działań w celu właściwego zabezpieczenia aplikacji przed atakami aplikacji internetowych, atakami DDoS i innymi może oznaczać różnicę między pozostaniem w trybie online a offline".

Elissen mówi, że shift left jest częścią transformacji z devops do devsecops. Kontynuuje: "Widzimy, że shift left w zakresie dodawania bezpieczeństwa do devops staje się coraz bardziej wyraźne, co ostatecznie tworzy silniejszą kulturę devsecops i sprawia, że więcej programistów jest świadomych i odpowiedzialnych za bezpieczeństwo swoich aplikacji".

2. Standaryzacja architektury i schematów infrastruktury

Amir Rozenberg, wiceprezes ds. zarządzania produktem w Quali, zwraca uwagę na problem, który wpływa na wydajność zespołu. "Wiele zespołów zajmujących się devopsem boryka się z chaosem organicznie narosłych definicji infrastruktury aplikacji, które zostały opracowane w dobrej wierze na wczesnym etapie, w celu zwiększenia wydajności zespołu w cyklu życia oprogramowania" – mówi.

Rozenberg pyta, czy zespoły devops powinny stosować podejście "zrób to sam" do tworzenia środowisk, czy też organizacja powinna stworzyć standardy. "Zalecane podejście polega na powołaniu centralnego zespołu, który będzie modelował środowiska w formie planów, tak aby były one niezawodne, wielokrotnego użytku i zgodne z normami. Następnie zespół ten musi mieć możliwość rozpowszechniania tych definicji infrastruktury, aby były one dostępne dla uczestników biznesowych do wykorzystania w ramach szybkiej samoobsługi, niezależnie od tego, czy są one zintegrowane ze zautomatyzowanym strumieniem, czy też są obsługiwane ręcznie”.

3. Wprowadzanie obserwowalności i ciągłego testowania w strumienia CI/CD

Matt Sollie, dyrektor ds. rozwoju w 66degrees, uważa, że CI/CD może robić więcej niż tylko pakować i wypychać kod. "Nie wszystkie zasady devops są tak efektowne i widoczne, jak ciągłe dostarczanie czy budowanie wszystkiego jako kodu, ale są równie ważne. Ciągła integracja jest jednym z elementów dojrzałej postawy devops, która może wnieść bardzo wiele do niezawodności aplikacji, ale wymaga celu, wizji i czasu, aby zbudować ją w odpowiedni sposób" – mówi.

Sollie przyznaje, że osiągnięcie celów związanych z niezawodnością i wydajnością wymaga nie tylko posiadania wizji, ale także inwestowania w dobre praktyki i optymalne architektury. "Obserwowalność jest krytyczną i kosztowną zasadą, ponieważ niezawodność nie jest stanem włączonym lub wyłączonym i wymaga zbierania szczegółowych danych. Przy wszystkich usługach w chmurze obliczeniowej wybór odpowiedniego narzędzia lub usługi do wykonania zadania może przynieść nieodłączne korzyści w zakresie niezawodności i wydajności".

Co zwinne zespoły dev powinny wdrożyć, aby poprawić wydajność? Oto kilka zaleceń:

- Wdrożenie ciągłego testowania przed zwiększeniem częstotliwości wdrażania

- Rozważ wirtualizację usług w celu testowania mikrousług i interfejsów API innych firm.

- Zapewnienie obserwowalnych potoków CI/CD w celu lepszego wykrywania błędów i izolowania problemów

4. Kontrolowanie wdrożeń za pomocą flag funkcji i kanarkowych wydań (canary releases)

Wdrożenia nie muszą być absolutnym przełomem, w którym wszyscy użytkownicy otrzymują wszystkie zmiany za jednym zamachem. Flagi funkcji w kodzie pomagają konfigurować i kontrolować dostępność funkcji, podczas gdy strategie canary releases umożliwiają zespołom devops powolne i metodyczne wprowadzanie nowych możliwości.

"Zarządzanie funkcjami, a w szczególności flagi funkcji, szybko stają się praktykami devops, które poprawiają ogólną niezawodność i wydajność aplikacji, jednocześnie pozwalając programistom na ciągłe innowacje. Stosując flagi funkcji, programiści mogą testować aktualizacje funkcji przed produkcją, aby rozwiązywać problemy przed wydaniem" – mówi John Kodumal, CTO i współzałożyciel LaunchDarkly.

Kontrole poprawiają niezawodność i wydajność, ale także pomagają zespołom programistów minimalizować zakłócenia. "Flagi funkcji poprawiają wydajność, jednocześnie dając zespołom programistów kontrolę niezbędną do aktualizacji aplikacji bez zakłóceń i przestojów" – dodaje Kodumal.

5. Ustanowienie rygorystycznych standardów obserwowalności i monitorowania

Skupiając się teraz na -ops-owej stronie odpowiedzialności devops, zespoły powinny rozważyć kilka najlepszych praktyk w celu poprawy wydajności aplikacji, w tym opracowanie standardów obserwowalności i usprawnienie monitorowania.

Frédéric Harper, dyrektor ds. relacji z deweloperami w Mindee, mówi: "Devops musi wdrożyć rygorystyczne procesy monitorowania i obserwowalności, aby upewnić się, że każdy element aplikacji działa prawidłowo, a procesy serwerowe przebiegają bez zakłóceń. Zabezpieczając ten element, zespoły devops mogą zbierać cenne informacje, aby zrozumieć, w jaki sposób użytkownicy korzystają z aplikacji, ewentualnie zapobiegać przyszłym problemom, ułatwiać wsparcie dla klientów oraz ulepszać decyzje biznesowe lub architektoniczne w oparciu o rzeczywiste dane".

6. Rozszerzenie monitorowania o AIops i automatyzacje

W czasach Web 2.0 dział operacyjny miał do dyspozycji tylko kilka plików dzienników i narzędzi monitorujących, które można było przeglądać w przypadku awarii lub problemów z wydajnością. Obecnie, korzystanie z mikroserwisów, aplikacji serverless i wielochmurowych baz danych wymaga znacznie większej ilości danych i narzędzi, z którymi można się zapoznać podczas rozwiązywania incydentów i identyfikowania przyczyn problemów. Platformy AIops, które centralizują dane monitorowania, wykorzystują uczenie maszynowe do korelowania alarmów i pomagają działom operacyjnym zautomatyzować reakcję i odzyskiwanie danych na wielu platformach, mogą pomóc zminimalizować wpływ na wydajność.

Mohan Kompella, wiceprezes ds. marketingu produktów w BigPanda, zgadza się z tym stwierdzeniem: "Platformy AIops mogą pomóc zespołom devops w zachowaniu autonomii i elastyczności narzędzi, a jednocześnie zapewnić osobom reagującym centralnie na incydenty widoczność, której potrzebują, aby być pierwszą linią obrony w przypadku awarii".

7. Zdefiniuj SLO i budżety błędów

Zespoły devops powinny wyważyć, które praktyki przynoszą największe korzyści i niwelują ryzyko. Wymaga to mierzenia, uczenia się i współpracy w zakresie priorytetów devops, co nie jest łatwe, gdy korzyści mogą nie być osiągalne przez miesiące lub lata po wdrożeniu praktyk i narzędzi.

Jedną z metod ustalania priorytetów jest przyjęcie praktyk inżynierii niezawodności, zdefiniowanie celów poziomu usług (SLO) i stosowanie budżetów błędów. Kiedy aplikacja lub mikroserwis przekroczy swój budżet błędów, jest to sygnał dla zespołu devops do zidentyfikowania przyczyn i skupienia się na rozwiązaniach.

Kit Merker, dyrektor operacyjny w Nobl9, mówi: "Cele na poziomie usług wyznaczają jasne cele dla zespołów inżynierskich, dzięki którym mogą one podejmować lepsze decyzje dotyczące priorytetyzacji swojej pracy. Zespoły Devs i ITops nie mogą być skoncentrowane jedynie na technologii, ale mogą przejść do skoncentrowania się na usługach".

Zespoły devops mają wiele na głowie, a najlepsze praktyki pomagają im zrównoważyć koncentrację pomiędzy przyspieszeniem rozwoju a poprawą niezawodności i wydajności. Kluczem do sukcesu może być zdefiniowanie problemu, przedyskutowanie podejść, iteracja rozwiązań i zmierzenie wpływu.

Artykuł pochodzi z Infoworld

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200