티스토리 뷰

728x90

 

✅ AOT란? (Ahead-Of-Time Compilation)

AOT 컴파일은 말 그대로 애플리케이션 실행 전에, 코드를 미리 컴파일해서 최적화된 기계어 바이너리를 만들어두는 방식입니다.

📌 즉, 실행 전에:

  • 클래스 로딩
  • 빈 등록
  • 리플렉션 분석
  • 리소스 탐색

이런 작업을 미리 수행해서 Native 실행에 적합하도록 정리해 놓는 거예요.


🤔 왜 AOT가 중요할까? (특히 GraalVM Native에서)

GraalVM의 Native 이미지 기능은 Java 애플리케이션을 C처럼 단일 실행 파일로 컴파일합니다.
이 과정에서는 리플렉션, 프록시, 리소스 로딩 등 동적 기능이 안 보이면 포함되지 않아요.
그래서 Spring Boot 같은 프레임워크는 미리 정적인 분석을 통해 필요한 것들을 Native에 반영해야 해요.

이게 바로 AOT의 역할입니다!


⚙️ AOT vs JIT 간단 비교

항목  AOT (Ahead-Of-Time)  JIT (Just-In-Time)
시점 실행 전에 컴파일 실행 중에 컴파일
속도 빠른 시작 속도 (Startup time) 느린 시작 속도
크기 더 작거나 최적화된 바이너리 JVM 포함으로 크기가 큼
유연성 리플렉션, 동적 코드 제한 자유로운 동적 기능
사용처 서버리스, CLI 앱, 경량 MSA 전통적인 웹 앱, 데스크탑 앱

💡 Spring Boot에서는?

Spring Boot 3부터는 AOT 지원이 내장되어 있어요.

예시: Gradle로 Native 빌드 (AOT 포함)

./gradlew bootBuildImage --imageName=my-app --builder paketobuildpacks/builder:tiny -PBP_NATIVE_IMAGE=true

또는:

./gradlew nativeCompile

이 과정에서 Spring은 내부적으로 AOT 컴파일을 수행하고, 필요한 구성 정보를 추출해서 GraalVM에 전달합니다.


📌 정리하면

  • AOT는 실행 전 미리 분석하고 컴파일하는 방식
  • Native 이미지(예: GraalVM)에서 필수적
  • Spring Boot 3+ 는 AOT를 자동으로 지원

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함