코드 생성기 실행

코드 생성기를 사용하여 권장 파티션을 구현하는 데 필요한 API 서비스 및 관련 코드를 생성합니다.

시작하기 전에

시스템 요구사항 및 다음 코드 생성기 요구사항을 충족하는지 확인하십시오.

  • 코드 생성기에는 다음에 대한 액세스 권한이 있어야 합니다.
    • mono2micro-output 디렉토리 아래에 작성된 cardinal 디렉토리 ( 수집된 데이터를 분석하기 위해 AI 엔진 실행참조). 이 디렉토리에는 파티션 정보 파일 및 코드 생성기가 사용하는 기타 파일 (두 개의 사용자 정의 가능한 매개변수가 있는 구성 파일 포함) 이 포함되어 있습니다.
    • monolith 애플리케이션의 소스 코드입니다. 애플리케이션 소스 코드가 코드 분석 중에 2진 파일을 생성하는 데 사용된 것과 정확히 동일한지 또는 소스 코드 분석 중에 코드 분석기를 실행할 때 사용된 것과 동일한지 확인하십시오. 코드 생성기는 모놀리스로부터 관련 부분들을 복사하여 리팩터된 코드를 생성한다.
  • 코드 생성기를 실행하는 사용자에게는 원하는 출력 디렉토리에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

또한 필요에 따라 코드 생성 프로세스를 사용자 정의하십시오. cardinal 디렉토리의 app.config.txt 파일에는 두 개의 사용자 정의 가능한 매개변수가 있습니다.

ApplicationName
리팩토링된 애플리케이션의 이름입니다. 값은 생성된 코드, URL 및 주석의 접두부로 사용됩니다.
CardinalOut경로
유틸리티 클래스 코드가 생성되는 소스 코드 트리의 위치입니다.

프로시저

코드 생성기를 실행하여 권장 파티션에 대한 리팩토링 코드를 생성하십시오.

  1. cardinal 디렉토리를 검사하십시오.

    Daytrader 애플리케이션을 사용하는 예제가 표시되어 있습니다. cardinal 디렉토리는 이전에 작성된 mono2micro-output 디렉토리에서 복사되는 반면 ( 수집된 데이터를 분석하기 위해 AI 엔진 실행참조), 이 예제의 경우 daytrader7-source 디렉토리는 https://github.com/WASdev/sample.daytrader7.git에서 복제됩니다.

    transform-input
        ├── cardinal
        │   ├── app_config.txt
        │   ├── cardinal_graph.json
        │   ├── class_run.json
        │   ├── partition.txt
        │   ├── refTable.json
        │   └── symTable.json
        └── daytrader7-source
  2. 코드 생성기 명령을 실행하십시오.
    mono2micro transform -s <src-dir-path> -p <partition-info-dir-path>

    이 명령에서 <src-dir-path> 은 애플리케이션 소스 코드 디렉토리의 경로 이름이고 <partition-info-dir-path> 은 AI 엔진이 작성하는 cardinal 디렉토리의 경로 이름입니다.

    명령 및 해당 옵션에 대한 자세한 정보를 얻으려면 mono2micro transform --help 명령을 실행하십시오.

    고려사항:
    • 코드 생성기를 실행하는 사용자는 <src-dir-path> 디렉토리에 대한 읽기 및 쓰기 액세스 권한이 있습니다. 코드 생성기가 <src-dir-path> 디렉토리 아래의 서브디렉토리에 보고서 및 소스 코드를 작성하기 때문입니다.
    • monolith 디렉토리의 이름이 daytrader7-source인 그림을 사용하고 AI 엔진이 생성한 cardinal 디렉토리가 모두 <dir-path> 경로에 있는 경우 다음 명령을 사용하여 코드 생성기를 실행합니다.
      mono2micro transform -s <dir-path>/daytrader7-source -p <dir-path>/cardinal
  3. 실행의 진행 상황을 모니터링합니다.

    파티션 수 및 모노리스의 크기에 따라 코드 생성기 태스크를 완료하는 데 걸리는 시간이 달라집니다.

    코드 생성기를 실행하면 많은 양의 정보 메시지가 생성됩니다. 대부분의 경우 메시지에 특별한 주의가 필요하지 않습니다. 그러나 가능한 구성 문제와 일반적인 이해를 위한 자세한 조사를 위해 메시지를 파일로 저장하는 것은 매우 중요합니다.

    코드 생성기가 성공적으로 완료되면 cardinal-codegen 디렉토리가 다양한 보고서를 포함하는 <partition-info-dir-path> 디렉토리 내에 작성됩니다. 각 파티션에 대해 코드 생성기는 잠재적 마이크로서비스로 실현하는 데 필요한 대량의 코드를 포함하는 디렉토리를 작성합니다. 코드 생성기는 보고서 디렉토리의 완료 및 작성을 알립니다.

