🗞️ 롤 챌린저 티어→ AI 광고 생성기로 연매출 1억 달러 도전
연봉과 커리어의 상관관계 함수, 이것을 결정하는 1가지 요소
Spring Boot vs. Quarkus: 클라우드 환경에서의 비교
소개
Spring Boot와 Quarkus는 모두 현대적인 Java 기반 웹 애플리케이션을 개발하기 위한 툴킷으로 널리 사용되고 있습니다. 이번 글에서는 다양한 유사점 과 차이점을 갖고 있는 두 프레임워크를 비교해보고, 클라우드 환경안에서의 효율성과 경제성을 간단히 살펴보고자 합니다.
공통점과 차이점
공통점
· Java 기반: Spring Boot와 Quarkus 모두 Java 언어를 기반으로 하기에 기존 Java 개발자들에게 쉬운 적응을 가능하게 합니다.
· 마이크로서비스 지원: 두 프레임워크는 마이크로서비스 아키텍처를 지원하여, 애플리케이션을 작은 모듈로 나누고 관리하기 용이하게 합니다.
· 풍부한 생태계: Spring Boot와 Quarkus는 확장이 가능하고 다양한 라이브러리와 플러그인을 제공하여 개발자들에게 다양한 선택지를 제공합니다.
차이점
Footprint
· Spring Boot: Spring Boot는 전통적인 Java 애플리케이션보다 더 큰 메모리 풋프린트를 가질 수 있으며, 이는 더 많은 자원을 필요로 합니다.
· Quarkus: Quarkus는 작고 경량화된 런타임 환경을 제공하여 메모리 풋프린트를 최소화합니다. 이를 통해 클라우드 환경에서 자원 효율성을 극대화할 수 있습니다.
클라우드 환경에서의 Ultra Lightweight 배포와 Cold Starts
· Spring Boot: Spring Boot 애플리케이션은 상대적으로 초기 구동 시간이 길고 무겁기 때문에 클라우드 환경에서 높은 Cold Start 시간을 가질 수 있습니다.
· Quarkus: Quarkus는 1초도 채 되지 않는 Cold Start 시간을 제공하여 확장성을 향상시킵니다.
AWS와 같은 공공 클라우드 제공업체에서의 비용 효율성
· Spring Boot: Spring Boot는 더 많은 리소스를 필요로 하기 때문에 공공 클라우드에서 높은 비용을 요구할 수 있습니다.
· Quarkus: Quarkus는 GraalVM을 사용하여 애플리케이션을 네이티브 바이너리로 컴파일할 수 있습니다. 이를 통해 실행 속도와 메모리 사용량을 최적화할 수 있으며 최적화된 메모리 사용량과 빠른 시작 시간으로 공공 클라우드 환경에서 더욱 효율적으로 작동하여 다방면에서 비용을 절감할 수 있습니다.
결론
Spring Boot와 Quarkus 모두 Java 기반 웹 애플리케이션 개발을 위한 강력한 도구입니다. 그러나 클라우드 환경에서 자원 효율성과 비용 효율성을 고려한다면 Quarkus가 더 적합한 선택일 수 있습니다. 이 두 프레임워크를 비교하여 프로젝트 요구 사항에 가장 적합한 것을 선택하는 것이 중요합니다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 12월 17일 오후 6:55
Quarkus를 실무에 도입하여 한동안 프로젝트를 진행하다 SpringBoot 기반의 DGS로 전환하여 진행 중 입니다. Quarkus의 장점은, 버리고 나서 더 크게 체감하게 되는데, 다른 것 보다도 의외의 편의성에 있었습니다. 기존 프레임웍의 아쉬움을 개선하기 위해 노력한 점이 문듯 문듯 느껴지게 되더라구요. 개인적으로 고생도 많았지만 추천하는 프레임웍 입니다.
@김정환 혹시 Spring Boot로 전환한 이유가 무엇인지 알려주실 수 있을까요??
@김정환 경험 공유해 주셔서 감사합니다. 물론 완벽한 프레임워크 없겠지만 제 생각에도 Quarkus의 개발자 경험을 무시할 수 없습니다.
@지영훈 모니터링과 레퍼런스의 부족 등의 이유로 전환했습니다. 레퍼런스 문제는 EJB가 친숙하다면 문제될것 같진 않지만, 모니터링의 경우 (open telemetry 등으로 구축은 가능 하지만) 핀포인트 등 다른 APM들의 편의를 따라가긴 힘듭니다. 만약, 다시 돌아간다면 GraphQL 사용 시의 스키마 자동 생성과 Subscription 편의 등 주로 편의 때문일 것 같습니다. 그리고, 스프링에서 쓰던 코드를 거의 그대로 가져올 수 있게 라이브러리를 제공하는 점도 이점일 것 같네요.
추가로... 내부적으로 VertX를 사용하고, 경량으로 운영할 수도 있으며, 개발 시 핫리로드의 이점 등 제겐 어렸을때 부모님께 받았던 종합선물셋트 같은 느낌이어서 좋았습니다^^;
Spring Boot 도 GraalVM 지원을 하고 있습니다. 너무 quarkus 입장에서 쓴글 처럼 보입니다.
@강현식 네 맞습니다. Spring Boot도 버전 3.0부터 (22년 11월 출시) GraalVM을 지원합니다만 Quarkus는 GraalVM을 염두에 두고 만들어졌고 핵심 기술이라고 보이며 Spring Boot의 경우에는 나중에 추가된 티가 납니다. 이글은 Quarkus의 입장에서 작성한게 아니라 Quarkus는 Spring Boot를 여러가지 기준에서 (startup time, build artifact time, 메모리 사용량, CPU 사용량) 능가한다는게 사실이기때문에 리서스에대한 많은 제한이 있는 환경에서 (이 글의 주제) 꼭 Java를 선택해야한다면 Quarkus가 맞는 선택입니다. 그럼에도 불구하고 Spring Boot의 자리는 여전히 있고 인기 또한 많은 도구입니다. 둘 다 JVM에서 오버헤드가 많아도 stable하며, native로도 performance 비슷하고 괜찮습니다.
안
... 더 보기실
... 더 보기