🚀   70세 이전에 한 모든 일은 신경 쓸 가치가 없다. - 호쿠사이

[Quarkus] 소개 및 준비

2024.08.06
9분

1. 소개 및 준비

1.1 Quarkus란 무엇인가?

Quarkus는 Java 애플리케이션의 실행 환경을 더욱 빠르고 효율적으로 만드는 것을 목표로 하는 Kubernetes 네이티브 프레임워크입니다. Quarkus는 특히 마이크로서비스와 서버리스 환경을 염두에 두고 설계되었으며, 빌드 타임 최적화 및 최소한의 메모리 사용량으로 빠른 부팅 시간을 제공합니다.

QuarkusGraalVM과 잘 통합되어 네이티브 이미지를 생성할 수 있으며, 이를 통해 Java 애플리케이션의 실행 속도와 리소스 효율성을 극대화할 수 있습니다. 기존의 Java 생태계와 호환되면서도 현대적인 개발 요구사항을 만족시키기 위해 탄생한 Quarkus는 특히 클라우드 환경에서 큰 강점을 발휘합니다.

1.2 Quarkus의 특징 및 장점

Quarkus는 기존 Java 개발자들이 익숙한 도구와 프레임워크를 최대한 활용하면서도 새로운 차원의 성능과 효율성을 제공합니다. 다음은 Quarkus의 주요 특징과 장점입니다:

  • 빠른 부팅 시간: Quarkus는 빌드 타임에서 많은 최적화를 수행하여 애플리케이션의 부팅 시간을 크게 줄입니다. 이는 서버리스 환경에서 특히 중요합니다.
  • 낮은 메모리 소비: Quarkus는 메모리 사용량을 최소화하여 컨테이너 기반의 마이크로서비스나 서버리스 애플리케이션에서 높은 성능을 발휘할 수 있습니다.
  • GraalVM 네이티브 이미지 지원: QuarkusGraalVM과의 긴밀한 통합을 통해 네이티브 이미지를 생성할 수 있습니다. 네이티브 이미지는 JVM 기반 애플리케이션보다 훨씬 빠르고 가벼운 실행 파일을 제공합니다.
  • 개발 모드 (Live Coding): Quarkus는 '개발 모드'를 통해 코드 변경 시 즉각적으로 결과를 확인할 수 있는 기능을 제공합니다. 이를 통해 개발 속도를 크게 높일 수 있습니다.
  • 강력한 확장성: Quarkus는 다양한 확장을 제공하며, 이 확장들은 기존의 Java 기술 스택 (예: Hibernate, RESTEasy, CDI 등)과 원활하게 통합됩니다.
  • 쿠버네티스 네이티브: QuarkusKubernetes 환경에서의 실행을 염두에 두고 설계되었습니다. 즉, Quarkus 애플리케이션은 클라우드 네이티브로 쉽게 전환할 수 있습니다.

1.3 QuarkusSpring 비교

많은 Java 개발자들이 Spring 프레임워크를 사용해왔기 때문에, QuarkusSpring을 비교해보는 것이 유용할 것입니다. 다음은 두 프레임워크의 주요 차이점입니다:

  • 부팅 시간 및 메모리 사용: QuarkusSpring Boot보다 더 빠른 부팅 시간과 더 낮은 메모리 사용량을 자랑합니다. 이는 Quarkus가 빌드 타임 최적화와 GraalVM 네이티브 이미지를 지원하기 때문입니다.

  • 개발 생산성: Spring은 방대한 생태계와 풍부한 문서로 인해 개발자들이 빠르게 개발할 수 있는 환경을 제공합니다. Quarkus 또한 개발 모드와 다양한 확장으로 개발 생산성을 높이는데 초점을 맞추고 있습니다.

  • 확장성: Spring은 오랫동안 Java 커뮤니티에서 사랑받아온 프레임워크로, 매우 많은 확장 기능을 제공합니다. Quarkus도 비슷한 확장성을 제공하지만, 특히 경량화와 성능 최적화를 위한 확장이 많습니다.

  • 배포 환경: Spring은 전통적인 서버 환경뿐만 아니라 클라우드에서도 널리 사용됩니다. Quarkus는 특히 클라우드 네이티브 환경, 특히 Kubernetes와 서버리스 환경에서 뛰어난 성능을 발휘합니다.

이러한 차이점을 이해하고 나면, Quarkus가 필요한 경우와 Spring이 적합한 경우를 구분하는 데 도움이 될 것입니다.

1.4 개발 환경 설정

Quarkus 프로젝트를 시작하기 전에 개발 환경을 설정하는 방법을 알아보겠습니다. Java와 Spring에 익숙한 개발자라면, Quarkus 환경 설정도 크게 어렵지 않을 것입니다.

1.4.1 필수 도구 및 설치

Quarkus를 사용하려면 다음과 같은 도구들이 필요합니다:

  • JDK (Java Development Kit): Quarkus는 최소 JDK 11 이상을 요구합니다. JDK 17을 사용하는 것이 권장됩니다.
  • Maven 또는 Gradle: Quarkus 프로젝트를 빌드하기 위해서는 빌드 도구가 필요합니다. 이 책에서는 Maven을 중심으로 설명하겠지만, Gradle도 지원됩니다.
  • Quarkus CLI: Quarkus CLI(Command Line Interface)를 사용하면 프로젝트 생성 및 관리가 편리해집니다. 설치 방법은 다음 몇가지 방법 중 선택할 수 있습니다.:
Linux|macOS|Windows
$ curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/
$ curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio
Windows
$ iex "& { $(iwr https://ps.jbang.dev) } trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/"
$ iex "& { $(iwr https://ps.jbang.dev) } app install --fresh --force quarkus@quarkusio"
sdkman
$ sdk install quarkus

1.4.2 Quarkus 프로젝트 생성 및 기본 구조 이해

Quarkus 프로젝트는 Quarkus CLI 또는 Maven/Gradle 명령어로 생성할 수 있습니다. Quarkus CLI를 사용해 프로젝트를 생성해보겠습니다:

$ quarkus create app first-quarkus-app -x=resteasy

위 명령어는 myapp이라는 이름의 프로젝트를 생성하며, RESTEasy 확장을 포함합니다. 생성된 프로젝트의 구조는 다음과 같습니다:

  • src/main/java: Java 소스 코드가 위치하는 디렉토리입니다.
  • src/main/resources: 설정 파일 및 리소스 파일이 위치하는 디렉토리입니다.
  • src/test: 테스트 코드가 위치하는 디렉토리입니다.
  • pom.xml: Maven 빌드 설정 파일입니다. 이 파일에서 의존성 관리와 빌드 설정을 합니다.

이제 Quarkus의 기본 구조와 환경 설정을 이해했으므로, 다음 글에서는 Quarkus의 아키텍처와 기본 개념에 대해 더 깊이 있게 알아보겠습니다.


링크 및 참고


프로필 사진
Nanutbae
A small boat sailing freely on the sea of curiosity ⊹ ࣪ ﹏𓊝﹏𓂁﹏⊹ ࣪ ˖

Quarkus를 이용한 REST API 개발

1 / 3
24.08.05
0분
Quarkus와 Panache를 활용한 REST API 개발에 관한 블로그 시리즈입니다. Java와 Spring에 익숙한 개발자들이 Quarkus를 빠르게 익히고 적용할 수 있도록 구성되었습니다.