Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Ocena aplikacji i kodu usługi Azure Migrate dla języka Java

W tym przewodniku opisano sposób używania narzędzia do oceny aplikacji i kodu usługi Azure Migrate dla języka Java w celu oceny i ponownego tworzenia platformy dowolnego typu aplikacji Java. Narzędzie umożliwia ocenę gotowości aplikacji do ponownego tworzenia i migracji na platformę Azure. To narzędzie jest oferowane jako interfejs wiersza polecenia (interfejs wiersza polecenia) i ocenia pliki binarne aplikacji Java i kod źródłowy w celu zidentyfikowania możliwości ponownego tworzenia i migracji dla platformy Azure. Pomaga to zmodernizować i ponownieplatformować aplikacje Java na dużą skalę, identyfikując typowe przypadki użycia i wzorce kodu oraz proponując zalecane zmiany.

Narzędzie odnajduje użycie technologii aplikacji za pomocą statycznej analizy kodu, zapewnia szacowanie nakładu pracy i przyspiesza ponowne tworzenie kodu, pomagając w określaniu priorytetów i przenoszeniu aplikacji Java na platformę Azure. Zestaw aparatów i reguł umożliwia odnajdywanie i ocenianie różnych technologii, takich jak Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) i nie tylko. Następnie ułatwia ponowne łączenie aplikacji Java z różnymi obiektami docelowymi platformy Azure (aplikacja systemu Azure Service, Azure Kubernetes Service i Azure Container Apps) przy użyciu określonych reguł ponownego tworzenia platformy Azure.

To narzędzie jest open source i opiera się na WindUp, projekcie utworzonym przez firmę Red Hat i opublikowanym w ramach publicznej licencji eclipse.

Omówienie

Narzędzie zostało zaprojektowane w celu ułatwienia organizacjom modernizacji aplikacji Java w sposób, który zmniejsza koszty i umożliwia szybsze innowacje. Narzędzie używa zaawansowanych technik analizy do zrozumienia struktury i zależności dowolnej aplikacji Java oraz zawiera wskazówki dotyczące refaktoryzacji i migrowania aplikacji na platformę Azure.

Za jego pomocą można wykonywać następujące zadania:

  • Odkrywanie użycia technologii: Szybko sprawdź, które technologie używa aplikacja. Odnajdywanie jest przydatne, jeśli masz starsze aplikacje z nie dużą ilością dokumentacji i chcesz wiedzieć, które technologie używają.
  • Ocena kodu do określonego celu: Ocena aplikacji pod kątem określonego celu platformy Azure. Sprawdź nakład pracy i modyfikacje, które należy wykonać, aby ponownieplatformować aplikacje na platformie Azure.

Obsługiwane obiekty docelowe

Narzędzie zawiera reguły ułatwiające ponowne splatformowania aplikacji, dzięki czemu można wdrażać i używać różnych usług platformy Azure.

Reguły używane przez aplikację usługi Azure Migrate i ocenę kodu są grupowane na podstawie elementu docelowego. Element docelowy to miejsce, w którym działa aplikacja, oraz ogólne potrzeby i oczekiwania. Podczas oceniania aplikacji można wybrać wiele obiektów docelowych. W poniższej tabeli opisano dostępne elementy docelowe:

Obiekt docelowy opis ID
Azure App Service Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze aplikacja systemu Azure Service. azure-appservice
Azure Kubernetes Service Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze Azure Kubernetes Service. azure-aks
Azure Container Apps Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze Azure Container Apps. azure-container-apps
Gotowość do chmury Ogólne najlepsze rozwiązania dotyczące przygotowania chmury aplikacji (Azure). cloud-readiness
Odnajdowanie Identyfikuje użycie technologii, takie jak biblioteki i struktury. discovery
Linux Ogólne najlepsze rozwiązania dotyczące przygotowania aplikacji do systemu Linux. linux
OpenJDK 11 Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 8 z językiem Java 11. openjdk11
OpenJDK 17 Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 11 z językiem Java 17. openjdk17
OpenJDK 21 Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 17 z językiem Java 21. openjdk21

