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.
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.
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
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.
Pobierz aplikację usługi Azure Migrate i ocenę kodu dla środowiska Java 6.3.0.9. Zaktualizowano 2024-08-06.
Aby uzyskać więcej informacji, zobacz sekcję Informacje o wersji.
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.
Do pobrania są również dostępne następujące poprzednie wersje:
- Ocena aplikacji i kodu usługi Azure Migrate dla języka Java 6.3.0.8. Wydany w marcu 2024 r.
- Ocena aplikacji i kodu usługi Azure Migrate dla języka Java 6.3.0.7. Wydany w listopadzie 2023 r.
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.
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
.
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.
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.
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.
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.
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.
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
.
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.
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.
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.
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 appcat
systemie 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ą appcat
polecenia 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.
Kompletny przewodnik tworzenia reguł jest dostępny w azure.github.io/appcat-docs/rules-development-guide.
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.
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 appcat
polecenia , dając im możliwość wybrania tylko elementów docelowych, które mają znaczenie.
Ogólnie dostępna wersja aplikacji i kodu usługi Azure Migrate.
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.
.: 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 appcat
katalog 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.