앱 현대화 평가 만들기

Migration Center 앱 현대화 평가 (codmod)는 애플리케이션의 현대화 평가 프로세스를 자동화하는 AI 기반 도구입니다. 이 페이지에서는 codmod 도구를 설치, 사용, 문제 해결하는 단계를 설명합니다.

앱 현대화 평가 정보

일반적인 현대화 평가 프로세스는 몇 주가 걸리며 많은 전문 지식이 필요합니다. 이 프로세스를 자동화하면 codmod 도구로 이 시간을 몇 시간으로 크게 줄일 수 있습니다.

이 도구는 현재 애플리케이션의 아키텍처, 기능, 클라우드로의 전환 속도를 늦출 수 있는 잠재적 차단 요소에 관한 증거 기반 정보를 제공하는 것을 목표로 합니다.

이 도구는 다음 역할을 대상으로 합니다.

  • IT 설계자
  • 의사 결정권자
  • 애플리케이션 소유자

codmod 도구는 필요한 변경사항과 애플리케이션을 Google Cloud로 변환하여 얻을 수 있는 이점을 명확하게 파악할 수 있도록 지원하여 애플리케이션 변환을 가속화하는 것을 목표로 합니다. codmod는 Gemini를 사용하여 소스 코드를 분석하고 Google Cloud 권장사항에 따라 추천을 제공하는 휴대용 CLI 도구입니다.

시작하기 전에

codmod 도구에는 다음 기본 요건이 필요합니다.

  • Linux 또는 Windows (10 이상) 워크스테이션
  • Vertex AI API가 사용 설정된 Google Cloud 프로젝트에 대한 액세스 권한
  • 워크스테이션에 gcloud CLI가 설치되어 있어야 합니다. 자세한 내용은 gcloud CLI 설치를 참고하세요.

가격 책정

코드 평가를 위해 Gemini를 사용하는 비용은 주로 코드베이스의 크기에 따라 결정되며 토큰 단위로 측정됩니다. 다음 표에는 코드 줄 수와 선택한 모델에 따라 예상되는 비용 추정치가 나와 있습니다.

코드베이스 코드 줄 수 (LOC) 예상 비용
적응형 2.0-flash 2.5-pro (기본값) 2.5-flash
Spring Petclinic ~6,500 $20 $2 $30 $4
James Project ~1,000,000 $60 $30 $500 $40
Elasticsearch ~5,000,000 $200 $200 $3,000 $200

이러한 값은 다음으로 인한 절감액을 고려하지 않으므로 과대평가되었을 수 있습니다.

  • 짧은 질문에 대한 가격이 인하되었습니다.
  • 암시적 캐싱의 가격이 인하되었습니다.
  • 약정 사용 할인 (CUD)

이러한 매개변수의 비용은 특히 대규모 코드베이스의 경우 총비용에서 무시할 수 있는 부분일 것으로 예상됩니다. 자세한 내용은 Gemini API 가격 책정을 참고하세요.

추가 정보

이 도구는 Vertex AI API의 고급 코드 이해 및 분석 기능을 사용합니다. 사용 가능한 모델과 기능에 대한 자세한 내용은 Vertex AI API 문서의 Google 모델을 참고하세요.

최적의 성능과 비용 효율성을 유지하기 위해 codmod의 코드베이스 크기는 약 6백만 줄의 코드로 제한됩니다. 이 한도를 초과하는 코드베이스의 경우 분석을 위해 관리 가능한 작은 부분으로 나누는 것이 좋습니다. 더 작은 섹션을 분석하면 더 집중적인 평가를 수행하고 전체 처리 시간을 줄일 수도 있습니다.

codmod 설정

이 섹션에서는 codmod 도구를 사용하기 위한 설치 및 인증 안내를 제공합니다.

codmod 설치

Windows

Windows PowerShell에서 다음 명령어를 실행하여 최신 버전의 codmod을 다운로드합니다.

$version=curl.exe -s https://codmod-release.storage.googleapis.com/latest
curl.exe -O "https://codmod-release.storage.googleapis.com/${version}/windows/amd64/codmod.exe"

Linux

다음 명령어를 실행하여 최신 버전의 codmod을 다운로드합니다.

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/linux/amd64/codmod"
chmod +x codmod

Google Cloud에 대해 인증