Gdy narzędzie oceni gotowość do chmury i powiązane usługi platformy Azure, może również zgłosić przydatne informacje dotyczące potencjalnego użycia różnych usług platformy Azure. Poniższa lista zawiera kilka omówionych usług:

  • Bazy danych platformy Azure
  • Azure Service Bus
  • Azure Storage
  • Azure Content Delivery Network
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Pobierz

Aby użyć interfejsu appcat wiersza polecenia, należy pobrać plik ZIP opisany w następnej sekcji i mieć na komputerze zgodną instalację zestawu JDK 11 lub JDK 17. Interfejs appcat wiersza polecenia działa w dowolnym środowisku zgodnym z językiem Java, takim jak Windows, Linux lub Mac, zarówno dla sprzętu Intel, Arm, jak i Apple Silicon. Zalecamy użycie zestawu Microsoft Build of OpenJDK.

Aby uzyskać więcej informacji, zobacz sekcję Informacje o wersji.

Znane problemy

Niektóre reguły mogą nie być wyzwalane podczas analizowania określonych wyrażeń lambda. Aby uzyskać więcej informacji, zobacz problem z usługą GitHub.

Uruchomienie appcat w środowisku innym niż Unicode ze złożonymi znakami dwubajtowymi spowoduje uszkodzenie. Aby uzyskać obejścia, zobacz problem z usługą GitHub.

Poprzednie wersje

Do pobrania są również dostępne następujące poprzednie wersje:

Rozpocznij

Aby uruchomić polecenie appcat, upewnij się, że masz zainstalowany obsługiwany zestaw JDK. Narzędzie obsługuje następujące zestawy JDK:

  • Microsoft Build of OpenJDK 11
  • Microsoft Build of OpenJDK 17
  • Eclipse Temurin™ JDK 11
  • Eclipse Temurin™ JDK 17

Po zainstalowaniu prawidłowego zestawu JDK upewnij się, że jego katalog instalacyjny jest poprawnie skonfigurowany w zmiennej środowiskowej JAVA_HOME .

Aby kontynuować, pobierz i rozpakuj pakiet w wybranym folderze. Następnie uzyskasz następującą strukturę katalogów:

appcat-cli-<version>    # APPCAT_HOME
  ├── README.md
  ├── bin
  │   ├── appcat
  │   └── appcat.bat
  ├── docs
  │   └── appcat-guide.html
  └── samples
      ├── airsonic.war
      ├── run-assessment
      ├── run-assessment-custom-rules
      ├── run-assessment-exclude-packages
      ├── run-assessment-no-code-report
      ├── run-assessment-openjdk21
      ├── run-assessment-zip-report
      └── run-discovery
  • docs: ten katalog zawiera dokumentację programu appcat.
  • bin: ten katalog zawiera pliki wykonywalne interfejsu appcat wiersza polecenia (dla systemu Windows/Linux/Mac).
  • przykłady: ten katalog zawiera przykładową aplikację i kilka skryptów do uruchomienia appcat względem przykładowej aplikacji.

Aby uruchomić narzędzie, otwórz sesję terminalu i wpisz następujące polecenie z katalogu $APPCAT_HOME/bin :

./appcat --help

Aby uruchomić narzędzie z dowolnego miejsca na komputerze, skonfiguruj katalog $APPCAT_HOME/bin w PATH zmiennej środowiskowej, a następnie uruchom ponownie sesję terminalu.

Dokumentacja

Poniższe przewodniki zawierają główną dokumentację dla appcat języka Java:

Odkrywanie użycia technologii i gotowości do chmury bez konieczności myślenia o usłudze platformy Azure

Odnajdywanie technologii i celów gotowości do chmury zapewnia doskonały wgląd w ponowne tworzenie i modernizację aplikacji w chmurze. Narzędzie skanuje aplikację i jej składniki w celu uzyskania kompleksowego zrozumienia jego struktury, architektury i zależności. Znajduje również potencjalne problemy, które mogą być trudne w środowisku chmury. W szczególności element docelowy discovery służy do tworzenia szczegółowego spisu aplikacji i jej składników. Ten spis stanowi podstawę dalszej analizy i planowania. Aby uzyskać więcej informacji, zobacz sekcję Raport odnajdywania.

Użyj następującego polecenia, aby zainicjować odnajdywanie i gotowość do chmury:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target discovery cloud-readiness

Ten typ raportu jest przydatny, gdy nie masz określonej usługi platformy Azure, aby wdrożyć aplikację.

