Share via


Java용 Azure Migrate 애플리케이션 및 코드 평가

이 가이드에서는 Java용 Azure Migrate 애플리케이션 및 코드 평가 도구를 사용하여 모든 형식의 Java 애플리케이션을 평가하고 다시 플랫폼화하는 방법을 설명합니다. 이 도구를 사용하면 플랫폼을 변경하고 Azure로 마이그레이션하기 위한 애플리케이션 준비 상태를 평가할 수 있습니다.

appcat는 Java 애플리케이션 이진 파일 및 소스 코드를 평가하여 Azure에 대한 플랫폼 변경 및 마이그레이션 기회를 식별하는 Azure Migrate의 명령줄 도구입니다. 일반적인 사용 사례와 코드 패턴을 식별하고 권장 변경 내용을 제안함으로써 대규모 Java 애플리케이션을 현대화하고 플랫폼을 변경하는 데 도움이 됩니다.

appcat는 정적 코드 분석을 통해 애플리케이션 기술 사용을 발견하고, 활동 예측을 지원하고, 코드 플랫폼 변경을 가속화하여 Java 애플리케이션을 Azure로 이동하는 데 도움을 줍니다. 일련의 엔진과 규칙을 통해 Java 11, Java 17, Jakarta EE 10, Quarkus, Spring 등과 같은 다양한 기술을 발견하고 평가할 수 있습니다. 그런 다음 특정 Azure 플랫폼 변경 규칙을 사용하여 Java 애플리케이션을 다른 Azure 대상(Azure App Service, Azure Kubernetes Service, Azure Container Apps 및 Azure Spring Apps)으로 플랫폼을 변경하는 데 도움이 됩니다.

appcat는 오픈 소스이며 Red Hat에서 만들고 Eclipse Public License에 따라 게시된 프로젝트인 WindUp을 기반으로 합니다.

Azure Migrate 애플리케이션 및 코드 평가는 언제 사용해야 하나요?

appcat는 조직이 비용을 절감하고 더 빠른 혁신을 가능하게 하는 방식으로 Java 애플리케이션을 현대화하는 데 도움을 주기 위해 설계되었습니다. 이 도구는 고급 분석 기술을 사용하여 Java 애플리케이션의 구조와 종속성을 이해하고 애플리케이션을 리팩터링하고 Azure로 마이그레이션하는 방법에 대한 지침을 제공합니다.

appcat를 사용하면 다음 작업을 수행할 수 있습니다.

  • 기술 사용 검색: 애플리케이션이 사용하는 기술을 빠르게 확인합니다. 설명서가 많지 않은 레거시 애플리케이션이 있고 해당 애플리케이션이 사용하는 기술을 알고 싶은 경우 검색이 유용합니다.
  • 특정 대상에 대한 코드 평가: 특정 Azure 대상에 대한 애플리케이션을 평가합니다. 애플리케이션을 Azure로 다시 플랫폼화하기 위해 수행해야 하는 활동과 수정 사항을 확인합니다.

지원되는 Azure 대상

이 도구에는 다음 Azure 서비스를 배포하고 사용할 수 있도록 애플리케이션을 다시 플랫폼화하는 데 도움이 되는 규칙이 포함되어 있습니다.

다음 서비스를 배포 대상으로 사용할 수 있습니다.

  • Azure App Service
  • Azure Spring Apps
  • Azure Kubernetes Service
  • Azure Container Apps
  • 클라우드 준비
  • 검색
  • Linux
  • openjdk11
  • openjdk17
  • openjdk21

다음 서비스를 리소스 서비스로 사용할 수 있습니다.

  • Azure 데이터베이스
  • Azure Service Bus
  • Azure Storage
  • Azure CDN
  • Azure Event Hubs
  • Azure Key Vault

Java용 Azure Migrate 애플리케이션 및 코드 평가 사용

