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

2025. 4. 11. 07:00·개발/IntelliJ

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 파일로 빌드하여 사용하는 것이 일반적이다. 

저작자표시 비영리 변경금지 (새창열림)

'개발 > IntelliJ' 카테고리의 다른 글

Lombok 적용 안될때  (0) 2025.03.09
인텔리제이 서버 설정  (0) 2025.03.05
인텔리제이 인코딩 설정하기  (0) 2025.03.04
인텔리제이에서 servlet 프로젝트 만들기  (0) 2025.03.04
'개발/IntelliJ' 카테고리의 다른 글
  • Lombok 적용 안될때
  • 인텔리제이 서버 설정
  • 인텔리제이 인코딩 설정하기
  • 인텔리제이에서 servlet 프로젝트 만들기
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
서버 배포 탭에서 war 와 war(exploded)의 차이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.