웹애플리케이션 배포 패키징 유형 3가지

Kang Dong Hyun·2023년 2월 21일
0

JAVA에서 웹애플리케이션은 JEE 스펙에서 정의한 디렉토리 구조를 갖는 war파일의 형태로 컨테이넝 배포된다. 빌드 관리 도구인 메이븐에서는 웹애플리케이션을 package단계에서 기본적으로 war 파일로 포장한다.

그런데 war라는 아카이브 파일로만 배포할 수 있는 건 아니다. maven-war-plugin에는 exploded나 in-place도 있다. 결국 웹애플리케이션을 배포하기 위한 패키징 유형을 3가지로 나눌 수 있다.

그 전에 war이 뭔지 jar가 뭔지에 대해 짚고 넘어가보자.

archive file

아카이브 파일이란 뭔가를 저장하여 보관한다는 뜻으로 압축된 파일을 의미한다.
일반적으로 일반 파일을 압축시킬 경우에는 확장자 zip파일이며, 클래스 파일들을 압축시킬 경우에는 jar 또는 war 등이 있다.

war

자바 서버 페이지, 자바 서블릿, 자바 클래스, XML, 파일, 태그 라이브러리, 정적 웹페이지 및 웹 애플리케이션을 구성할 때 필요한 자원을 압축한 jar파일이다.
간단하게 웹 관련된 것들을(tomcat 등..)이 들어있는 jar파일

jar

애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일 등)들을 패키징하는 파일
간단하게 여러 가지 클래스 파일들이 묶여서 하나의 역할을 한다.(jdbc 등..)

1. package(archive): 아카이브(war, ear) 파일로 배포

  • 아카이브는 결국 was에 의해 압축 풀림
  • 파일이 많을 경우 압축해제 시간이 오래 걸림
  • remote서버(원격저장소)에 배포 시 한 개의 파일만 전송하면 됨
  • was에서 제공하는 업로드를 통한 배포기능 활용가능

2. exploded(expanded): 아카이브를 압축해제한 디렉토리 형태 구조

  • 압축 및 해제 과정 불필요
  • 별도의 디렉토리에 원본 소스를 복사해서 만듬
  • 파일이 많은 경우 복사 시간이 오래걸릴 수 있음
  • 원본 소스를 건드리지 않고 배포를 원하는 경우 적합
  • remote서버에 배포 시 파일이 많은 경우 전송 시간이 오래걸릴 수 있음

3. in-place: 소스 디렉토리(전체 또는 일부)를 그대로 배포

  • 추가적인 복사 과정 불필요
  • 로컬 서버(test서버)에 배포하는 경우 적합
  • was가 런타임 시 생성하는 파일이 소스와 섞일 수 있음
profile
초보개발자의 스터디공간

0개의 댓글