Udostępnij za pośrednictwem


Zalecenia dotyczące standaryzacji narzędzi i procesów

Dotyczy tego zalecenia z listy kontrolnej dotyczącej doskonałości operacyjnej platformy Azure Well-Architected Framework:

OE:04 Zoptymalizuj procesy tworzenia oprogramowania i zapewniania jakości, postępując zgodnie ze sprawdzonymi w branży rozwiązaniami dotyczącymi programowania i testowania. Aby uzyskać jednoznaczne oznaczenie roli, standaryzację praktyk między składnikami, takimi jak narzędzia, kontrola źródła, wzorce projektowania aplikacji, dokumentacja i przewodniki dotyczące stylu.

Przewodnik pokrewny: Zwiększanie szybkości kompilacji | Korzystanie z ciągłej integracji

W tym przewodniku opisano zalecenia dotyczące definiowania standardów dla narzędzi i procesów tworzenia oprogramowania. Definiowanie spójnych rozwiązań prowadzi do wydajnego zespołu obciążeń i wysokiej jakości pracy. Zespoły o wysokiej wydajności używają sprawdzonych w branży narzędzi i procesów, aby zminimalizować zmarnowany wysiłek i potencjalne błędy kodu.

Kluczowe strategie projektowania

Pierwszym krokiem optymalizacji praktyk programistycznych jest standaryzacja narzędzi i procesów. Jeśli to możliwe, używaj sprawdzonych w branży rozwiązań, a nie opracowywania rozwiązań w firmie. Aby jeszcze bardziej zoptymalizować swoje praktyki, należy wdrożyć narzędzia z małą ilością kodu i bez kodu. Te narzędzia umożliwiają skoncentrowanie wysiłków na aplikacji i pomaga zaoszczędzić czas. W przypadku wszystkich narzędzi i procesów, które można standaryzacji, zaimplementuj szkolenia, aby zespoły zrozumiały i efektywnie je używały. Aby zdefiniować standardy, które ułatwiają optymalizowanie praktyk programistycznych, należy wziąć pod uwagę następujące zalecenia.

Korzystanie z dobrze znanych i dojrzałych narzędzi gotowych

Używaj dobrze znanych i dojrzałych narzędzi gotowych i standaryzacji ich użycia. Wysoce skuteczne zespoły inżynieryjne przyjmują najlepsze w klasie narzędzia. Takie podejście minimalizuje konieczność opracowywania rozwiązań do planowania, programowania, testowania, współpracy oraz ciągłej integracji i ciągłego dostarczania (CI/CD). Wiele przedsiębiorstw daje deweloperom wybór między kilkoma narzędziami, ale wszystkie opcje są standardowymi narzędziami dla organizacji i są weryfikowane wewnętrznie. Co najważniejsze, wybierz narzędzia spełniające wymagania dotyczące obciążenia. Gotowe narzędzia powinny zapewniać następujące funkcje:

  • Planowanie pracy i zarządzanie listami prac

  • Kontrola wersji i repozytoria

  • Potoki ciągłej integracji/ciągłego wdrażania

  • Testowanie, takie jak integracja, dym, syntetyczny użytkownik, symulacja, chaos i inne testy jakości

  • Programowanie kodu

W niektórych przypadkach jedno narzędzie lub zestaw narzędzi może zapewnić kilka funkcji. Upewnij się, że rozumiesz możliwości narzędzi i ich ograniczeń, aby spełniały twoje wymagania dotyczące funkcji.

Określ, czy należy inwestować w kosztowne narzędzia lub wersje premium narzędzi. Zastanów się nad czasem i nakładem pracy nad opracowywaniem własnych rozwiązań w porównaniu z funkcjami oferowanymi przez narzędzia w warstwie Premium. Rozważ jednorazowe koszty w porównaniu z kosztami cyklicznymi. W większości przypadków narzędzia gotowe zapewniają wyższą wartość zespołowi.

Używaj narzędzi z małą ilością kodu, bez kodu i sztucznej inteligencji , gdy jest to praktyczne. Narzędzia z małą ilością kodu i bez kodu oszczędzają doświadczonym deweloperom czas, umożliwiając im łatwe podłączanie funkcji zamiast wykonywania całego procesu tworzenia kodu. Te narzędzia umożliwiają również członkom zespołu obciążeń, którzy mogą nie być wytrenowani deweloperzy, aby współtworzyli działanie obciążenia. Narzędzia sztucznej inteligencji mogą pomóc w tworzeniu kodu, przeglądach i optymalizacji.

Standaryzacja strategii rozgałęziania