결과

코드 생성기가 성공적으로 완료되면 다음 Daytrader 디렉토리 구조와 유사한 디렉토리 구조가 작성됩니다.

transform-input
    ├── cardinal
    │   ├── app_config.txt
    │   ├── cardinal-codegen
    │   │   ├── Cardinal-Utility-report.txt
    │   │   ├── Cardinal-partition0-report.txt
    │   │   ├── Cardinal-partition1-report.txt
    │   │   ├── Cardinal-partition2-report.txt
    │   │   ├── Cardinal-partition3-report.txt
    │   │   ├── Cardinal-partition4-report.txt
    │   │   ├── CardinalFileSummary.json
    │   │   ├── CardinalFileSummary.txt
    │   │   └── CardinalSings.json
    │   ├── cardinal_graph.json
    │   ├── class_run.json
    │   ├── instrumenter-config.json
    │   ├── partition.txt
    │   ├── refTable.json
    │   └── symTable.json
    ├── daytrader7-source
    ├── daytrader7-source-Utility
    ├── daytrader7-source-partition0
    ├── daytrader7-source-partition1
    ├── daytrader7-source-partition2
    ├── daytrader7-source-partition3
    └── daytrader7-source-partition4

이 예에서 daytrader-source-Utility 파티션에는 잠재적 유틸리티 클래스로 식별되는 Java ® 모놀리식 애플리케이션 클래스가 포함되어 있습니다. 이 파티션을 IBM Mono2Micro™ 생성 코드와 함께 다른 파티션으로 처리하거나 클래스에 의존하는 다른 모든 파티션과 함께 유틸리티 .jar 파일로 이 애플리케이션 클래스를 패키지할 수 있습니다.

강조표시된 디렉토리는 코드 생성기에 의해 작성됩니다. cardinal-codegen 디렉토리에는 다양한 보고서가 포함되어 있으며 다양한 파티션이 xxx-partition_n 디렉토리에 작성됩니다. 여기서 xxxApplicationName 값이고 n 는 파티션 번호입니다. 예를 들어, 파티션의 이름은 daytrader7-source-partition_n (여기서 0 < = n < = 4) 입니다. 자세한 정보는 사용자 정의 보기 작성을 참조하십시오.

이러한 각 xxx-partition_n 디렉토리에는 고려 중인 모놀리스에서 가져온 소스 코드의 적절한 부분이 포함되어 있습니다. 출력에는 전환 래퍼, API 서비스, 분산 객체 관리를 위한 코드, 가비지 컬렉션이 포함되지만 이에 국한되지 않습니다. 모든 코드 이동 및 생성은 Mono2Micro의 코드 생성 컴포넌트에 의해 자동으로 수행됩니다. 현재 코드 생성기는 .java 소스 파일만 고려합니다. 단일체에서 구성 또는 배치 정보를 복사하거나 생성하지 않습니다. 파티션을 마이크로 서비스로 실제 배치하려면 적절한 구성 정보를 제공해야 합니다.