codmod 도구를 사용하려면 Google Cloud 프로젝트가 필요합니다.

  1. 콘솔에서 또는 CLI를 사용하여 프로젝트에 Vertex AI API가 사용 설정되어 있는지 확인합니다.

    gcloud services enable aiplatform.googleapis.com --project <project-id>
    
  2. 프로젝트에 roles/aiplatform.user 역할 또는 이와 유사한 역할이 있는지 확인합니다.

  3. 인증하려면 다음 명령어를 실행합니다.

    gcloud auth application-default login
    

또는 서비스 계정을 사용하고 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정할 수 있습니다. 자세한 내용은 애플리케이션 기본 사용자 인증 정보의 작동 방식을 참고하세요.

codmod 구성 관리

다음 섹션에서는 codmod config 명령어를 사용하여 codmod를 구성하는 방법을 설명합니다.

모든 설정 나열

모든 현재 구성 속성과 해당 값을 확인하려면 다음 명령어를 실행하세요.

codmod config list

플래그의 기본값 설정

속성의 기본값을 설정하려면 set 명령어를 사용합니다. 예를 들어 기본 프로젝트 ID를 설정하려면 다음을 실행합니다.

codmod config set project "PROJECT_ID"

PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

기본 리전을 설정하려면 다음을 실행하세요.

codmod config set region "REGION"

REGION을 Google Cloud 리전으로 바꿉니다. 사용 가능한 리전 목록을 참고하세요. 어떤 리전을 사용해야 할지 잘 모르겠으면 us-central1를 사용하세요.

특정 값 가져오기

단일 속성의 값을 보려면 get 명령어를 사용합니다. 예를 들어 구성된 프로젝트 ID를 가져오려면 다음 명령어를 실행합니다.

codmod config get project

기본값 설정 해제

구성된 기본값을 삭제하고 도구의 원래 기본 설정으로 되돌리려면 unset 명령어를 사용합니다. 예를 들어 기본 프로젝트 ID를 삭제하려면 다음 명령어를 실행합니다.

codmod config unset project

codmod 평가 보고서 만들기

다음 섹션에서는 기본 평가를 만드는 방법과 필요에 따라 맞춤설정하는 방법을 설명합니다.

기본 보고서 만들기

평가 보고서를 생성하려면 다음 플래그와 함께 codmod 도구를 실행하세요.

codmod create -c "CODEBASE" -o "OUTPUT"

다음을 바꿉니다.

  • CODEBASE: 분석할 소스 코드가 포함된 디렉터리를 지정하며 여러 번 지정할 수 있습니다.
  • OUTPUT: 생성된 보고서가 저장되는 경로를 지정합니다. 보고서는 HTML 형식입니다.

-p "PROJECT_ID"-r "REGION" 플래그를 사용하여 각각 기본 프로젝트와 리전을 재정의할 수 있습니다.

다음과 같은 선택적 플래그를 지정할 수도 있습니다.

  • --modelset [2.0-flash|2.5-flash|2.5-pro|adaptive]: 사용할 Gemini 모델을 지정합니다. 기본값은 2.5-pro입니다. 어댑티브는 2.5-pro에 비해 보고서 품질이 저하될 수 있지만 비용을 크게 절감할 수 있습니다.
  • --context <string>: 프로젝트에 관해 제공할 추가 컨텍스트입니다. 이 도구는 보고서를 생성할 때 이 컨텍스트를 고려합니다.
  • --context-file <path>: 지정된 파일에 컨텍스트가 제공되는 경우 --context과 동일합니다.
  • --format <html|markdown|odt|json>: 생성된 보고서에 사용되는 형식입니다. 기본값은 HTML입니다.
  • --allow-large-codebase: 기본적으로 codmod는 비용이 많이 들지 않도록 100만 줄이 넘는 코드베이스를 분석하기 전에 확인을 요청합니다. 이 옵션은 비대화형 확인으로 사용됩니다. codmod config set allow_large_codebase true를 실행하여 기본적으로 사용 설정할 수도 있습니다.
  • --improve-fidelity: 설정된 경우 codmod는 병렬이 아닌 순차적으로 섹션을 생성합니다. 이렇게 하면 최종 보고서의 여러 섹션 간 일관성이 향상되지만 실행 시간이 더 길어집니다.
  • --force-include <strings>, --force-exclude <strings>: 기본적으로 codmod는 Java, .NET, Python을 비롯한 인기 있는 파일 확장자를 검색합니다. 이러한 플래그를 사용하여 파일 확장자를 포함하거나 제외합니다. 인수는 RE2 구문이 있는 정규 표현식이어야 합니다.
  • --experiments: codmod에서 PDF 및 이미지를 지원하도록 --experiments=enable_pdf,enable_images을 지정합니다.

