스프링 네이티브는 그랄VM(GraalVM)을 활용해 스프링 자바(Spring Java) 및 코틀린(Kotlin) 애플리케이션을 네이티브 이미지로 컴파일한다. 이는 JVM(Java Virtual Machine)과 비교해 시작 시간과 메모리 오버헤드를 줄인다는 장점이 있다.
스프링 자바 애플리케이션을 네이티브 이미지라고 부르는 독립형 실행파일로 컴파일하기 위한 ‘스프링 네이티브(Spring Native)’가 베타 릴리즈로 출시됐다. JVM과 비교해 빠른 시작 시간과 낮은 런타임 메모리 오버헤드를 제공하는 게 특징이다.
공식 블로그에 따르면 이는 다중언어 런타임인 그랄VM을 사용해 스프링 애플리케이션을 네이티브 이미지로 컴파일한다. 이러한 독립형 실행파일은 거의 즉각적인 시작 속도(일반적으로 100ms 미만)와 즉각적인 피크 성능, 낮은 메모리 소비 등의 이점을 제공한다. 단, JVM보다는 빌드 시간이 길고 런타임 최적화가 적다고 개발팀은 전했다.
스프링 네이티브는 자바 및 코틀린 프로그래밍 언어를 지원한다. 스프링 네이티브에 적합한 사용 사례는 다음과 같다.
• 스프링 클라우드 파운데이션(Spring Cloud Function)을 사용하는 서버리스 컴퓨팅 애플리케이션
• 스프링 마이크로서비스 호스팅
• VM웨어 탄주(VMware Tanzu)와 같은 쿠버네티스 플랫폼 작업
스프링 네이티브를 사용하면 개발자는 최소 OS 계층, JDK, 스프링에서 필요한 비트만 전송하는 작은 네이티브 실행파일 그리고 애플리케이션에서 사용 중인 종속성을 포함하는 최적화된 컨테이너 이미지를 생성할 수 있다.
한편 스프링 개발팀은 앞으로 기존 스프링 부트(Spring Boot) 애플리케이션을 크게 변경하지 않고도 네이티브 이미지에 스프링 인프라를 적용할 계획이라고 밝혔다. ciork@idg.co.kr