Narzędzie zawsze wykonuje discovery niezależnie od tego, czy uwzględnisz tę wartość w parametrze --target .

Ocena aplikacji Java

Faza oceny polega na appcat tym, że interfejs wiersza polecenia analizuje aplikację i jej składniki w celu określenia jego przydatności do ponownego ponownego użycia oraz identyfikowania potencjalnych wyzwań lub ograniczeń. Ta faza obejmuje analizowanie kodu aplikacji i sprawdzanie zgodności z wybranymi elementami docelowymi.

Możesz wybrać wiele obiektów docelowych przy użyciu rozdzielanej spacjami listy wartości z argumentem --target .

Aby sprawdzić dostępne elementy docelowe, uruchom następujące polecenie:

./appcat --listTargetTechnologies

To polecenie generuje dane wyjściowe podobne do następującego przykładu:

Available target technologies:
    azure-aks
    azure-appservice
    azure-container-apps
    cloud-readiness
    discovery
    linux
    openjdk11
    openjdk17
    openjdk21

Następnie można uruchomić appcat polecenie przy użyciu jednej lub kombinacji dostępnych obiektów docelowych, jak pokazano w poniższym przykładzie:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target cloud-readiness linux azure-appservice

Można również uruchomić appcat z jednym z dostępnych obiektów docelowych OpenJDK, jak pokazano w poniższym przykładzie:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target openjdk11

W przypadku obiektów docelowych OpenJDK (Java) zalecamy wybranie tylko jednego naraz.

Zalecenie dotyczące celów oceny platformy Azure

Za każdym razem, gdy oceniasz aplikację na potrzeby wdrożenia platformy Azure, zalecamy rozpoczęcie od następujących celów:

  • discovery
  • cloud-readiness

Ponadto określ usługę platformy Azure do wdrożenia, taką jak azure-appservice lub azure-container-apps.

Jeśli zamierzasz przenieść aplikację ze środowiska systemu Windows do maszyny wirtualnej lub kontenera systemu Linux, zalecamy również dodanie linux elementu docelowego.

Jeśli zamierzasz przenieść aplikację ze starszej wersji zestawu JDK do nowszej wersji, zalecamy wybranie następnej wersji głównej w porównaniu z poprzednią wersją używaną przez aplikację. Na przykład użyj polecenia openjdk11 , gdy aplikacja jest obecnie wdrożona z językiem Java 8.

Pobieranie wyników z serwera appcat

Wynikiem faz odnajdywania i oceny jest szczegółowy raport, który zawiera harmonogram ponownego tworzenia i modernizacji aplikacji Java, w tym rekomendacje dotyczące usługi platformy Azure i podejścia do ponownego tworzenia platformy Azure. Raport służy jako podstawa dla następnego etapu procesu ponownego tworzenia platformy. Pomaga to organizacjom poznać nakład pracy wymagany do takiej transformacji i podejmować decyzje dotyczące sposobu modernizacji aplikacji w celu uzyskania maksymalnych korzyści.

Raport wygenerowany przez appcat program zawiera kompleksowe omówienie aplikacji i jej składników. Ten raport umożliwia uzyskanie wglądu w strukturę i zależności aplikacji oraz określenie jego przydatności do ponownego tworzenia i modernizacji.

Poniższe sekcje zawierają więcej informacji na temat raportu.

Podsumowanie analizy

Strona docelowa raportu zawiera listę wszystkich technologii używanych w aplikacji. Pulpit nawigacyjny zawiera podsumowanie analizy, w tym liczbę zdarzeń transformacji, kategorie zdarzeń lub punkty scenariusza.

Zrzut ekranu przedstawiający raport podsumowania appcat.

Po powiększ wykres kołowy Incydenty według kategorii, możesz zobaczyć liczbę zdarzeń według kategorii: Obowiązkowe, Opcjonalne, Potencjalne i Informacje.

Na pulpicie nawigacyjnym są również wyświetlane punkty historii. Punkty scenariusza to abstrakcyjna metryka często używana w tworzeniu oprogramowania Agile w celu oszacowania poziomu nakładu pracy potrzebnego do zaimplementowania funkcji lub zmiany. appcat używa punktów scenariusza, aby wyrazić poziom nakładu pracy potrzebnego do migracji określonej aplikacji. Punkty scenariuszy niekoniecznie przekładają się na godziny pracy, ale wartość powinna być spójna między zadaniami.