자세한 보고서 만들기

전체 분석이 필요한 경우 create full 명령어를 사용하여 보고서를 만드세요.

codmod create full -c "~/mycodebase/" -o "report.html"

데이터 레이어에 중점을 둔 보고서 만들기

데이터 레이어에 대한 심층적인 주의가 필요한 경우 이 영역에 중점을 둔 보고서를 만들 수 있습니다.

codmod create data-layer -c "CODEBASE" -o "OUTPUT"

특정 변환 의도에 대한 보고서 만들기

특정 현대화 의도에 보고서를 집중시키려면 다음 지원되는 의도 중 하나를 사용하면 됩니다.

  • Microsoft 워크로드 변환 (MICROSOFT_MODERNIZATION): Microsoft OS에서 실행되는 애플리케이션과 함께 사용합니다. 평가에서는 .NET 기반 프레임워크를 최신 버전을 사용하도록 현대화하고 Microsoft 라이선스에 대한 종속성을 줄이는 변환 여정에 중점을 둡니다.
  • 클라우드 간 워크로드 변환 (CLOUD_TO_CLOUD): 다른 하이퍼스케일러 인프라에서 실행되는 애플리케이션과 함께 사용합니다. 평가에서는 다른 클라우드 공급업체 서비스를Google Cloud 서비스에 매핑하는 등 애플리케이션을 변환하기 위한 권장 변경사항에 중점을 둡니다.
  • 기존 Java 변환 (JAVA_LEGACY_TO_MODERN): Java 8 또는 유사한 버전의 Java를 실행하는 애플리케이션과 함께 사용합니다. 평가에서는 Java 21 (현재 LTS)로의 변경으로 인해 영향을 받는 코드의 업그레이드 종속 항목과 영역을 찾는 데 중점을 둡니다.
  • 기존 Java WILDFLY 변환 (WILDFLY_LEGACY_TO_MODERN): 최신 버전 이전의 WildFly 애플리케이션 서버 버전에서 실행되는 Java EE/Jakarta EE 코드베이스와 함께 사용합니다. 평가에서는 API 차이점 및 호환성에 필요한 변경사항을 비롯하여 WildFly 애플리케이션 서버 버전 업그레이드의 영향을 받는 코드의 업그레이드 종속 항목과 영역을 식별하는 데 중점을 둡니다.

의도 중심 보고서를 만들려면 --intent 플래그를 사용하세요.

codmod create -c "CODEBASE" -o "OUTPUT" --intent "INTENT"

추가 섹션이 있는 보고서 만들기

이 도구는 비용을 절감하기 위해 기본적으로 포함되지 않는 섹션을 추가로 포함하는 것을 지원합니다. 다음 섹션이 지원됩니다.

  • files: 프로젝트 파일을 파악하는 데 도움이 되는 프로젝트 폴더의 구조화된 계층적 뷰와 각 폴더 콘텐츠의 설명입니다.
  • classes: 각 클래스와 다른 클래스에 대한 종속 항목에 관한 정보가 포함된 코드 클래스 카탈로그입니다. 지원되는 언어는 Java와 C#입니다.

추가 섹션을 만들려면 --optional-sections 플래그를 사용합니다.

codmod create -c "CODEBASE" -o "OUTPUT" --optional-sections "SECTIONS"

SECTIONS를 쉼표로 구분된 값 목록으로 바꿉니다.

맞춤 보고서 만들기

특정 맞춤 주제를 살펴보고 싶다면 다음 명령어를 사용하여 제공한 컨텍스트를 기반으로 맞춤 보고서를 만들면 됩니다.

codmod create custom -c "CODEBASE" -o "OUTPUT" --context "CONTEXT"

기본적으로 LLM은 제공된 컨텍스트를 확장하고 일관된 섹션이 생성되도록 조정하는 데 사용됩니다. --improve-context=false를 지정하여 이 동작을 사용 중지할 수 있습니다.

추가 플래그:

  • --from-template <path>: 텍스트 또는 PDF 파일 형식으로 문서 구조를 정의하는 템플릿 파일을 지정합니다. codmod가 구조를 감지하고 보고서 생성을 계속할 수 있도록 승인을 요청합니다.
  • --skip-template-approval: --from-template 플래그를 사용할 때 승인 요청을 건너뜁니다.

기존 보고서 수정

