본문 바로가기

기타

[Intellij] 웹 어플리케이션 배포 패키지 유형, war, war(exploaed) 차이

개요

회사 프로젝트 실행은 Spring Applications에서 Main Controller을 실행시키지 않고 따로 Tomcat 서버를 구동시킨다.

Tomcat 서버를 Run하는 과정에서 war가 아닌 war(exploaed)로 실행시켜야 하고 이에 대한 차이점도 있는 것을 알게되어 정리하기 위한 게시물이다.

 

기본

  • 빌드(Build) : 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.
  • Maven에서 Artifact : maven build의 결과로 얻을 수 있는 일반적인 .jar나 .war 또는 여타의 실행 파일을 의미한다. 빌드로 생성되는 프로젝트의 결과물이다.
  • 배포(Deploy) : 응용 프로그램을 서버 상에서 활용할 수 있도록 구동시키는 것을 의미한다. 실행 가능한 파일을 서버에 올려 사용자가 이용 할 수 있게 하는 것을 의미한다.

 

자바에서 웹어플리케이션은 JEE 스펙에서 정의한 디렉토리 구조를 갖는 war 파일의 형태로 컨테이너에 배포된다.

Maven에서는 웹어플리케이션을 package 단계에서 기본적으로 war 파일로 패키징되는데 

이때, package 단계에서 archive 파일로만 배포말고 maven-war-plugin 플러그인에는 war:war 골뿐만 아니라 war:exploded나 war:in-place도 있다.

 

 

1. package(archive)

  • 아카이브(.war, .ear) 파일로 배포
  • 아카이브는 WAS(Tomcat)에 의해 압축이 풀린다.
  • 파일이 많은 경우 압축을 푸는 시간이 오래 걸릴 수 있다.
  • 원격(remote) 서버에 배포시 한 개의 파일만 전송하면 된다.
  • WAS(Tomcat)에서 제공하는 업로드를 통한 배포 기능을 활용할 수 있다.

 

2. exploded(expanded)

  • 아카이브를 압축 해제한 형태의 디렉토리로 배포
  • 별도의 디렉터리에 원본 소스를 복사하여 만든다.
  • 압축 및 해제 과정이 불필요하다.
  • 파일이 많은 경우 복사하는 시간이 오래 걸릴 수 있다.
  • 원본 소스를 건드리지 않고 배포를 원하는 경우에 적합하다.
  • 원격 서버에 배포시 파일이 많은 경우 전송 시간이 오래 걸릴 수 있다.

 

3. in-place

  • 소스 디렉터리(전체 또는 일부)를 그대로 배포
  • 추가적인 복사 과정 불필요하다.
  • 로컬 서버에 배포하는 경우에 적합하다.
  • WAS(Tomcat)가 런타임시 생성하는 파일이 소스와 섞일 수 있는 문제가 있다.

 

 

정리

archive는 압축파일이라 파일 변경 시, 배포해야되나, exploded의 경우 폴더 형태라 재배포 시킬 필요가 없다.