개발/IntelliJ

서버 배포 탭에서 war 와 war(exploded)의 차이

함수형 인간 2025. 4. 11. 07:00

IntelliJ IDEA에서 Tomcat 서버를 사용하여 웹 애플리케이션을 배포할 때 'Deployment' 탭에서 war exploded 방식과 일반적인 war (Archive) 방식으로 배포하는 것에는 개발 단계에서의 편의성과 관련이 있다.

1. Exploded (war exploded) 방식 배포:

  • 정의: 웹 애플리케이션을 압축된 .war 파일 형태가 아니라, 압축이 풀어진 상태의 디렉토리와 파일 구조 그대로 Tomcat의 배포 경로(예: webapps 폴더 내)에 복사하여 배포하는 방식.
  • 동작: IntelliJ가 프로젝트를 빌드한 후 생성된 클래스 파일들, 라이브러리(JAR), 웹 리소스(HTML, CSS, JS, 이미지 등), 설정 파일(web.xml 등)들을 Tomcat이 인식할 수 있는 디렉토리 구조로 만들어 지정된 위치에 직접 복사.
  • 장점 (주로 개발 시):
    • 빠른 변경 사항 반영 (Hot Swap/Update):  소스 코드를 수정한 후 IntelliJ의 'Update' 기능을 사용하면, 전체 애플리케이션을 재배포(redeploy)하지 않고 변경된 파일(예: 클래스 파일, 정적 리소스)만 빠르게 서버에 반영할 수 있다. 특히 HTML, CSS, JS 같은 정적 리소스는 수정 후 브라우저 새로고침만으로도 변경 사항을 즉시 확인할 수 있는 경우가 많다.
    • 디버깅 용이성: 서버에 배포된 파일 구조를 직접 탐색기에서 확인하고 수정(권장하지는 않음)하는 것이 상대적으로 쉽다.
  • 단점:
    • 배포 시 파일 수가 많으면 초기 배포 시간이 약간 더 걸릴 수 있다 (파일 복사).
    • 배포 구조가 물리적인 디렉토리 구조이므로, 파일 관리가 잘못되면 일관성이 깨질 위험이 (이론적으로) 있다.

2. Archive (war) 방식 배포:

  • 정의: 웹 애플리케이션의 모든 구성 요소(클래스, 라이브러리, 리소스 등)를 하나의 압축된 웹 아카이브(.war) 파일로 묶어서 배포하는 방식(전통적이고 표준적인 Java 웹 애플리케이션 배포 방식)
  • 동작: IntelliJ가 프로젝트를 빌드하여 .war 파일을 생성하고, 이 파일을 Tomcat의 배포 경로(예: webapps 폴더)에 복사. Tomcat은 이 .war 파일을 감지하고 내부적으로 압축을 해제하여 애플리케이션을 로드하고 실행. (Tomcat 설정에 따라 압축 해제 없이 실행할 수도 있지만, 보통은 해제합니다).
  • 장점:
    • 표준적이고 이식성 높음: 단일 파일로 애플리케이션 전체가 패키징되므로, 다른 서버 환경으로 애플리케이션을 옮기거나 전달하기 매우 용이. 운영 환경 배포 시 주로 사용.
    • 배포 일관성: 애플리케이션 전체가 하나의 단위로 배포되므로 버전 관리나 배포 관리가 명확.
  • 단점 (주로 개발 시):
    • 변경 사항 반영 속도 느림: 소스 코드를 조금만 수정해도 일반적으로 .war 파일을 다시 빌드하고, 기존 배포를 중지/삭제한 후 새로 배포하는 과정이 필요. IntelliJ의 'Update' 기능이 어느 정도 도움을 줄 수는 있지만, Exploded 방식만큼 빠르거나 유연하지는 않다. 작은 변경에도 상대적으로 긴 재배포 시간이 소요될 수 있다.

결론:

  • Exploded 방식: 주로 개발 환경에서 사용. 소스 코드 변경 시 빠른 반영(Hot Update/Swap)이 가능하여 개발 생산성을 크게 향상시킴.
  • Archive (war) 방식: 주로 테스트, 스테이징, 운영(프로덕션) 환경에서 사용합니다. 표준적이고 이식성이 높으며, 배포 관리가 용이.

IntelliJ에서는 개발 시 기본적으로 Exploded 방식을 추천하며, 실제 운영 서버에 배포할 최종 결과물은 war 파일로 빌드하여 사용하는 것이 일반적이다.