보고서에서 새 섹션을 만들거나 특정 섹션을 기반으로 기존 섹션을 수정할 수 있습니다. 예를 들어 시스템 아키텍처의 특정 측면이나 특정 유형의 보안 취약점에 집중할 수 있습니다.

보고서를 수정하는 명령어에는 다음 플래그가 필요합니다.

  • --context--context-file 중 하나: 수정 요청을 지정합니다.
  • --from-report: 기존 보고서 파일의 경로를 지정합니다.
  • --from-section: 새 섹션의 기준으로 사용할 섹션의 이름입니다 (예: 개요, 아키텍처).

특정 보고서에서 사용 가능한 모든 섹션을 표시하려면 다음 명령어를 실행합니다.

codmod list-sections --from-report "REPORT"

보고서 섹션 수정

다음 명령어를 실행하여 기존 섹션을 수정합니다.

codmod revise section -c "CODEBASE" --from-report "REPORT" \
  -o "REVISED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"

새 보고서 섹션 만들기

다음 명령어를 사용하여 새 섹션을 만듭니다.

codmod create section -c "CODEBASE" --from-report "REPORT" \
  -o "REGENERATED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"
  • create section 명령어의 from-section 플래그는 선택사항입니다.
  • 기본적으로 LLM은 제공된 컨텍스트를 확장하고 일관된 섹션이 생성되도록 조정하는 데 사용됩니다. --improve-context=false를 지정하여 이 동작을 사용 중지할 수 있습니다.

다음에 유의하세요.

  • create sectionrevise sectionhtml 보고서 형식만 지원합니다.
  • create section, revise section, list-sections에서는 --from-report 플래그가 HTML 형식의 보고서를 가리키도록 합니다.

평가 비용 추정

codmod 도구를 사용하면 보고서 생성에 드는 대략적인 비용을 계산하여 도구 사용 비용을 파악할 수 있습니다. 비용 추정치를 보려면 다음 명령어를 실행합니다.

codmod create --estimate-cost -c "CODEBASE"

create sectioncreate custom 명령어의 비용 추정은 지원되지 않습니다.

세부정보 수준 설정

codmod 상세도는 --verbosity LEVEL 플래그를 사용하여 구성됩니다. 로그의 세부정보 수준은 debug, info, warn, error, none 중 하나입니다. 기본값은 warn입니다.

문제 해결

  • 권한 거부됨: '권한 거부됨' 오류가 발생하면 chmod +x codmod 명령어를 실행하여 codmod 바이너리에 실행 권한을 부여했는지 확인합니다.
  • CLI가 멈춘 것처럼 보임: 분석에 시간이 오래 걸릴 수 있지만 일반적으로 CLI의 진행률 표시줄에서 진행 상황을 확인할 수 있습니다. 15분이 지나도 진행률 표시줄이 0% 로 유지되면 관련 모델의 할당량이 충분한지 확인합니다. 기본적으로 codmodgemini-2.5-pro 모델을 사용합니다. 하지만 다양한 모델 세트에서 다양한 목적으로 다양한 모델을 사용하므로 변경될 수 있습니다.
  • 오류 보고: 조사가 필요한 오류가 발생한 경우 개발팀에 도움이 되도록 디버그 정보를 수집합니다. 로그는 문제 해결에 중요한 세부정보를 제공합니다. 다음 명령어를 실행하여 로그를 수집한 다음 결과 아카이브를 압축하고 codmod-feedback-external@google.com의 팀과 공유합니다.

    codmod collect-logs -o "codmod_logs.zip"
    

오픈소스 라이선스

다음을 실행하여 최신 버전의 codmod 종속 항목의 오픈소스 공지를 다운로드할 수 있습니다.

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/THIRD_PARTY_NOTICES.txt"

지원받기 및 의견 제공

이 제품의 품질을 개선하기 위해 Google은 가명처리된 사용 데이터를 수집합니다. 이 데이터는 Google의 개인정보처리방침 Google Cloud 개인정보처리방침에 따라 처리됩니다. 다음 명령어를 실행하여 언제든지 환경설정을 변경할 수 있습니다.

codmod config set disable_usage_reporting true

다음과 같은 방법으로 지원을 받고 의견을 제공할 수 있습니다.

  • codmod에 대한 지원을 받으려면 생성된 HTML 보고서에서 지원 버튼을 클릭하거나 codmod-feedback-external@google.com으로 이메일을 보내세요.
  • codmod에 대한 의견을 공유하려면 생성된 HTML 보고서에서 의견 버튼을 클릭합니다.