Zrzut ekranu przedstawiający raport zdarzeń podsumowania usługi AppCAT.

Raport odnajdywania

Raport odnajdywania jest raportem wygenerowanym podczas fazy odnajdywania. Przedstawia listę technologii używanych przez aplikację w kategorii Informacje . Ten raport zawiera tylko informacje o użyciu technologii, które zostały odnalezione appcat .

Zrzut ekranu przedstawiający raport odnajdywania aplikacji appcat.

Raport z oceny

Raport oceny zawiera omówienie problemów z transformacją, które należy rozwiązać w celu przeprowadzenia migracji aplikacji na platformę Azure.

Te problemy, nazywane również zdarzeniami, mają ważność (obowiązkowe, opcjonalne, potencjalne lub informacyjne), poziom nakładu pracy i liczbę wskazującą punkty historii. Punkty scenariusza są określane przez obliczenie liczby zdarzeń, w których nakład pracy wymagany do rozwiązania problemu.

Zrzut ekranu przedstawiający raport oceny appCAT.

Szczegółowe informacje dotyczące konkretnego problemu

Dla każdego zdarzenia możesz uzyskać więcej informacji (szczegóły problemu, zawartość reguły itd.), wybierając je tylko. Zostanie również wyświetlona lista wszystkich plików, których dotyczy to zdarzenie.

Zrzut ekranu przedstawiający raport szczegółów problemu appCAT.

Następnie dla każdego pliku lub klasy, której dotyczy zdarzenie, możesz przejść do kodu źródłowego, aby wyróżnić wiersz kodu, który utworzył problem.

Zrzut ekranu przedstawiający raport kodu problemu appCAT.

Reguły niestandardowe

Można traktować appcat jako aparat reguł. Używa reguł do wyodrębniania plików z archiwów Java, dekompilowania klas Java, skanowania i klasyfikowania typów plików, analizowania tych plików i kompilowania raportów. W appcatsystemie reguły są definiowane w postaci zestawu reguł. Zestaw reguł to zbiór poszczególnych reguł, które definiują określone problemy lub wzorce, które appcat mogą wykrywać podczas analizy.

Te reguły są definiowane w formacie XML i używają następującego wzorca reguły:

when (condition)
    perform (action)
    otherwise (action)

appcat zapewnia kompleksowy zestaw standardowych reguł migracji. Ponieważ aplikacje mogą zawierać biblioteki niestandardowe lub składniki, appcat umożliwia pisanie własnych reguł w celu zidentyfikowania użycia składników lub oprogramowania, które mogą obejmować istniejący zestaw reguł.

Aby napisać regułę niestandardową, należy użyć zaawansowanego języka specyficznego dla domeny (DLS) wyrażonego w formacie XML. Załóżmy na przykład, że chcesz użyć sterownika JDBC postgreSQL w aplikacji Java i sugeruje użycie serwera elastycznego Usługi Azure PostgreSQL. Potrzebujesz reguły, aby znaleźć sterownik JDBC postgreSQL zdefiniowany w pliku pom.xml Narzędzia Maven lub pliku Gradle, na przykład zależność pokazana w poniższym przykładzie:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

Aby wykryć użycie tej zależności, reguła używa następujących tagów XML:

  • ruleset: unikatowy identyfikator zestawu reguł. Zestaw reguł to zbiór reguł, które są związane z określoną technologią.
  • targetTechnology: technologia docelowa reguły. W tym przypadku reguła jest przeznaczona dla usług aplikacja systemu Azure Services, Azure Kubernetes Service (AKS) i Azure Container Apps.
  • rule: element główny pojedynczej reguły.
  • when: Warunek, który musi zostać spełniony, aby reguła została wyzwolona.
  • perform: akcja, która ma zostać wykonana po wyzwoleniu reguły.
  • hint: Komunikat, który ma być wyświetlany w raporcie, jego kategorii (Informacje, Opcjonalne lub Obowiązkowe) i nakład pracy potrzebny do rozwiązania problemu, od 1 (łatwe) do 13 (trudne).