appcat를 사용하려면 다음 섹션에 설명된 ZIP 파일을 다운로드해야 하며 컴퓨터에 호환 가능한 JDK 11+가 설치되어 있어야 합니다. appcat는 Intel, Arm 및 Apple Silicon 하드웨어용 Windows, Linux 또는 Mac에서 실행됩니다. OpenJDK의 Microsoft 빌드를 사용하여 appcat를 실행할 수 있습니다.

다운로드

appcat CLI는 aka.ms/appcat/azure-appcat-cli-latest.zip에서 ZIP 파일로 다운로드할 수 있습니다.

appcat 실행

원하는 폴더에 Zip 파일의 압축을 푼다. 그러면 다음과 같은 디렉터리 구조가 표시됩니다.

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: 이 디렉터리에는 appcat의 설명서가 포함되어 있습니다.
  • bin: 이 디렉터리에는 appcat CLI 실행 파일(Windows/Linux/Mac용)이 포함되어 있습니다.
  • samples: 이 디렉터리에는 샘플 애플리케이션과 샘플 애플리케이션에 대해 appcat를 실행하기 위한 여러 스크립트가 포함되어 있습니다.

도구를 실행하려면 터미널 세션을 열고 $APPCAT_HOME/bin 디렉터리에서 다음 명령을 입력합니다.

./appcat --help

컴퓨터 어디에서나 도구를 실행하려면 $APPCAT_HOME/bin 디렉터리를 PATH 환경 변수로 구성한 다음 터미널 세션을 다시 시작합니다.

설명서

다음 가이드는 Java용 appcat에 대한 기본 설명서를 제공합니다.

Azure 대상을 염두에 두지 않고 기술 사용량을 발견합니다.

기술의 검색은 애플리케이션 재플랫폼 및 현대화의 첫 번째 단계입니다. 검색 단계에서 appcat는 애플리케이션과 해당 구성 요소를 발견하여 애플리케이션의 구조, 아키텍처 및 종속성에 대한 포괄적인 이해를 얻습니다. 이 정보는 추가 분석 및 계획을 위한 기초로 사용되는 애플리케이션 및 해당 구성 요소의 상세 인벤토리를 만드는 데 사용됩니다(검색 보고서 섹션 참조).

검색을 시작하려면 다음 명령을 사용합니다.

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

검색 단계는 특정 Azure 대상을 염두에 두지 않은 경우 유용합니다. 그렇지 않으면 appcat는 모든 Azure 대상에 대해 암시적으로 검색을 실행합니다.

특정 대상에 대한 Java 애플리케이션 평가

평가 단계에서는 appcat가 애플리케이션과 해당 구성 요소를 분석하여 재개발 적합성을 결정하고 잠재적인 문제나 제한 사항을 식별합니다. 이 단계에서는 애플리케이션 코드를 분석하고 선택한 Azure 대상 또는 OpenJDK 대상과의 준수를 검사.

사용 가능한 대상을 검사 다음 명령을 실행합니다.

./appcat --listTargetTechnologies

이 명령은 다음 예제와 유사한 출력을 생성합니다.

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

그런 후 다음 예와 같이 사용 가능한 Azure 대상 중 하나를 사용하여 appcat를 실행할 수 있습니다.

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

다음 예제와 같이 사용 가능한 OpenJDK 대상 중 하나를 사용하여 실행할 appcat 수 있습니다.

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

appcat에서 결과 가져오기

검색 및 평가 단계의 결과는 Azure 서비스 및 플랫폼 변경 방식에 대한 권장 사항을 포함하여 Java 애플리케이션의 플랫폼 변경 및 현대화를 위한 로드맵을 제공하는 자세한 보고서입니다. 이 보고서는 플랫폼 변경 프로세스의 다음 단계를 위한 기초 역할을 합니다. 이는 조직이 이러한 변환에 필요한 활동에 대해 배우고 최대 이점을 위해 애플리케이션을 현대화하는 방법에 대한 결정을 내리는 데 도움이 됩니다.

