Tech-Trends

Quarkus 특징과 활용 - Java보다 10배 가볍고 30배 빠른 기동시간

IT오이시이 2023. 6. 19. 00:27
728x90

 Quarkus 특징과 활용 - Java보다 10배 가볍고 30배 빠른 기동시간

 

Quarkus 개요

Quarkus는 Java를 Docker 컨테이너와 Kubernetes 환경에 최적화하도록 구현되어 빠른 부팅시간과 낮은 메모리를 사용합니다.  Kubernetes 와 같은 컨테이너 오케스트레이션 플랫폼에서 즉각적인 스케일업과 고밀도로 메모리를 사용할 수 있습니다.
Eclipse MicroProfile 및 Spring, Apache Kafka, RESTEasy(JAX-RS), Hibernate ORM(JPA), Spring, Infinispan, Camel 등과 같이 널리 사용되는 Java 표준, 프레임워크 및 라이브러리와 연동됩니다.
 

 

Quarkus 주요 기능

Quarkus는 자바 애플리케이션 개발을 위한 많은 기능과 도구를 제공합니다. Quarkus는 다양한 확장 기능을 사용하여 데이터베이스 연결, RESTful 웹 서비스, 보안, 메시징 등 다양한 영역에서 기능을 확장할 수 있습니다. 또한, Quarkus는 GraalVM과 함께 사용하여 네이티브 이미지로 컴파일할 수 있습니다.
 Netty는 네트워크 관련 기능에 중점을 두고 있으며, TCP 및 UDP 프로토콜을 비동기적으로 처리하고 다양한 프로토콜 지원, 스트리밍, WebSocket, SSL/TLS 암호화 등의 기능을 제공합니다.

 
 

 

Quarkus 사용 사례

Quarkus는 주로 클라우드 네이티브 애플리케이션 개발, 마이크로서비스 아키텍처, 서버리스 컴퓨팅 등의 환경에서 사용합니다.

  • 마이크로서비스 아키텍처: 경량화된 특성과 확장성을 통해 여러 마이크로서비스 인스턴스를 실행하고 효율적으로 관리
  • 이벤트 기반 시스템:  이벤트 드리븐 구조에서의 작업을 지원하고, 이벤트 스트림 처리 및 메시징 시스템과의 통합
  • 서버리스 애플리케이션:   빠른 부팅 시간과 적은 메모리 요구하는 서버리스 환경에서의 람다 함수나 기타 이벤트 기반 작업에 적합
  • 현대적인 웹 애플리케이션:  웹 애플리케이션 및 RESTful API 개발에 유용하고, Java EE 및 Jakarta EE와의 호환성을 통해 기존의 자바 기술 스택을 활용, Kotlin 및 Groovy와 같은 다른 JVM 언어와 함께 사용가능


 

 

 

Quarkus 특징

 

 (경량화) 경량화된 자바 프레임워크

Quarkus는 경량화된 자바 프레임워크로 낮은 메모리 사용량과 빠른 시작 시간에 최적화되어 있습니다. 빠른 부트스트래핑, 최적화된 메모리 사용, 빠른 시작 시간, 작은 디스크 풋프린트 등의 특징을 갖고 있습니다. 주로 서버리스, 클라우드 네이티브 및 마이크로서비스 애플리케이션을 위해 설계되었습니다. 

Netty는 고성능의 이벤트 기반 네트워크 애플리케이션 프레임워크로, 비동기 네트워크 프로그래밍을 위해 설계되었습니다. 주로 네트워크 서버, 프록시, 게임 서버 등의 분산 시스템을 구축하는 데 사용됩니다.

 

최적화된 Java Virtual Machine (JVM)

 Quarkus는 최소한의 메모리 사용으로 자바 애플리케이션을 실행할 수 있도록 설계되었습니다. 이는 효율적인 리소스 관리와 더 많은 인스턴스를 실행할 수 있는 장점이 있습니다.

또한 Quarkus는 GraalVM과 함께 사용할 수 있는 네이티브 이미지 컴파일러를 지원합니다. 이를 통해 Quarkus 애플리케이션을 네이티브 바이너리 형태로 컴파일하여 빠른 시작 시간과 작은 메모리 풋프린트를 실현할 수 있습니다.

Quarkus는 Java Virtual Machine (JVM) 위에서 실행되며, 주로 Jakarta EE (이전에는 Java EE로 알려진) 기술 택을 사용합니다. Quarkus는 기존의 Java EE와는 다른 방식으로 작동하여 빠른 시작 시간과 최적화된 성능을 제공합니다.

