Table of contents
1. 소개 및 준비
1.1 Quarkus
란 무엇인가?
Quarkus
는 Java 애플리케이션의 실행 환경을 더욱 빠르고 효율적으로 만드는 것을 목표로 하는 Kubernetes
네이티브 프레임워크입니다. Quarkus
는 특히 마이크로서비스와 서버리스 환경을 염두에 두고 설계되었으며, 빌드 타임 최적화 및 최소한의 메모리 사용량으로 빠른 부팅 시간을 제공합니다.
Quarkus
는 GraalVM
과 잘 통합되어 네이티브 이미지를 생성할 수 있으며, 이를 통해 Java 애플리케이션의 실행 속도와 리소스 효율성을 극대화할 수 있습니다. 기존의 Java 생태계와 호환되면서도 현대적인 개발 요구사항을 만족시키기 위해 탄생한 Quarkus
는 특히 클라우드 환경에서 큰 강점을 발휘합니다.
1.2 Quarkus
의 특징 및 장점
Quarkus
는 기존 Java 개발자들이 익숙한 도구와 프레임워크를 최대한 활용하면서도 새로운 차원의 성능과 효율성을 제공합니다. 다음은 Quarkus
의 주요 특징과 장점입니다:
- 빠른 부팅 시간:
Quarkus
는 빌드 타임에서 많은 최적화를 수행하여 애플리케이션의 부팅 시간을 크게 줄입니다. 이는 서버리스 환경에서 특히 중요합니다. - 낮은 메모리 소비:
Quarkus
는 메모리 사용량을 최소화하여 컨테이너 기반의 마이크로서비스나 서버리스 애플리케이션에서 높은 성능을 발휘할 수 있습니다. GraalVM
네이티브 이미지 지원:Quarkus
는GraalVM
과의 긴밀한 통합을 통해 네이티브 이미지를 생성할 수 있습니다. 네이티브 이미지는 JVM 기반 애플리케이션보다 훨씬 빠르고 가벼운 실행 파일을 제공합니다.- 개발 모드 (Live Coding):
Quarkus
는 '개발 모드'를 통해 코드 변경 시 즉각적으로 결과를 확인할 수 있는 기능을 제공합니다. 이를 통해 개발 속도를 크게 높일 수 있습니다. - 강력한 확장성:
Quarkus
는 다양한 확장을 제공하며, 이 확장들은 기존의 Java 기술 스택 (예:Hibernate
,RESTEasy
,CDI
등)과 원활하게 통합됩니다. - 쿠버네티스 네이티브:
Quarkus
는Kubernetes
환경에서의 실행을 염두에 두고 설계되었습니다. 즉,Quarkus
애플리케이션은 클라우드 네이티브로 쉽게 전환할 수 있습니다.
1.3 Quarkus
와 Spring
비교
많은 Java 개발자들이 Spring
프레임워크를 사용해왔기 때문에, Quarkus
와 Spring
을 비교해보는 것이 유용할 것입니다. 다음은 두 프레임워크의 주요 차이점입니다:
-
부팅 시간 및 메모리 사용:
Quarkus
는Spring 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)를 사용하면 프로젝트 생성 및 관리가 편리해집니다. 설치 방법은 다음 몇가지 방법 중 선택할 수 있습니다.:
$ 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
$ 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"
$ 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
의 아키텍처와 기본 개념에 대해 더 깊이 있게 알아보겠습니다.
링크 및 참고
Quarkus를 이용한 REST API 개발