appcat에서 생성된 보고서는 애플리케이션과 해당 구성 요소에 대한 포괄적인 개요를 제공합니다. 이 보고서를 사용하여 애플리케이션의 구조와 종속성에 대한 인사이트를 얻고 플랫폼 변경 및 현대화에 대한 적합성을 결정할 수 있습니다.

다음 섹션에서는 보고서에 대한 추가 정보를 제공합니다.

분석 요약

보고서의 방문 페이지에는 애플리케이션에 사용되는 모든 기술이 나열되어 있습니다. 대시보드는 변환 인시던트 수, 인시던트 범주 또는 스토리 포인트를 포함한 분석 요약을 제공합니다.

appcat 요약 보고서의 스크린샷.

범주별 인시던트 원형 차트를 확대하면 필수, 선택, 잠재적, 정보 범주별로 인시던트 수를 확인할 수 있습니다.

대시보드에는 스토리 포인트도 표시됩니다. 스토리 포인트는 기능이나 변경을 구현하는 데 필요한 활동 수준을 예상하기 위해Agile Software Development에서 일반적으로 사용되는 추상적 측정 기준입니다. appcat는 스토리 포인트를 사용하여 특정 애플리케이션을 마이그레이션하는 데 필요한 활동의 수준을 표현합니다. 스토리 포인트가 반드시 근무 시간으로 변환되는 것은 아니지만 그 값은 작업 전체에서 일관되어야 합니다.

AppCAT 요약 인시던트 보고서의 스크린샷.

검색 보고서

검색 보고서는 검색 단계 중에 생성된 보고서입니다. 정보 범주에는 애플리케이션에서 사용하는 기술 목록이 표시됩니다. 이 보고서는 단지 appcat가 발견한 기술에 대해 알려드리기 위한 것입니다.

appcat 검색 보고서의 스크린샷.

평가 도구

평가 보고서는 애플리케이션을 Azure로 마이그레이션하기 위해 해결해야 하는 변환 문제를 간략하게 설명합니다.

인시던트라고도 하는 이러한 문제에는 심각도(필수, 선택, 잠재적 또는 정보), 노력 수준 및 스토리 포인트를 나타내는 숫자가 있습니다. 스토리 포인트는 인시던트 수와 인시던트를 해결하는 데 필요한 활동을 곱하여 계산하여 결정됩니다.

AppCAT 평가 보고서의 스크린샷.

특정 문제에 대한 자세한 정보

각 인시던트에 대해 선택만 하면 자세한 정보(인시던트 세부 정보, 규칙 콘텐츠 등)를 확인할 수 있습니다. 또한 이 인시던트의 영향을 가져오는 모든 파일의 목록도 가져올 수 있습니다.

AppCAT 문제 세부 정보 보고서의 스크린샷.

그런 다음 인시던트의 영향을 받은 각 파일 또는 클래스에 대해 소스 코드로 이동하여 인시던트를 만든 코드 줄을 강조 표시할 수 있습니다.

AppCAT 문제 코드 보고서의 스크린샷.

사용자 지정 규칙

appcat를 규칙 엔진으로 생각할 수 있습니다. 규칙을 사용하여 Java 보관에서 파일을 추출하고, Java 클래스를 디컴파일하고, 파일 형식을 검사 및 분류하고, 이러한 파일을 분석하고, 보고서를 빌드합니다. appcat에서 규칙은 규칙 집합 형식으로 정의됩니다. 규칙 집합은 appcat가 분석 중에 검색할 수 있는 특정 문제 또는 패턴을 정의하는 개별 규칙의 컬렉션입니다.

이러한 규칙은 XML로 정의되며 다음 규칙 패턴을 사용합니다.

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