Wybierz model oparty na magistrali, jeśli jest to możliwe. Rozgałęzianie oparte na magistrali utrzymuje zespół deweloperów obciążeń w synchronizacji i zachęca do ciągłego dostarczania. Zdefiniuj zasady gałęzi, aby chronić ważne gałęzie, takie jak gałąź główna. Aby uzyskać więcej informacji, zobacz Wdrażanie strategii rozgałęziania git oraz zasad i ustawień gałęzi.

Ocena metryk w celu kwantyfikacji skuteczności programowania

Zespoły ds. tworzenia oprogramowania i zapewniania jakości mogą poprawić się tylko wtedy, gdy będą mogły oszacować swoją skuteczność. Aby określić efektywność kwantyfikacji, muszą zidentyfikować metryki, które mierzą szybkość pracy deweloperów i definiują kluczowe wskaźniki wydajności. Przykłady tych metryk to:

  • Częstotliwość wdrażania: liczba wdrożeń wdrażanych przez każdego dewelopera każdego dnia.

  • Czas realizacji: czas potrzebny na przejście zadania lub scenariusza użytkownika z listy prac do wdrożenia produkcyjnego.

  • Średni czas na rozwiązanie: średni czas spędzony na naprawianiu usterek lub wad w kodzie.

  • Współczynnik niepowodzeń zmian: procent zmian, które powodują awarię.

Aby ułatwić uczestnikom projektu i zespołowi ds. obciążeń łatwe śledzenie szybkości, wizualizowanie wskaźników KPI przy użyciu pulpitów nawigacyjnych lub innych narzędzi do raportowania.

Standaryzacja sposobu pisania, przeglądów i kodu dokumentów przez zespół ds. obciążeń

Standaryzacja sposobu pisania, recenzji i kodu dokumentów przez zespół ds. obciążeń przy użyciu przewodnika stylu. Standardowy styl ułatwia współpracę i ułatwia dołączanie nowych deweloperów. Aby efektywnie pracować, nowi deweloperzy muszą wiedzieć, jak działa zespół ds. obciążeń. Przewodnik po stylu z jasno zdefiniowanymi standardami może złagodzić proces trenowania. W przewodniku po stylu zdefiniuj standardy języków programowania, bibliotek, struktur i innych konwencji.

Gdy jest to praktyczne, użyj narzędzi, aby wymusić standardy formatowania kodu. Na przykład program Visual Studio oferuje kilka narzędzi , które skanują kod pod kątem stylu, jakości, konserwacji, projektowania i innych problemów. W przypadku infrastruktury jako kodu (IaC) można użyć narzędzia Checkov lub Terrascan dla programu Terraform.

Aby zapewnić spójność i uniknąć potencjalnych nieporozumień, przewodnik po stylu powinien zawierać standardowe konwencje nazewnictwa artefaktów, środowisk, gałęzi, kompilacji i przebiegów.

Należy również ustawić wytyczne i standardy dla dozwolonego stopnia wariancji w środowiskach. Jeśli istnieją nowe języki, struktury lub inne technologie, które członkowie zespołu obciążeń chcą dodać do standardowej listy, zaimplementuj proces używania tych narzędzi w piaskownicy lub niższym środowisku. Przetestuj ich rentowność i w razie potrzeby zastąp istniejące technologie.

Użyj rekordów decyzyjnych architektury (ADR), aby zachować historyczny rekord decyzji zespołu ds. projektowania obciążenia. Usługi ADR pomagają zespołom w utrzymaniu świeżego zrozumienia obciążenia. Pomagają również nowym członkom zespołu dowiedzieć się więcej o decyzjach projektowych, które są podejmowane podczas cyklu życia obciążenia. Upewnij się, że usługi ADRs są kontrolowane w wersji.

W przypadku reguły ADR uwzględnij następujące elementy:

  • Wybrane przez zespół narzędzia i technologie, na przykład przy użyciu języka SQL lub NoSQL.

  • Przyczyny decyzji twojego zespołu.

  • Inne rozważane opcje, które pomagają w kontekście ostatecznej decyzji.

  • Wymagania funkcjonalne i niefunkcjonalne, które są uwzględniane w decyzjach.

  • Kontekst procesu podejmowania decyzji, taki jak problem, który został rozwiązany.

Implementowanie standardów dotyczących rozwiązywania problemów z długiem technicznym

Przyjmij sposób myślenia, że dług techniczny jest zamierzony i niezbędny dla elementów dostarczanych przez zespół ds. obciążeń. Ten sposób myślenia motywuje twój zespół do regularnego rozważenia i rozwiązania problemu długu technicznego, aby uniknąć akumulowania. Rozwiązywanie problemów z długiem technicznym jako regularnie cyklicznym zadaniem na liście prac.

