sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
extra_vars6 |
최근 java project sample 들을 찾아서 실행할때 대부분 maven 과 gradle 로 빌드하고 실행하게 되어 있는데
실행할때 tomcat 과 같은 별도의 container server 를 설치하여 war 만 배포하고 실행하는게 아니라
gradle 에서 gretty 와 jetty 를 설정하여 was 가 구동되는 형태로 공유하고 있는걸 알게 되었다.
그래서 gradle 에 정의된 Gretty 와 Jetty 에 대해 phind 에게 물어보았다.
1. Gretty
Gretty는 Gradle 플러그인으로, Gradle 프로젝트 내에서 Jetty 및 Tomcat 웹 서버를 쉽게 시작하고 관리할 수 있도록 설계되었습니다.
이를 통해 개발자들은 기존 Gradle 환경에서 별도의 서버 설정 없이도 웹 애플리케이션을 실행하고 테스트할 수 있습니다.
Gretty는 특히 서블릿 기반의 Java 웹 애플리케이션을 개발하는 동안 로컬 서버를 빠르게 실행하는 데 유용합니다.
주요 특징
-
Jetty 및 Tomcat 지원:
- Gretty는 Jetty와 Tomcat을 모두 지원하여, 개발자가 프로젝트 요구 사항에 맞는 서버를 선택하여 사용할 수 있습니다.
두 서버에 대한 다양한 버전을 선택할 수도 있습니다.
- Gretty는 Jetty와 Tomcat을 모두 지원하여, 개발자가 프로젝트 요구 사항에 맞는 서버를 선택하여 사용할 수 있습니다.
-
핫스왑(Hot-swap) 기능:
- Gretty는 코드 변경 시 서버를 재시작하지 않고도 변경 내용을 적용할 수 있는 핫스왑 기능을 지원하여 개발 효율성을 높입니다.
코드 수정 후 바로 결과를 확인할 수 있어 빠른 개발 주기에 적합합니다.
- Gretty는 코드 변경 시 서버를 재시작하지 않고도 변경 내용을 적용할 수 있는 핫스왑 기능을 지원하여 개발 효율성을 높입니다.
-
멀티 모듈 지원:
- Gretty는 멀티 모듈 프로젝트에서 각 모듈을 개별적으로 실행하거나 전체 애플리케이션을 하나로 결합하여 실행할 수 있는 기능을 지원합니다.
-
기본 Gradle 명령어와 통합:
- Gretty는 Gradle의 표준 명령어(
gradle appStart
,gradle appStop
,gradle appRestart
)와 함께 동작하여 프로젝트 설정 및 관리를 간소화합니다.
- Gretty는 Gradle의 표준 명령어(
-
다양한 구성 옵션:
- Gretty는 다양한 구성 옵션을 제공하여 포트 설정, 컨텍스트 경로, SSL 인증서, 세션 설정 등을 사용자 지정할 수 있습니다.
기본 사용법
build.gradle
파일에 Gretty 플러그인을 추가하고 필요한 서버 옵션을 구성하면 됩니다. 예를 들어:
plugins {
id 'org.gretty' version '3.0.5'
}
gretty {
contextPath = '/'
servletContainer = 'jetty9' // Jetty 9 사용
httpPort = 8080
}
이제 Gradle 명령어를 통해 서버를 시작할 수 있으며, Gretty의 핫스왑 기능과 Gradle과의 통합으로 개발 속도를 높일 수 있습니다.
2. Jetty
Jetty는 Java 기반의 오픈 소스 웹 서버이자 서블릿 컨테이너로, 웹 애플리케이션을 위한 서버와 애플리케이션 컨테이너 역할을 합니다.
Eclipse Foundation
이 관리하고 있으며, Eclipse Jetty 프로젝트라는 이름으로 유지되고 있습니다.
주로 RESTful 웹 서비스, 웹 애플리케이션, IoT 애플리케이션 등 다양한 웹 기술을 지원하기 때문에 개발자들에게 유용하게 사용됩니다.
주요 특징
-
경량화:
- Jetty는 가벼운 서버로, 리소스가 적게 들고 빠르게 시작할 수 있어 임베디드 시스템과 마이크로서비스 아키텍처에 적합합니다.
-
임베디드 서버:
- Jetty는 Java 애플리케이션에 내장할 수 있는 임베디드 서버 기능을 지원합니다.
이로 인해 개발자는 애플리케이션 내에서 Jetty를 호출해 웹 애플리케이션을 쉽게 배포할 수 있습니다.
- Jetty는 Java 애플리케이션에 내장할 수 있는 임베디드 서버 기능을 지원합니다.
-
서블릿 컨테이너:
- Jetty는 Java 서블릿과 JSP(JavaServer Pages)를 지원하는 표준 웹 컨테이너입니다.
이를 통해 Java 기반의 다양한 웹 애플리케이션을 운영할 수 있습니다.
- Jetty는 Java 서블릿과 JSP(JavaServer Pages)를 지원하는 표준 웹 컨테이너입니다.
-
웹 소켓과 HTTP/2 지원:
- Jetty는 최신 웹 프로토콜인 HTTP/2와 웹 소켓을 지원하여 실시간 통신을 요하는 애플리케이션에도 적합합니다.
-
유연한 확장성:
- 플러그인과 설정이 매우 유연해서 다양한 웹 애플리케이션 환경에 쉽게 맞출 수 있으며, Spring Boot와의 호환성도 좋아 마이크로서비스 아키텍처에서 활용도가 높습니다.
-
안정성과 커뮤니티:
- 오랫동안 사용되어온 안정성 높은 서버로, 방대한 사용자 커뮤니티와 문서가 있어 학습 자료와 해결 방안을 찾기 쉽습니다.
사용 사례
Jetty는 높은 가용성이 필요한 환경에서 주로 사용되며, IoT, 금융 서비스, 클라우드 플랫폼 등의 애플리케이션에서 널리 사용됩니다.
예를 들어 Spring Boot는 Jetty를 선택적인 임베디드 서버로 제공해 개발자들이 애플리케이션 내에서 Jetty를 쉽게 실행할 수 있도록 지원합니다.