appcat는 포괄적인 표준 마이그레이션 규칙 집합을 제공합니다. 애플리케이션에는 사용자 지정 라이브러리 또는 구성 요소가 포함될 수 있으므로 appcat를 사용하면 기존 규칙 집합에서 다룰 수 있는 구성 요소 또는 소프트웨어의 사용을 식별하는 자체 규칙을 작성할 수 있습니다.

사용자 지정 규칙을 작성하려면 XML로 표현된 풍부한 DSL(도메인 특정 언어)를 사용합니다. 예를 들어, Java 애플리케이션에서 PostgreSQL JDBC 드라이버 사용을 식별하고 대신 Azure PostgreSQL 유연한 서버 사용을 제안하는 규칙이 필요하다고 가정해 보겠습니다. Maven pom.xml 파일 또는 Gradle 파일에 정의된 PostgreSQL JDBC 드라이버를 찾으려면 다음 예에 표시된 종속성과 같은 규칙이 필요합니다.

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

이 종속성의 사용을 검색하기 위해 규칙은 다음 XML 태그를 사용합니다.

  • ruleset: 규칙 집합의 고유 식별자입니다. 규칙 집합은 특정 기술과 관련된 규칙 컬렉션입니다.
  • targetTechnology: 규칙이 대상으로 삼는 기술입니다. 이 경우 규칙은 Azure App Services, AKS(Azure Kubernetes Service), Azure Spring 앱 및 Azure Container Apps를 대상으로 합니다.
  • rule: 단일 규칙의 루트 요소입니다.
  • when: 규칙이 트리거되기 위해 충족되어야 하는 조건입니다.
  • perform: 규칙이 트리거될 때 수행될 작업입니다.
  • hint: 보고서에 표시할 메시지, 해당 범주(정보, 선택 사항 또는 필수) 및 문제를 해결하는 데 필요한 활동(1(쉬움)~13(어려움) 범위)입니다.

다음 XML은 사용자 지정 규칙 정의를 보여 줍니다.

<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"/>
        <targetTechnology id="azure-spring-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>

appcat를 통해 이 규칙을 실행한 후 분석을 다시 실행하여 생성된 보고서를 검토합니다. 다른 인시던트와 마찬가지로 평가 보고서에는 이 규칙과 관련하여 식별된 인시던트와 영향을 받는 파일이 나열됩니다.

실행 중인 규칙이 있는 appcat의 스크린샷

규칙 개발에 대한 전체 가이드는 azure.github.io/appcat-docs/rules-development-guide에서 확인할 수 있습니다.

라이선스

Java용 Azure Migrate 애플리케이션 및 코드 평가는 무료 오픈 소스 도구이며 업스트림 WindUp 프로젝트와 동일한 라이선스에 따라 라이선스가 부여됩니다.

자주 묻는 질문

Q: Java용 Azure Migrate 애플리케이션 및 코드 평가의 최신 버전은 어디에서 다운로드할 수 있나요?

aka.ms/appcat/azure-appcat-cli-latest.zip에서 appcat를 다운로드할 수 있습니다.

Q: Azure Migrate 애플리케이션 및 Java용 코드 평가에 대한 자세한 내용은 어디에서 찾을 수 있나요?

appcat를 다운로드하면 시작하는 데 필요한 모든 정보가 포함된 docs 디렉터리를 가져오게 됩니다.

Q: 특정 Azure 규칙은 어디에서 찾을 수 있나요?

모든 Azure 규칙은 appcat 규칙 집합 GitHub 리포지토리에서 사용할 수 있습니다.

Q: 사용자 지정 규칙 만들기에 대한 자세한 내용은 어디에서 찾을 수 있나요?

Azure Migrate 애플리케이션 및 Java용 코드 평가에 대한 규칙 개발 가이드를 참조하세요.

Q: 사용자 지정 규칙을 만들 때 어디서 도움을 가져올 수 있나요?

도움을 가져오는 가장 좋은 방법은 appcat-rulesets GitHub 리포지토리에 문제를 만드는 것입니다.

다음 단계