GraalVM(Java 및 JavaScript를 포함한 여러 언어로 작성한 애플리케이션을 실행하기 위한 범용 가상 머신)
• Graal”이라는 단어는 “Grail”을 의미하는 고대 프랑스어에서 유래되었다. GraalVM의 “VM”은 “JVM”내부에서 실행됩니다.

• Oracle에서 만든 JVM(Java Virtual Machine) 및 JDK(Java Development Kit)기반 애플리케이션의 성능과 효율성을 개선합니다.

 

  

개발 생산성 과  비동기 반응형 어플리케이션 개발

Quarkus는 자바 생태계의 다양한 표준과 호환됩니다. Java API 및 마이크로 프로파일링 지원, 개발자 경험 향상을 위한 툴킷 등의 기능을 제공하여 개발 생산성을 높일 수 있습니다.

Quarkus는 반응형 애플리케이션 개발을 지원합니다. 이는 비동기적인 이벤트 기반 프로그래밍과 함께 작동하여 애플리케이션의 응답성과 확장성을 향상시킵니다. 이를 통해 수천 개의 동시 연결을 처리하거나 대규모 분산 시스템을 구축할 수 있습니다.  또
 

 

(확장성) 애플리케이션 개발을 위한 많은 확장 기능과 도구를 제공

 Quarkus는 다양한 확장 기능을 사용하여 데이터베이스 연결, RESTful 웹 서비스, 보안, 메시징 등 다양한 영역에서 기능을 확장할 수 있습니다. Quarkus는 대부분의 자바 개발자가 익숙한 API와 구성 요소를 사용하며, 필요한 확장만 선택하여 애플리케이션에 추가하면 되므로, 애플리케이션의 크기와 실행 속도를 효과적으로 관리할 수 있습니다.

 

컨테이너 최적화 - 클라우드 네이티브 지원

Quarkus는 Kubernetes, OpenShift, Knative 등과 같은 클라우드 네이티브 플랫폼을 지원하여 컨테이너 기반 환경에서 최적화된 실행을 지원합니다.

컨테이너화된 환경에서의 자동 확장, 롤링 업데이트, 서비스 디스커버리 등의 기능을 제공하여 애플리케이션을 클라우드에 더욱 적합하게 만듭니다.

네이티브 이미지 컴파일러인 GraalVM과 함께 사용하여 애플리케이션을 네이티브 바이너리 형태로 컴파일할 수 있습니다. 이를 통해 빠른 시작 시간과 작은 메모리 풋프린트를 실현하며, 적은 자원으로 더 많은 애플리케이션 인스턴스를 실행할 수 있습니다.
 

Container-First 에 필요한 정책

  • 빌드 타임 메타데이터 처리
  • -  소프트웨어 빌드 과정에서 실행 시간에 필요한 메타데이터를 미리 처리하는 기술로 빌드 단계에서 이미 처리하여 실행 시간 성능을 향상합니다.

 

  • 리플렉션(Reduced reflection usage) 사용 감소
  • - 리플렉션은 실행 시간에 클래스의 메소드, 필드 등에 대한 정보를 동적으로 가져오는 기능을 제공합니다. 리플렉션 사용을 최소화하고 정적인 코드를 선호하는 것이 좋습니다.

 

  • Graal/SubstrateVM에 대한 최고 수준의 지원
  • - Graal/SubstrateVM은 Just-In-Time (JIT) 컴파일러와 달리, 미리 컴파일하는 AOT(Ahead-of-Time) 컴파일러입니다.
  • - 자바 애플리케이션을 네이티브 바이너리로 컴파일하여 실행 속도를 크게 향상할 수 있고 빌드 타임에 이미지를 사전 부팅하고 최적화하기 때문에 실행 시간 성능이 향상 합니다.

 

  • 기본 이미지 사전 부팅
  • -  애플리케이션의 기본 이미지를 미리 로드하고 초기화하여 시작 시간을 단축하는 기술입니다.
  • - 애플리케이션의 시작 시에 모든 리소스를 동적으로 로드하는 대신, 미리 부팅된 이미지를 사용하여 초기 상태를 빠르게 구성하여 애플리케이션의 응답시간을 단축합니다.

 

(통합성) 통합 기술 지원

Quarkus는 다양한 기술 스택과의 통합을 지원합니다. Java EE (Jakarta EE)의 주요 구성 요소와 API를 사용할 수 있으며, 다른 프레임워크와의 통합도 쉽게 구현할 수 있습니다. 또한, Quarkus는 마이크로서비스 아키텍처에서 일반적으로 사용되는 기술과의 통합을 위한 도구와 지원을 제공합니다.
 
 
https://www.ibm.com/cloud/blog/our-journey-with-quarkus
 
https://www.linkedin.com/pulse/quarkus%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-jonggyou-kim/?originalSubdomain=kr
 
 

728x90
반응형