참고:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값이 사용됩니다. 랩을 완료한 후에는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
TASK 5: Micronaut 애플리케이션의 네이티브 이미지 구축 및 Oracle Cloud에 배포
이 실습에서는 Java 애플리케이션을 GraalVM Native Image를 사용하여 고유 Linux 실행 파일로 전환하는 방법을 배웁니다. 그 후에 Oracle Cloud의 가상 머신에 배포합니다.
예상 시간: 20분
태스크 콘텐츠
이 작업에서 다음을 수행합니다.
- Oracle Cloud에서 JVM에서 Micronaut 애플리케이션 실행
- Micronaut 애플리케이션의 고유 Linux 실행 파일 구축
- Micronaut 애플리케이션을 Oracle Cloud에 기본 실행 프로그램으로 배포
- 클라우드 인스턴스에 대한 트래픽을 허용하도록 방화벽 구성(선택 사항)
1단계: Oracle Cloud의 JVM에서 Micronaut 애플리케이션 실행
이 단계에서는 기존에 Oracle Cloud의 JVM(JAR 파일에서)에 Micronaut 애플리케이션을 배치합니다. GraalVM Enterprise 22.0.0이 기본 JDK로 설정된 경우 VS 코드를 계속 사용합니다.
-
Terminal, New Terminal으로 이동하고 이 명령을 실행하여 Java 버전을 확인합니다.
java -version
java
명령을 호출할 때마다 GraalVM Enterprise에서 기본적으로 사용으로 설정된 최적화된 Graal JIT 컴파일러가 적용됩니다. -
Java 프로젝트를 실행 가능한 JAR 파일로 패키지화하고 VS 코드 터미널에서 응용 프로그램을 시작하거나 실행 기본 작업을 호출할 수 있습니다.
-
Terminal, New Terminal으로 이동한 다음
mn:run
목표를 실행합니다../mvnw mn:run
Gradle을 사용하는 경우
run
작업을 실행합니다../gradlew run
-
또는 VS 코드에서
Application.java
클래스 파일을 찾아 기본 메소드 위의 Run Main을 누릅니다.응용 프로그램이 포트 8080에서 시작됩니다. 실행하는 데 걸린 시간을 확인하십시오. 6500ms부터 시작해야 합니다.
-
-
응용 프로그램을 종료합니다.
CTLR +C
2단계: Micronaut 응용 프로그램의 고유 Linux 실행 파일 빌드
모든 Java 애플리케이션을 GraalVM Native Image를 사용하여 고유 실행 파일로 변환할 수 있습니다. Java 바이트 코드를 JDK가 실행되지 않고 특정 대상 환경에서 실행되도록 설계된 자체 포함된 원시 바이너리로 변환할 수 있는 사전 컴파일 기술입니다.
앞서 언급한 바와 같이 사용자 편의를 위해 GraalVM Enterprise 22가 가상 머신에 사전 설치되어 있습니다. 모든 종속 라이브러리(예: libstdc++-static
, glibc
, zlib
등)와 함께 추가되는 고유 이미지입니다. native-image
유틸리티는 GraalVM 설치 디렉토리($JAVA_HOME/bin
)에 배치됩니다.
-
VS 코드 터미널 창에서 고유 이미지 버전을 확인합니다.
native-image --version
-
다음 단일 명령을 실행하여 고유 Linux 실행 파일을 작성합니다.
- Maven을 사용하는 경우
native-image
패키징 형식을 지정합니다.
./mvnw clean package -Dpackaging=native-image
- Gradle을 사용하는 경우
nativeImage
작업을 실행합니다.
./gradlew nativeCompile
잠시 후
ocidemo
이라는 고유 실행 파일이/target/native-image/
디렉토리에 작성됩니다. Gradle을 사용하는 경우ocidemo
이라는 실행 파일이/build/native/nativeCompile/
폴더에 기록됩니다.주: 실행 파일 작성 시간은 애플리케이션 크기와 복잡성에 따라 다르며, 전원이 부족한 VM에 시간이 걸릴 수 있습니다. 이 실습에 할당된 VM 인스턴스의 용량을 사용할 경우 예상 시간은 최대 5분입니다.
- Maven을 사용하는 경우
GraalVM Native Image는 모든 응용 프로그램 클래스, 종속 라이브러리 클래스, 종속 JDK 클래스 및 응용 프로그램 힙 스냅샷을 사용하여 실행 파일을 생성합니다. 네이티브 이미지를 작성하는 동안 시작 시간을 대폭 단축하고 전체 메모리 사용을 줄일 수 있는 이점이 있습니다.
3단계: OCI에 Micronaut 애플리케이션 배포
이전 단계에서 Micronaut 응용 프로그램의 고유 Linux 실행 파일을 만들었습니다. 이제 이 고유 실행 파일을 Oracle Cloud에 배치하고 동일한 응용 프로그램을 JAR 파일과 고유 이미지로 실행할 때 시작 시간을 비교합니다.
응용 프로그램을 고유 실행 파일로 배치하려면 이전 단계에서 생성된 이진 파일을 호출합니다.
- Maven을 사용한 경우:
./target/ocidemo
- Gradle을 사용한 경우:
./build/native/nativeCompile/ocidemo
이 Micronaut 마이크로서비스를 단계 1의 JAR 파일보다 네이티브 이미지로 시작하는 데 얼마나 빨리 걸리는지 확인하십시오(최대 6500밀리초에서 2500까지 줄여야 함). 실행 파일이 자체 포함된 바이너리이며, JDK를 실행할 필요가 없으므로 더 빠르게 시작되어 애플리케이션을 쉽게 배포할 수 있습니다. 파일 크기도 매우 작습니다.
네이티브 실행 파일로 Java 마이크로 서비스를 배포하면 즉각적인 시작, CPU 및 메모리 사용량 감소, GraalVM Enterprise가 클라우드 전용 Java 애플리케이션 및 클라우드 구축에 적합한 후보자로 적합합니다.
이 시점에서 응용 프로그램이 성공적으로 실행 중이지만 이를 액세스하기 위해 브라우저에서 가상 시스템에 들어오는 트래픽을 허용해야 합니다. CTRL+C
응용 프로그램을 종료하고 다음 단계를 진행합니다.
4단계: 클라우드 인스턴스에 대한 트래픽을 허용하도록 방화벽 구성(선택사항)
Oracle Cloud에서 실행 중인 이 서버측 애플리케이션을 확인하고 브라우저에서 열려면 호스트 방화벽이 가상 시스템에 대한 트래픽을 허용하는지 확인해야 합니다.
-
클라우드 콘솔로 돌아가서 컴퓨트, 인스턴스로 이동합니다.
-
OCI 콘솔에 로그인한 경우 컴퓨트로 이동하고 인스턴스를 누릅니다. 필요한 구획에 있는지 확인합니다(작업 1, 단계 3 참조).
-
기본 뷰에서 VM 인스턴스(graal-workshop-...로 시작하는 이름)를 찾아 엽니다.
-
기본 VNIC 섹션에서 인스턴스가 연결된 서브넷(subnet-01)을 누릅니다.
-
서브넷 페이지에서 내부 보안 목록을 누릅니다.
-
송신 규칙 추가를 누르고 다음 데이터를 입력합니다.
이 규칙을 사용하면 모든 소스의 트래픽이 포트 8080을 사용할 수 있으므로 어디에서나 응용 프로그램에 연결할 수 있습니다.
-
터미널 창으로 돌아가서 다음 명령을 실행하여 실행 중인 VM 인스턴스에서 방화벽을 다시 시작합니다.
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo systemctl reload firewalld
-
응용 프로그램을 고유 실행 파일로 재시작합니다.
Maven으로 구축:
./target/ocidemo
Gradle을 사용하여 빌드:
./build/native/nativeCompile/ocidemo
-
브라우저에서
/pet
끝점에 대해http://<SERVER_IP>:8080/pets
,/owners
끝점에 대해http://<SERVER_IP>:8080/owners
를 사용하여 애플리케이션을 엽니다. 또는 VS 코드의 터미널 창을 분할하고curl
로 GET 요청을 보냅니다.curl -i http://<SERVER_IP>:8080/pets
축하합니다! 이 실습을 완료했습니다.
더 알아보기
-
GraalVM Native Image를 사용하여 실전 연습을 수행하고 GraalVM Native Image Quick Start 실습을 실행하여 클라우드 전용 Java 애플리케이션의 개발을 시작합니다.
-
GraalVM Enterprise 문서를 확인합니다.
-
Micronaut 및 GraalVM을 사용하여 다중 클라우드 서버 미사용 애플리케이션 구축에 대한 소개 비디오를 시청하십시오.
이 세션을 종료하려면 도구 모음에서 [세션 종료] 단추를 누릅니다.