4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

클라우드시대에 2025년부터 지원 끊기는 이유 WebFlux(Spring5), 클라우드 시대에 절약과 함께 빛나는 AOT엔진의 Spring6 ~!

르무엘 2024. 7. 18. 08:31

SpringMVC는 전통적인 동기형이다. 그러나 스프링5에서 도입된 WebFlux는 새로운 웹프레임워크로, 비동기 및 논블로킹 애플리케이션을 개발할 수 있다. WebFlux는 리액티브 프로그래밍 모델을 기반으로 하여, 고성능,확장성, 효율성을 요구하는 어플리케이션에 적합하다. 즉, MSA,함수형프로그래밍으로 간결한 코드, 논블로킹 I/O로 동시에 더 많은 처리, Netty, jetty,tomcat 등 다양한 서버엔진이 있다. 결국 WebFlux는 실시간, MSA, 스트리밍 어플리케이션에 적합하다.

 결국 스프링5는 실시간,MSA,스트리밍 등 분업화와 실시간 및 대용량 처리에 적합하다.

스프링6으로 넘어가면서 자바17이 강제되고, AOT엔진으로 애플리케이션 시작시간 단축하고 메모리 사용량을 줄인다. 그리고 jakarta로 변경된 패키지들이 반영된다. 모듈화하고 모니터링하기 더 용이하다. 모듈화된 아키텍처라는 것은 MSA 개념에서 보다 더 작은 단위로 나누어 개발하고 배포가 가능한 것이다.

 AOT는 전통적인 JIT컴파일과 달리 애플리케이션의 일부 또는 전체를 미리 컴파일 한다. 이는 런타임에 필요한 작업을 줄여 시간을 단축하게 하는 것이다. AOT컴파일을 통해 생성된 네이티브 이미지는 JVM없이도 실행될수 있는 파일로, GraalVM과 같은 도구를 사용하여 생성할수 있다. AOT컴파일은 시작시간도 줄이고 메모리 사용량도 줄여 클라우드에 적합하다. 네이티브 이미지는 더 작은 크기를 가지므로 배포 크기도 줄어서 배포 및 전송 시간도 단축된다.

스프링 6이 클라우드 시대에 자바17을 최소사양으로 적용했다는건, 이미 MSA가 급 적용된 스프링5에서 한걸음 더 나아가 배포용량절감과 메모리 절약과 같은 것을 통해 자원을 절약할 수 있기 때문이다.

 물론 자바17이 개발자 입장에서 코드도 간결하고, AOT엔진이 클라우드 환경에서 무엇보다 메모리,용량 많은 것을 절약하고 시작시간도 단축하여 사용편이성을 제공한다.

JIT와 AOT로 간단히 설명하다. 

JIT와 같은 Runtime 때가 아닌 Runtime 이전에 컴파일된 AOT로 보안향상까지~!

뭐 런타임 최적화가 중요한 대규모 어플리케이션 정도면 모를까..

AOT는 클라우드 시대에 필수로 한 이유가 있었다~!

LIST