생성된 내부 cardinal-codegen 폴더의 컨텐츠는 다양한 보고서입니다. Cardinal-partition_n-report.txt (여기서 0 < = n < = 4) 파일은 partition_3 partition에 대한 그림에 표시된 대로 텍스트 양식의 개별 파티션에 대한 Java ® 호출 분석 보고서입니다. 코드 생성기를 실행하는 동안 html 옵션을 지정하여 보고서의 통합 HTML 버전을 생성할 수 있습니다. 자세한 정보는 Cardinal-보고서의 내용을 참조하십시오.

샘플 Cardinal-partition_1-report.txt 보고서

Mono2Micro 의 코드 생성 컴포넌트는 코드 생성을 위해 수행되는 모든 단계를 자세히 설명하는 CardinalFileSummary.txt 파일을 생성합니다. 코드 생성 프로세스를 더 자세히 이해하고 생성된 코드를 보기 위해 디버깅에 대한 보고서를 사용합니다. 보고서는 참조용으로만 사용되며 Mono2Micro의 컴포넌트에서는 사용되지 않습니다.

각 파티션에 대해 CardinalFileSummary.txt 보고서에 다섯 개의 보고서 카테고리가 있습니다. 축약된 샘플 보고서가 다음 그림에 표시됩니다.

샘플 축약 CardinalFileSummary.txt 보고서
보고서의 다섯 가지 카테고리는 다음과 같습니다.
Proxy
로컬이 아니고 다른 파티션에 속하는 오브젝트에 액세스해야 하는 각 파티션에 대한 스텁 클래스를 포함하는 보고서입니다.
Service
파티션 외부에서 액세스되는 파티션의 오브젝트에 대해 작성된 API를 포함하는 보고서입니다.
Original
모놀리스의 원래 무손상 Java 파일을 포함하는 보고서입니다. 이러한 파일은 파티션 내에서 로컬로만 액세스됩니다.
Dummy
런타임에서 사용되지 않는 정적 소스 코드 분석 중에 선택된 파일을 포함하는 보고서입니다. Cardinal Exceptions 가 이러한 파일에 추가되어 실행되는 경우 적절한 런타임 예외가 생성되는지 확인합니다. 또한 이 보고서 카테고리는 개발자에게 이러한 파일에 대한 잠재적 종속성에 대해 알립니다.
Helper
권장 파티션 및 해당 인터페이스에 대한 직렬화 및 예외와 같은 기능을 처리하는 생성된 코드를 포함하는 보고서입니다.
보고서에는 다음과 같은 글로벌 카테고리도 있습니다.
Copied
프로그래밍 로직이 없지만 파티션 컴파일에 필요한 클래스 (예: 인터페이스 및 추상 클래스) 를 포함하는 보고서입니다.

cardinal-codegen 디렉토리 아래의 최종 보고서는 CardinalSings.json입니다. 이 파일은 개발자가 사용하기 위한 것입니다. 이 보고서는 다음 컨텐츠를 나열합니다.

  • 코드를 변경해야 하는 위치 또는 파티션을 잠재적 마이크로서비스로 구현하기 위해 자세한 검사가 필요한 위치를 나열합니다.
  • 해결해야 하거나 다양한 WARN에 속하는 CARDINAL_TODO_T<number>(으)로 키가 지정된 개발자용 조치 항목을 나열합니다. 이 경고는 개발자가 필요에 따라 코드를 검사하고 업데이트할 것을 권고합니다. 태스크는 클래스 및 파일 레벨로 그룹화됩니다. 다음 보고서는 샘플 Daytrader 애플리케이션을 리팩토링하는 동안 WARN TODOs을(를) 표시합니다. 각 CARDINAL_TODO_T<number> 태스크에 대해 코드 생성기가 자세한 자체 설명 주석을 제공합니다.
    Daytrader에 대한 CardinalSings.json 보고서의 샘플 WARN TODO 태스크 목록