Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy tego zalecenia z listy kontrolnej dotyczącej doskonałości operacyjnej platformy Azure Well-Architected Framework:
OE:04 | Optymalizacja procesów projektowania oprogramowania i zapewnienia jakości przez następujące sprawdzone w tej branży metody projektowania i testowania. W celu jednoznacznego określenia roli należy ustandaryzować metody postępowania w przypadku takich składników, jak narzędzia, kontrola źródła, wzorce projektowe aplikacji, dokumentacja i przewodniki stylu. |
---|
W tym przewodniku opisano zalecenia dotyczące definiowania standardów dla narzędzi i procesów tworzenia oprogramowania. Zdefiniowanie spójnych praktyk powoduje, że praca zespołu jest efektywniej i wysokiej jakości. Zespoły o wysokiej wydajności używają sprawdzonych w tej branży narzędzi i procesów w celu zminimalizowania niechętnych nakładów pracy i potencjalnych błędów w kodzie.
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 standaryzujesz, wdroż szkolenia, aby zespoły zrozumiały je i używały efektywnie. Aby zdefiniować standardy pomocne w optymalizowaniu rozwiązań projektowych, należy rozważyć następujące zalecenia.
Korzystanie z dobrze znanych i dojrzałych narzędzi gotowych
Używaj dobrze znanych i dojrzałych gotowych narzędzi oraz standaryzuj ich użycie. Wydajne zespoły inżynieryjne to najlepsze w tej klasy 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 backlogami
Kontrola wersji i repozytoria
Potoki CI/CD
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 zawierać 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. Rozważ czas i nakład pracy nad opracowaniem własnych rozwiązań i porównaniu go z funkcjami dostępnymi w zestawach narzędzi o najwyższej klasy. Uwzględnianie kosztów jednorazowych w stosunku do kosztów cyklicznych. W większości przypadków narzędzia do niespodowania zapewniają zespołowi wyższą wartość.
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 odpowiedzialnego za obciążenie, którzy mogą nie być przeszkoleni jako programiści, uczestniczenie w operacjach obciążenia. Narzędzia AI mogą pomagać w rozbudowie kodu, przeglądach i optymalizacji.
Standaryzacja strategii rozgałęziania
Wybierz model oparty na magistrali, jeśli jest to możliwe. Rozgałęzianie bazowe utrzymuje zespół rozwijający oprogramowanie przy jednoczesnym działaniu 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 Przyjęcie strategii rozgałęzień Git oraz zasady i ustawienia 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 zmierzyć efektywność, muszą zidentyfikować metryki, które mierzą tempo rozwoju deweloperów i określić kluczowe wskaźniki efektywnoś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 pomóc interesariuszom i zespołowi obsługi obciążenia, można łatwo śledzić śledzenia, wizualizację wskaźników KPI za pomocą pulpitów nawigacyjnych i innych narzędzi do raportowania.
Standaryzacja zapisu kodu przez zespół prac pracowych, opisania i opisania kodu dokumentów przez zespół prac
Standaryzacja zapisu kodu przez zespół prac pracowych, opisania i opisania kodu dokumentów przez zespół prac, używając przewodnika po stylach. Standardowy styl ułatwia współpracę i ułatwia nowe deweloperom. Aby działać skutecznie, nowi deweloperzy muszą wiedzieć, jak działa zespół obsługi obciążenia. Przewodnik stylu z dobrze zdefiniowanymi standardami może ułatwić proces szkolenia. 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 uruchomień.
Należy również ustawić wytyczne i standardy dla dozwolonego stopnia wariancji w środowiskach. Jeśli istnieją nowe języki, frameworky lub inne technologie, które członkowie zespołu ds. obciążenia chcą dodać do standardowej listy, zaimplementuj proces używania tych narzędzi w piaskownicy lub środowisku testowym. Przetestuj ich rentowność i w razie potrzeby zastąp istniejące technologie.
Użyj rejestrów decyzji architektonicznych (ADR), aby zachować historyczny zapis decyzji zespołu projektowego ds. obciążenia. ADR-y pomagają zespołom w utrzymaniu świeżego zrozumienia obciążenia roboczego. 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 rejestry decyzji architektonicznych są kontrolowane pod względem wersji.
W 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 rezultatów zespołu ds. zarządzania obciążeniem. Ten sposób namysłowania motywuje zespół do regularnego rozważania i rozwiązania technicznego, aby uniknąć tego problemy. Należy rozwiązać problemy techniczne jako regularnie powtarzające się zadania w backlogu.
Załóżmy na przykład, że twój zespół ustandaryzował bibliotekę. Z czasem trzeba przełączyć się na inną bibliotekę, aby uzyskać nowe funkcje w pracy. To przejście może spowodować dług techniczny. Często takie przejścia mogą pozostawić zespół roboczy obsługujący dwie technologie, ponieważ nie mogą w pełni płynnie przejść. Zespół ds. zarządzania obciążeniami musi nadać priorytet dokończeniu przejścia, ponieważ gdy obciążenie uzyska nowe funkcjonalności, interesariusze będą zadowoleni i mniej prawdopodobne jest, że będą rozważać dług techniczny.
Standaryzacja sposobu stosowania wersjonowania do artefaktów
Standaryzuj, jak stosujesz wersjonowanie swoich artefaktów oraz jak wersje są udostępniane wewnętrznie i zewnętrznie. Na przykład systemy klienckie powinny uwidocznić uruchomioną wersję w interfejsie użytkownika. Ta technika jest przydatna, gdy zespół do spraw obciążenia pracą rozwiązuje problemy, ponieważ klient może łatwo wskazać, której wersji używa. 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 będą korzystne dla użytkownika. Regularnie przeglądaj wzorce projektowe, aby upewnić się, że używasz odpowiednich wzorców w miarę rozwoju obciążenia.
Implementowanie podejścia opartego na lewej zmiany do testowania
Implementuj podejście oparte na lewej zmiany do testowania, wykonując testy jednostek na wczesnym etapie projektowania. Częste testy w każdym środowisku projektowym pomagają deweloperom w nabraniu zaufania do swoich aplikacji. Aby pomóc w utworzeniu strategii testowania przy użyciu podejścia opartego na lewej zmianie, należy wziąć pod uwagę następujące zasady:
Pisanie testów na najniższym możliwym poziomie. Preferowanie testów przy użyciu najmniejszej zależności zewnętrznych i uruchamianie testów w ramach kompilacji.
Pisz testy tylko raz, a uruchamiaj je wszędzie, w tym także w środowisku produkcyjnym. Zapisz testy, które można uruchomić w każdym środowisku projektowym bez względu na czynniki specyficzne dla jednego środowiska, np. szyfrowane tajne dane lub konfiguracje.
Zaprojektuj obciążenie pod kątem testowania. Podczas opracowywania aplikacji należy wykonać wymaganie dotyczące testów.
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ść testów, która bazuje na zarządzaniu obciążeniem. Twój zespół ds. obciążeń jest właścicielem testów i nie powinien polegać na innych zespołach do testowania kodu.
Automatyzuj testy tak dużo jak to możliwe. Zautomatyzowany kod zmniejsza obciążenie zespołu obsługi i wymusza spójną jakość.
Zaimplementuj różne typy testów, takie jak testy jednostkowe, testy dymne, testy integracyjne i testy akceptacyjne. Aby zapoznać się ze szczegółowym przeglądem tych typów testów, skonsultuj sekcję testowania przewodnika rekomendacyjnego dotyczącego łańcucha dostaw związanego z obciążeniem.
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. Azure DevOps wiąże dostępne następujące rozwiązania:
Azure Pipelines zapewnia usługi związane z budowaniem i dystrybucją, wspierając ciągłą integrację i ciągłe wdrażanie (CI/CD) Twoich 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 kontroli wersji programu 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żdą prośbę o pobranie do repozytorium, lub wdrażają połączone prośby o pobranie do środowiska produkcyjnego.
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.
Powiązane linki
- Adopt a Git branching strategy (Stosowanie strategii rozgałęziania systemu Git)
- Zasady i ustawienia gałęzi
- wzorce projektowe chmury
- Szybkość pracy deweloperów
- Opracowywanie strategii nazewnictwa i tagowania dla zasobów platformy Azure
- centrum zasobów DevOps
- Włączanie usługi DevSecOps za pomocą platformy Azure i usługi GitHub
- Omówienie analizy kodu źródłowego
- Przewodnik cyklu życia programowania zabezpieczeń
- Zabezpieczenia w usłudze DevOps (DevSecOps)
- Testowanie przesunięcia w lewo z testami jednostkowymi
- Seria wideo: Wprowadzenie do rozwiązania GitHub CoPilot
Lista kontrolna doskonałości operacyjnej
Zapoznaj się z pełnym zestawem zaleceń.