티스토리 뷰

Quarkus의 개념

Quarkus는 Java 가상머신(JVM) 및 Native 컴파일을 위해 만들어진 풀스택, 쿠버네티스 Java 프레임워크이다. 기본적으로 GraalVM과 함께 사용되며, 클라우드 네이티브 애플리케이션 개발에 적합한 기술 스택과 기능을 제공한다.

Java는 On-premise환경의 대규모 서비스에 적합하도록 설계되어 있기 때문에 컨테이너 중심의 Cloud-Native환경에서는 느린 부팅속도, 많은 리소스 사용, 유연성 부족 등 여러 문제가 발생하였고, 이를 해결하기 위해서 Red Hat이 주관이 되어 Quarkus Project가 시작되었다.

Quarkus Project에서는 마이크로서비스, K8s용 가상머신인 GraalVM과 OpenJDK HotSpot에 최적화되도록 설계되었으며, 반응형(reactive)와 명령형(imperative)를 통합 한 프로그래밍 모델을 제공하여 Java를 Kubernetes와 Serverless 환경에서 활용가능한 프레임워크를 개발을 목표로 진행되었다.

 

 

Quarkus의 특징

컨테이너 우선

적은 메모리 사용 및 빠른 시작 시간이 가능하도록 최적화된 설계.

빌드 타임 메타데이터 처리 방식 활용 (Container 환경 내 효율적 동작을 위해 빌드 시 메타데이터를 사전 처리하는 방식)

Graal/SubstrateVM에 대한 최고 수준 지원, 리플렉션 사용 감소 등 방식을 활용.

 

개발자 친화

개발자가 즉시 코드변경 효과를 확인하고 신속하게 문제를 하결할 수 있는 라이브 코딩, 통하 북성과 같이 실행중인 웹에 바로 변경사항 반영을 할인할 수 있음.

임베팅된 관리형 이벤트 버스를 사용한 통합 반응형(reactive) 및 명령형(imperative) 프로그래밍 모델로 설계.

통합 설정 및 손쉬운 기본 실행 파일 생성 등의 추가 기능 제공.  

 

반응형(reactive)와 명령형(imperative) 지원

어플리케이션 개발시 기존의 명령형 스타일 코드와 Non-blocking, 반응형(reactive) 스타일을 단일 런타임에서 원활하게 결합하도록 통합설계.

명령형 모델 작업에 익숙해 변화를 원치 않는 Java 개발자와 클라우드 네이티브/반응형 방식으로 작업하는 개발자 모두에게 유용.

핵심은 Vert.x와 Netty 명령형 코드를 사용하고, 그 외 다양한 반응형 프레임워크와 확장기능을 사용가능.

 

Runtime시 수행하는 시간을 최대한 Build Time으로 이동

Runtime시 수행되는 종속성 작업을 최소화하기 위해 Build Time시 데드코드를 제거하고 명확한 테타데이터에 대한 표준화 작업을 진행.

최적화의 단계를 여러부분으로 나눠 전체를 최적화하는 단계, 일부를 최적화하는 단계, 런타임 등을 반영하는 단계 등으로 순서대로 최적화 단계를 거치고 이후 빌드 수행할때마다 바이너리 재작성 및 패키징을 통해 모든 부스트랩 클래스 도러가 더이상 로드되지 않도록 함.

이를 통해 부트타임이 단축되고 메모리에 적재되어야 할 부분을 빌드시 패키징에 담아 메모리 사용량도 감축.

 

 

Quarkus의 활용장점 

Cloud, Container, Serverless환경에 이상적 :  

- 메모리 사용량이 적고, 최초 응답시간이 빨라 특히 Cloud, Container환경에 적합
- Kubernetes와 같은 Container orchestration 플랫폼에서는 거의 즉시 확장되고 고밀도 메모리 활용이 가능
- 또한, 컨테이너 밀도를 최적화하여 낮은 메모리 사용량, 애플리케이션 및 컨테이너 이미지의 footprint를 낮게 하여 높은 런타임 효율을 가능하게 함

 

생산성 향상 :

- 반복적 작업을 자동화하는 기능이 내장되어 있어 개발자 작업 속도가 향상
- Eclipse MicroProfile, Sprint Dependency Injection, Hibernate 등의 대중적인 프레임워크와 호환 가능

 

개발 모델 선택의 자율성 :
- 명령형, 반응형 모델을 통합하여 각각의 스타일을 활용하거나, 2가지 개발 스타일을 혼용하여 사용할 수 있어 개발자들이 적합하게 활용 가능

 

Java 최적화 :
- Quarkus는 Java개발자들이 빠르게 학습할 수 있고, Java를 기본적으로 컴피일된 고수준 프로그래밍 언어와 유사하게 바꾸고 최적화
- DB 엑세스, 통합, 비즈니스 자동화 등의 다양한 기능 내장, Microservices 아키텍처와 개발을 지원

 

728x90
반응형