source

Tomcat/Jetty에 Spring boot app vs.war 파일 구축

manysource 2023. 7. 4. 22:00

Tomcat/Jetty에 Spring boot app vs.war 파일 구축

이 경우 Spring Boot로 생성 및 구성된 간단한 RESTful 서비스를 고려해 보겠습니다.이 서비스는 데이터베이스(예: Postgres)와 통신합니다.

다음의 차이점은 무엇입니까?

  • 장화 .jar을 저장하고 에서 파일을공호실행합을 통해 합니다.java -jar myservice.jar?

또는

  • 패지대상으로 합니다..warTomcat/Jetty에 파일을 저장하고 배포하시겠습니까?

번째 , ▁a▁다▁seems▁to▁run를 실행하면 . 실행하기만 하면 됩니다..jar인스턴스를 배포해야 ..war파일입니다. 또 다른 차이점이 있나요?두 방법 모두 장단점이 있습니까?

.war 파일로 패키지하여 Tomcat/Jetty에 배포하시겠습니까?

가능하면 이렇게 하지 마세요.이유: 내장된 Tomcat(또는 아래, Netty, Jetty 등과 같은 다른 서버 런타임)을 사용하면 마이크로 서비스 아키텍처를 훨씬 쉽게 구축할 수 있습니다.

talks 중 것처럼 Josh Long은 IO에서 다음과 같이 말했습니다.“make Jar, not War”

한편, 서블릿 컨테이너가 있는 기존 인프라가 있고 이미 여러 애플리케이션이 있는 경우.이러한 서블릿 컨테이너에서 실행되는 전쟁은 애플리케이션을 전쟁 파일로 패키지화하여 릴리스 팀에 넘겨주기만 하면 됩니다(또는 기존 인프라를 재사용해야 함). 그러면 이야기가 달라집니다.그러나 기술 세계는 이미 이러한 관행에서 벗어나고 있습니다.

다시 말씀드리지만, 마이크로서비스의 관점에서, 봄 부팅의 관점에서, 저는 당신이 전통적인 배포 방식을 따르기보다는 임베디드 서버를 사용하고 실행 가능한 jar 파일을 만들 것을 권장합니다.

편집

응용 프로그램을 도커화하는 경우 "최종 아티팩트"("최종 아티팩트")로 Tomcat을 포장하는 두 가지 옵션이 있습니다. 즉, 병이 아닌 도커 이미지를 의미합니다.여기서 병은 중간 아티팩트에 불과합니다.

  1. 내장된 Tomcat을 사용하여 Tomcat이 병에 포장되고 JVM 도커 이미지를 사용합니다.

OR

  1. 병에서 Tomcat을 제외하고 응용 프로그램을 포장하고 Tomcat Docker 이미지를 사용합니다.

그럼에도 불구하고, 저는 개발 프로세스를 훨씬 더 쉽게 만들 수 있기 때문에 첫 번째 옵션을 선택할 것입니다(이것은 말할 필요도 없이, 새로운 개발자에 탑승하는 것이 더 쉬울 것입니다).

제품 페이지에 설명된 대로 이러한 병에는 서블릿 컨테이너가 포함되어 있으며 직접 시작합니다.

Tomcat, Jetty 또는 Underow를 직접 포함(WAR 파일을 배포할 필요 없음)

옆에 다른 애플리케이션이 없는 한 호스트에서 애플리케이션을 실행할 계획이라면(도커?) 좋은 가능성일 수 있습니다. 호스트에 다른 애플리케이션이 포함되어 있다면 이러한 서블릿 컨테이너를 호스트에 한 번만 가질 수 있기 때문에 전쟁을 전개하는 접근 방식이 더 흥미로울 것입니다.

언급URL : https://stackoverflow.com/questions/40641589/spring-boot-app-vs-war-file-deployed-on-tomcat-jetty