Załóżmy na przykład, że twój zespół ustandaryzował bibliotekę. W czasie należy przełączyć się do innej biblioteki, aby uzyskać nowe funkcje w obciążeniu. To przejście może spowodować dług techniczny. Często przejścia takie mogą pozostawić zespół roboczy obsługujący dwie technologie, ponieważ nie mogą w pełni przechodzić. Zespół ds. obciążeń musi ustalić priorytety ukończenia przejścia, ponieważ gdy obciążenie osiągnie nowe funkcje, uczestnicy projektu będą zadowoleni i mniej prawdopodobne, aby rozważyć dług techniczny.

Standaryzacja sposobu stosowania przechowywania wersji do artefaktów

Standaryzacja sposobu stosowania przechowywania wersji do artefaktów oraz sposobu uwidaczniania wersji wewnętrznie i zewnętrznie. Na przykład systemy klienckie powinny uwidocznić uruchomioną wersję w interfejsie użytkownika. Ta technika jest przydatna, gdy zespół ds. obciążeń rozwiązuje problemy, ponieważ klient może łatwo komunikować się z używaną wersją. Interfejsy REST mogą uwidaczniać wersje niektórych składników lub baz danych. Aby uwidocznić wersję schematu, możesz użyć określonej tabeli w metadanych.

Użyj sprawdzonych w branży wzorców projektowych aplikacji, aby upewnić się, że aplikacja jest niezawodna, wydajna i bezpieczna. Użyj tych wzorców, aby zaoszczędzić czas i nakład pracy w porównaniu z opracowywaniem własnych rozwiązań dla aplikacji. Wybierz wzorce, które korzystają z obciążenia. Regularnie przeglądaj wzorce projektowe, aby upewnić się, że używasz odpowiednich wzorców w miarę rozwoju obciążenia.

Implementowanie podejścia shift-left do testowania

Zaimplementuj podejście shift-left do testowania, wykonując testy jednostkowe wcześnie i często w całym procesie programowania. Częste testowanie w każdym środowisku deweloperów ułatwia deweloperom uzyskanie zaufania do swoich aplikacji. Aby ułatwić tworzenie strategii testowania przy użyciu podejścia shift-left, należy wziąć pod uwagę następujące zasady:

  • Pisanie testów na najniższym możliwym poziomie. Faworyzowanie testów przy użyciu najmniejszych zależności zewnętrznych i uruchamianie testów w ramach kompilacji.

  • Pisać testy raz i uruchamiać testy wszędzie, w tym w środowisku produkcyjnym. Pisanie testów, które można uruchamiać w każdym środowisku projektowym bez uwzględniania czynników specyficznych dla jednego środowiska, takich jak zaszyfrowane wpisy tajne lub konfiguracje.

  • Zaprojektuj obciążenie pod kątem testowania. Podczas tworzenia aplikacji należy spełnić wymagania dotyczące testowania.

  • Traktuj kod testowy jako kod aplikacji. Zastosuj te same standardy jakości i programistyczne do kodu aplikacji i kodu testowego. Przechowuj kod testowy obok kodu aplikacji. Opracowywanie i obsługa kodu testowego przy użyciu kodu aplikacji. Aby zapewnić jakość testów, odrzuć testy, które nie są wiarygodne.

  • Rozważ własność testową, która jest oparta na własności obciążenia. Twój zespół ds. obciążeń jest właścicielem testów i nie powinien polegać na innych zespołach do testowania kodu.

  • Automatyzowanie testów jak najwięcej. Zautomatyzowany kod zwalnia obciążenie zespołu obciążeń i wymusza spójną jakość.

Aby uzyskać szczegółowe wskazówki dotyczące implementowania strategii testowania Metodyki DevOps, zobacz Testowanie przesunięcia w lewo z testami jednostkowymi.

Wymagaj praktyk DevSecOps w ramach standardowych procedur operacyjnych. Zespół ds. obciążeń powinien zrozumieć rozwiązania w zakresie zabezpieczeń związane z tworzeniem oprogramowania i zapewnianiem jakości. Muszą przestrzegać tych praktyk bez wyjątku. Aby uzyskać więcej informacji, zobacz Przewodnik cyklu projektowania zabezpieczeń.

Implementowanie standardów nazewnictwa i tagowania zasobów

Implementowanie konwencji tagowania i nazewnictwa to najlepsze rozwiązanie do zarządzania zasobami platformy Azure i organizowania ich. Konwencje tagowania i nazewnictwa ułatwiają identyfikowanie, klasyfikowanie i grupowanie zasobów na podstawie typowych atrybutów, takich jak środowisko, aplikacja, właściciel lub centrum kosztów. Umożliwiają one również zabezpieczenia, automatyzację, raportowanie i zarządzanie zasobami w subskrypcjach i grupach zasobów.

