Udostępnij za pośrednictwem


Zalecenia dotyczące poprawy szybkości kompilacji

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.

Powiązane przewodniki: Zalecenia dotyczące standaryzacji narzędzi i procesów | Zalecenia dotyczące korzystania z ciągłej integracji

W tym przewodniku opisano zalecenia dotyczące poprawy wydajności infrastruktury wdrażania. Ważne jest, aby proces kompilacji był uruchamiany w pierwszym dniu opracowywania produktu. Kompilacje są pulsem systemu ciągłego dostarczania, ponieważ stan kompilacji jest wyświetlany, gdy produkt jest możliwy do wdrożenia. Kompilacje zawierają kluczowe informacje o stanie produktu, więc zawsze należy dążyć do szybkich kompilacji.

Trudno rozwiązać problem z kompilacją, jeśli kompilacja trwa dłużej. Gdy występują opóźnienia i stają się znormalizowane, zespoły stają się mniej zmotywowane do rozwiązania problemu.

Kluczowe strategie projektowania

Optymalizowanie czasów kompilacji

Aby szybciej wykonywać kompilacje, możesz wykonywać następujące czynności:

  • Wybierz agentów spełniających wymagania dotyczące wydajności: Przyspiesz kompilacje, wybierając odpowiednie maszyny kompilacji. Szybkie maszyny mogą mieć różnicę między godzinami i minutami. Jeśli potoki znajdują się w usłudze Azure Pipelines, możesz uruchamiać zadania przy użyciu agenta hostowanego przez firmę Microsoft. W przypadku korzystania z agentów hostowanych przez firmę Microsoft konserwacja i uaktualnienia są wykonywane dla Ciebie. Aby uzyskać więcej informacji, zobacz Agenci hostowani przez firmę Microsoft.

  • Zoptymalizuj lokalizację serwera kompilacji: podczas kompilowania kodu dane są wysyłane przez sieć. Dane wejściowe kompilacji są pobierane z repozytorium kontroli źródła i repozytorium artefaktów. Dane wyjściowe z procesu kompilacji należy skopiować, w tym skompilowane artefakty, raporty testowe, wyniki pokrycia kodu i symbole debugowania. Ważne jest, aby te akcje kopiowania były uruchamiane szybko. Jeśli używasz własnego serwera kompilacji, upewnij się, że serwer kompilacji znajduje się w pobliżu źródeł i lokalizacji docelowej. Szybkie przekazywanie i pobieranie może skrócić całkowity czas kompilacji.

  • Skalowanie serwerów kompilacji w poziomie: pojedynczy serwer kompilacji może być wystarczający dla małego produktu. W miarę wzrostu rozmiaru i zakresu produktu oraz liczby zespołów pracujących nad produktem pojedynczy serwer może nie być wystarczający. Skaluj infrastrukturę w poziomie na wiele maszyn po osiągnięciu limitu. Aby uzyskać więcej informacji, zobacz Tworzenie pul agentów i zarządzanie nimi.

  • Optymalizowanie kompilacji:

    • Dodaj zadania równoległe, aby przyspieszyć proces kompilacji. Aby uzyskać więcej informacji, zobacz Konfigurowanie zadań równoległych i płacenie za nie.

    • Włącz równoległe przebiegi zestawu testów, które często oszczędzają dużo czasu, zwłaszcza podczas uruchamiania testów integracji i interfejsu użytkownika. Aby uzyskać więcej informacji, zobacz Uruchamianie testów równolegle dla dowolnego modułu uruchamiającego testy.

    • Użyj pojęcia mnożnika, w którym można skalować kompilacje w poziomie na wielu agentach kompilacji. Aby uzyskać więcej informacji, zobacz Określanie zadań w potoku.

    • Rozważ przeniesienie integracji, interfejsu użytkownika i testów weryfikacyjnych kompilacji do potoku wydania. Przejście do potoku wydania zwiększa szybkość kompilacji i szybkość pętli opinii kompilacji.

    • Opublikuj artefakty kompilacji w rozwiązaniu do zarządzania pakietami, takim jak NuGet lub Maven. Publikowanie w rozwiązaniu do zarządzania pakietami umożliwia łatwiejsze ponowne użycie artefaktu kompilacji.

Minimalizowanie interwencji człowieka

Twoja organizacja może zdecydować się na utworzenie kilku różnych rodzajów kompilacji w celu zoptymalizowania czasów kompilacji. Możliwe kompilacje obejmują:

  • Kompilacja ciągłej integracji: celem tej kompilacji jest upewnienie się, że kod jest kompilowany, a testy jednostkowe są uruchamiane. Ta kompilacja jest wyzwalana przy każdym zatwierdzeniu. Służy on jako puls projektu i natychmiast przekazuje zespołowi opinię na temat jakości. Aby uzyskać więcej informacji, zobacz Określanie zdarzeń wyzwalających potoki.

  • Kompilacja nocna: Celem nocnej kompilacji jest nie tylko skompilowanie kodu, ale także zapewnienie większych zestawów testów, które są nieefektywne, uruchamiane regularnie dla każdej kompilacji. Zazwyczaj te testy obejmują integrację, interfejs użytkownika lub testy weryfikacyjne kompilacji. Aby uzyskać więcej informacji, zobacz Konfigurowanie harmonogramów dla potoków.

  • Kompilacja wydania: oprócz kompilowania i uruchamiania testów ta kompilacja kompiluje również dokumentację interfejsu API, raporty zgodności, podpisywanie kodu i inne kroki, które nie są wymagane za każdym razem, gdy kod jest kompilowany. Ta kompilacja udostępnia złotą kopię wypchniętą do potoku wydania, aby ostatecznie wdrożyć ją w środowisku produkcyjnym.

Typy kompilacji wymaganych przez organizację zależą od czynników, w tym dojrzałości zespołu i organizacji, rodzaju produktu, nad którym pracujesz, oraz strategii wdrażania.

Ułatwienia platformy Azure

Azure DevOps to zbiór usług, które ułatwiają tworzenie wspólnej, wydajnej i spójnej praktyki programistycznej.

Usługa Azure Pipelines umożliwia tworzenie i wydawanie usług w celu obsługi ciągłej integracji i ciągłego dostarczania (CI/CD) aplikacji.

Użyj funkcji GitHub Actions dla platformy Azure , aby zautomatyzować procesy ciągłej integracji/ciągłego wdrażania i zintegrować je bezpośrednio z platformą Azure, aby uprościć wdrożenia. Możesz również 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 przy użyciu funkcji GitHub Actions dla platformy Azure.

Agenci hostowani przez firmę Microsoft są dostępni natywnie w usłudze Azure Pipelines. Ci agenci to maszyny wirtualne z jednym użyciem, które są używane tylko dla jednego zadania, a następnie odrzucane, co zapewnia łatwą do zarządzania opcję kompilacji.

Lista kontrolna doskonałości operacyjnej

Zapoznaj się z pełnym zestawem zaleceń.