LoGin
article thumbnail
반응형


 


 

출처 :  https://old-developer.tistory.com/m/171

 
 
 
 
 
SpringBoot를 사용한 프로젝트에서는 종종 일부 이해하기 어려운 결정이 내려집니다. 왜냐하면 이 프로젝트들 중 일부는 WAR파일로 배포하거나 Thymeleaf 대신 JSP를 사용하여 HTML 뷰를 구성하기도 합니다. 이러한 결정에 대해 동의하기 어려운 이유를 생각해 봤습니다.
 
 

Spring Boot프로젝트를 WAR 파일로 배포하는 이유는 무엇일까요?

주된 이유는 기존의 WAS 환경에서의 호환성 때문입니다. 일부 기업은 아직까지 전통적인 WAS를 사용하고 있으며, 이러한 환경에서는 WAR 파일로 배포하는 것이 일반적입니다. 따라서 Spring Boot로 개발한 애플리케이션을 이러한 환경에 쉽게 배포하는 것이 일반적입니다. 따라서 Spring Boot로 개발한 어플리케이션을 이러한 환경에 쉽게 배포할 수 있습니다.
하지만 이러한 접근 방식은 Spring Boot의 본래 의도와 조금 다르며, 독립적인 애플리케이션으로 개발하여 JAR 파일로 실행하는 것이 더 적합할 수 있습니다.
 
 
 

그렇다면 왜 일부 프로젝트는 여전히 WAR 파일로 배포하는 것일까요?

주로 기존의 시스템과의 호환성 및 운영 환경에 대한 적응성에 기인합니다. 또한, 일부 팀은 Spring Boot의 내장 서버가 충분히 안정적이지 않다고 생각할 수도 있습니다.
이러한 이유로 WAR 파일로 배포하는 것은 Spring Boot의 장점을 제대로 활용하지 못한다고 볼 수 있습니다.
 
Spring Boot 프로젝트를 개발하고 배포하는 방식은 팀과 프로젝트의 요구 사항에 따라 다를 수 있습니다. 그러나 Spring Boot의 핵심 개념을 이해하고 해당 개념에 맞게 프로젝트를 구성하는 것이 중요합니다.
가능하다면 Spring Boot의 장점을 최대한 활용하여 JAR파일로 배포하는 것이 더 좋은 선택일 수 있습니다.
 
다른 이유로는 Spring Boot 애플리케이션을 기존의 Java EE 환경에서 실행하고 관리하기 위해서, 이미 많은 기업이 Java EE 애플리케이션을 WAR 파일 형식으로 배포하고 있고, Spring Boot 애플리케이션도 동일한 환경에서 실행할 수 있도록 War 파일 형식으로 변환하여 배포하기도 하겠네요.
 
 
 

JAR 파일은 어떤 환경에서 배포하는 게 좋을까

JAR 파일은 주로 독립적으로 실행되는 Java 애플리케이션을 배포하는 데 사용됩니다. 
Spring Boot의 경우, 내장형 서버를 포함하고 있어서 JAR 파일 형식으로 패키징하여 배포하는 것이 일반적입니다.
 
모든 종속성을 하나의 파일로 패키징 하므로 배포와 실행이 간편합니다. 특히, 마이크로서비스 아키텍처에서는 각 서비스를 JAR 파일로 패키징하여 배포하는 것이 일방적입니다.
이렇게 하면 각 서비스가 자체적으로 필요한 모든 것을 포함하게 되므로 배포 및 관리가 용이합니다.
 
특히, 스프링 부트 내장형 서버를 사용하여 실행할 때 높은 이식성과 유연성을 제공합니다. 즉, 특정한 서블릿 컨테이너나 웹 서버에 종속되지 않고 독립적으로 실행할 수 있습니다.
그래서 클라우드 환경이나 컨텐이너 환경(ex, Docker)에서의 배포에 적합합니다.
 
 
 

WAR VS VAR 어떤 상황?

WAR파일은 주로 전통적인 Java EE 환경에서 사용됩니다. 기존의 서블릿 컨테이너 (Apache Tomcat, Jetty 등)에 배포되어 실행되는 웹 애플리케이션을 구축할 때 주로 WAR 파일 형식을 사용합니다.

  1. 기존의 Java EE 애플리케이션을 유지보수하고자 할 때
  2. 기업 환경에서의 배포 및 관리 프로세스가 WAR 파일 형식을 선호하는 경우
  3. Java EE 서버에 애플리케이션을 배포하고자 할 때(톰캣, 웹로직 등)

 
JAR 파일은 독립적으로 실행되는 스프링 부트 애플리케이션을 배포하는 데 사용됩니다.

  1. 마이크로서비스 아키텍처에서 각 서비스를 독립적으로 배포하고자 할 때
  2. 내장형 서버를 활용하여 애플리케이션을 실행하고자 할 때
  3. 클라우드 환경이나 컨테이너 환경에서의 배포를 위해 Docker 등을 사용할 때

 
 
 

결론

WAR 은 전통적인 Java EE 환경에서 웹 애플리케이션을 배포할 때, JAR은 독립적인 실행과 배포에 적합합니다.
 
 

728x90
반응형
profile

LoGin

@LoGinShin

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!