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는 클라우드 시대에 필수로 한 이유가 있었다~!
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
스프링시큐리티6(OAuth2)의 속도, 자원절감, 보안향상, 권한조정의 이점 (0) | 2024.07.21 |
---|---|
알고리즘 기초 정리 (0) | 2024.07.20 |
자바의 희망 구독/서브모델의 Kafka , 대용량처리 관련 캐쉬하는 Redis, 장애예방 CircuitBreaker, 장애대응책 RetryConfig (0) | 2024.07.18 |
스프링 기본개념과 변천사 그리고 스프링버전5이상 혹은 스프링부트3의 필요성에 관하여 (2) | 2024.07.13 |
스프링부트3 백엔드 개발자 되기 2 편(TDD, RESTful) (0) | 2024.06.27 |