Poniższy kod XML przedstawia niestandardową definicję reguły:

<ruleset id="azure-postgre-flexible-server"
         xmlns="http://windup.jboss.org/schema/jboss-ruleset"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
    <metadata>
        <description>Recommend Azure PostgreSQL Flexible Server.</description>
        <dependencies>
            <addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final"/>
        </dependencies>
        <targetTechnology id="azure-appservice"/>
        <targetTechnology id="azure-aks"/>
        <targetTechnology id="azure-container-apps"/>
    </metadata>
    <rules>
        <rule id="azure-postgre-flexible-server">
            <when>
                <project>
                    <artifact groupId="org.postgresql" artifactId="postgresql"/>
                </project>
            </when>
            <perform>
                <hint title="Azure PostgreSQL Flexible Server" category-id="mandatory" effort="7">
                    <message>The application uses PostgreSQL. It is recommended to use Azure PostgreSQL Flexible Server instead.</message>
                    <link title="Azure PostgreSQL Flexible Server documentation" href="https://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
                </hint>
            </perform>
        </rule>
    </rules>
</ruleset>

Po wykonaniu tej reguły za pomocą appcatpolecenia uruchom ponownie analizę, aby przejrzeć wygenerowany raport. Podobnie jak w przypadku innych zdarzeń, raport oceny zawiera listę zidentyfikowanych problemów i plików, których dotyczy ta reguła.

Zrzut ekranu serwera appcat z wykonywaną regułą.

Kompletny przewodnik tworzenia reguł jest dostępny w azure.github.io/appcat-docs/rules-development-guide.

Informacje o wersji

6.3.0.9

Ta wersja zawiera następujące poprawki i zawiera zestaw nowych reguł. Aby uzyskać więcej informacji, zobacz poniżej.

  • Rozwiązano problem z regułą localhost-java-00001 .
  • Wprowadzono nowe reguły identyfikowania technologii, takich jak AWS S3, AWS SQS, Alibaba system operacyjny w chmurze S, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata i Alibaba Rocket MQ.
  • Zaktualizowano element , azure-file-system-02000 aby teraz obsługiwał rozszerzenia plików XML.
  • Uaktualniono różne biblioteki, aby rozwiązać problem z lukami w zabezpieczeniach.

6.3.0.8

Wcześniej zestaw celów był domyślnie włączony, co utrudnia niektórym klientom ocenę dużych aplikacji z zbyt dużą liczbą zdarzeń związanych z mniej krytycznymi problemami. Aby zmniejszyć liczbę szumów w raportach, użytkownicy muszą teraz określić wiele obiektów docelowych, z parametrem --target, podczas wykonywania appcatpolecenia , dając im możliwość wybrania tylko elementów docelowych, które mają znaczenie.

6.3.0.7

Ogólnie dostępna wersja aplikacji i kodu usługi Azure Migrate.

Licencja

Ocena aplikacji i kodu usługi Azure Migrate dla języka Java to bezpłatne narzędzie typu open source bez ponoszenia kosztów i licencjonowane w ramach tej samej licencji co nadrzędny projekt WindUp.

Często zadawane pytania

.: Gdzie mogę pobrać najnowszą wersję aplikacji usługi Azure Migrate i oceny kodu dla języka Java?

Możesz pobrać appcat z aka.ms/appcat/azure-appcat-cli-latest.zip.

.: Gdzie mogę znaleźć więcej informacji na temat aplikacji usługi Azure Migrate i oceny kodu dla języka Java?

Po pobraniu pliku zostanie wyświetlony appcatkatalog docs zawierający wszystkie informacje potrzebne do rozpoczęcia pracy.

.: Gdzie mogę znaleźć określone reguły platformy Azure?

Wszystkie reguły platformy Azure są dostępne w repozytorium GitHub appcat Rulesets.

.: Gdzie można znaleźć więcej informacji na temat tworzenia reguł niestandardowych?

Zobacz Przewodnik tworzenia reguł dla aplikacji usługi Azure Migrate i oceny kodu dla języka Java.

.: Gdzie mogę uzyskać pomoc podczas tworzenia reguł niestandardowych?

Najlepszym sposobem uzyskania pomocy jest utworzenie problemu w repozytorium GitHub appcat-rulesets.