Niektóre korzyści wynikające z używania standardowych konwencji tagowania i nazewnictwa to:

  • Zapewniają one spójność i przejrzystość identyfikacji zasobów i zarządzania nimi, ułatwiają odnajdywanie i wyszukiwanie w witrynie Azure Portal, programie PowerShell, interfejsie wiersza polecenia i interfejsach API.
  • Umożliwiają one filtrowanie i grupowanie zasobów na potrzeby rozliczeń, monitorowania, zabezpieczeń i zgodności.
  • Obsługują one zarządzanie cyklem życia zasobów, takie jak aprowizowanie, likwidowanie, tworzenie kopii zapasowych i odzyskiwanie.
  • Są one niezbędne do celów bezpieczeństwa. W przypadku wystąpienia zdarzenia zabezpieczeń kluczowe znaczenie ma szybkie identyfikowanie systemów, których dotyczy problem, funkcje obsługiwane przez te systemy oraz potencjalny wpływ na działalność biznesową.

Aby uzyskać więcej informacji na temat używania konwencji nazewnictwa dla zasobów w chmurze, zobacz Definiowanie konwencji nazewnictwa. Aby uzyskać więcej informacji na temat stosowania tagów metadanych do zasobów w chmurze, zobacz Definiowanie strategii tagowania.

Ułatwienia platformy Azure

  • Azure DevOps to zbiór usług, których można użyć do tworzenia wspólnej, wydajnej i spójnej praktyki programistycznej. Usługa Azure DevOps łączy następujące rozwiązania:

    • Usługa Azure Pipelines udostępnia usługi kompilacji i wydania do obsługi ciągłej integracji/ciągłego wdrażania aplikacji.

    • Usługa Azure Boards to internetowe narzędzie do zarządzania pracą, które obsługuje rozwiązania Agile, takie jak Scrum i Kanban.

    • Azure Repos to narzędzie do kontroli wersji, które obsługuje rozproszony system kontroli wersji git i system Kontrola wersji serwera Team Foundation.

    • Plany testów platformy Azure to oparte na przeglądarce rozwiązanie do zarządzania testami, które zapewnia funkcje wymagane do zaplanowanego testowania ręcznego, testowania akceptacyjnego użytkownika, testowania eksploracyjnego i zbierania opinii od uczestników projektu.

    • Usługa Azure Artifacts umożliwia deweloperom efektywne udostępnianie kodu i zarządzanie pakietami.

  • Funkcja GitHub Actions dla platformy Azure to narzędzie, za pomocą którego można zautomatyzować procesy ciągłej integracji/ciągłego wdrażania. Integruje się bezpośrednio z platformą Azure, aby uprościć wdrożenia. Możesz tworzyć przepływy pracy, które kompilują i testują każde żądanie ściągnięcia do repozytorium lub wdrażają scalone żądania ściągnięcia w środowisku produkcyjnym.

  • GitHub Projects to narzędzie do zarządzania pracą, za pomocą którego można tworzyć tablice Kanban, raporty, pulpity nawigacyjne i inne funkcje.

  • Narzędzia z małą ilością kodu i bez kodu obejmują:

  • Szablony usługi Azure Resource Manager i Bicep to narzędzia natywne dla platformy Azure, których można użyć do wdrożenia IaC. Terraform to inne narzędzie IaC obsługiwane przez platformę Azure, którego można użyć do wdrażania infrastruktury i zarządzania nią.

  • Visual Studio to niezawodne narzędzie programistyczne, które integruje się z platformą Azure i obsługuje wiele języków.

  • GitHub Copilot to usługa sztucznej inteligencji, która działa jako programista par i udostępnia sugestie dotyczące stylu autouzupełniania podczas programowania. Copilot jest dostępny jako rozszerzenie w programie Visual Studio i kilku innych narzędziach programistycznych.

  • Testowanie obciążenia platformy Azure to w pełni zarządzana usługa testowania obciążenia, której można użyć do generowania dużego obciążenia przez symulowanie ruchu dla aplikacji, niezależnie od tego, gdzie są hostowane.

Dopasowanie organizacji

Przewodnik Cloud Adoption Framework dla platformy Azure zawiera ogólne wytyczne i zalecenia dotyczące tagowania i nazewnictwa zasobów platformy Azure, a także konkretne reguły i przykłady dla różnych typów zasobów.

Lista kontrolna doskonałości operacyjnej

Zapoznaj się z pełnym zestawem zaleceń.