728x90
서버를 설정할 때, Deployment 옵션을 지정하게된다.
내가 진행했던 프로젝트에서는 'WAR exploded' 옵션을 사용하였는데 왜 이 옵션을 사용하였을까?
WAR / WAR exploded 옵션은 톰캣(Tomcat) 서버에서 애플리케이션을 배포할 때 방식을 지정하는 방법인데
두 옵션의 차이를 알아보자.
WAR ( Web Application Archive)
- WAR 파일 정의
- 웹 애플리케이션을 하나의 압축 팡리로 묶은 것
- JSP, 서블릿, HTLM, CSS, JavaScript, 라이브러리(JAR 파일) 등이 포함됨
- 작동 방식
- WAR 파일을 톰캣 서버의 'webapps' 디렉터리에 배포하면, 톰캣 서버가 이 파일을 자동으로 해제하고, 이 애플리케이션을 실행할 준비를 함
- 특징
- 관리 용이 : 파일 하나로 모든 애플리케이션을 포함하므로, 배포하고 관리 하기 쉬움
- 자동 해제 : 톰캣이 알아서 WAR 파일을 해제하고, 애플리케이션을 실행함
WAR exploded (해제된 WAR)
- 정의
- WAR 파일의 압축을 미리 풀어 놓은 상태 (톰캣 서버에 배포할 때 이미 폴더 구조로 파일들이 해제되어 있는 상태)
- 작동 방식
- 압축을 풀어놓은 폴더를 톰캣의 'webapps' 디렉터리에 배치하면 톰캣이 이 폴더를 그대로 사용하여 애플리케이션을 실행함
- 특징
- 빠른 배포 : 이미 압축이 풀려 있으므로 톰캣이 추가로 압축을 해제하는 시간이 필요없음
- 직접 수정 가능 : 파일이 압축되어 있지 않기 때문에, 톰캣 서버를 재시작 하지 않고도 파일을 직접 수정할 수 있음
'WAR exploded' 사용 이유 ?
1. 안정성 ( Stability)
- 문제방지
- 원본 소스는 애플리케이션이 제대로 작동하도록 만들어진 코드이기 때문에 실행할 때 오류없이 정상적으로 동작할 수 있다.
- 재현 가능성
- 만약 어떤 문제가 발생했을 때, 원본소스가 존재한다면 이전 상태로 되돌릴 수 있다.
2. 유지보수 ( Maintainablility)
- 코드 일관성 유지
- 팀에서 여러 사람이 함께 일할 때, 모두가 동일한 원본 소스를 사용하는 것이 중요
- 업데이트 용이성
- 만약 원본 소스를 변경하지 않았다면, 새로운 업데이트를 적용하기 쉽다.
원본 소스를 건드리지 않고 배포를 원하는 경우에 적합한 방법 ?
👉 'WAR exploded' 상태로 배포
원본 소스를 건드리지 않는 것은 중요한 문서를 그대로 보관하고, 복사본을 사용해 필요한 작업을 하는 것과 같다
두 옵션을 사용하기에 적합한 상황
위에서 WAR exploded의 장점을 나열했지만 , 이것이 WAR 방식보다 항상 뛰어나다는 것은 아니다.
장단점과 비교해서 각 옵션을 사용하기에 적합한 경우를 보자
WAR | WAR exploded | |
장점 | - 일관된 배포 : 하나의 압축 파일로 묶여있어 배포가 간단 - 보안 강화 : 모든 파일이 압축되어 있기 때문에 개별 파일이 노출될 가능성이 적고 안전함 - 간편한 롤백 : 문제가 발생했을 때, 기존의 WAR 파일로 쉽게 롤백할수 있음 ( 하나의 파일만 교체하면 되기때문) |
- 빠른 수정 가능 : 압축되지 않은 상태로 배포되기 때문에, 서버를 재시작 하지않고 직접 수정할 수 있음 ( 개발 중이거나 디버깅할 때 매우 유용) - 배포 속도 : 이미 압축이 풀려있는 상태기 때문에, 톰캣이 추가로 압축 해제할 필요없어 속도가 빠름 - 파일 접근 용이성 : 파일이 폴더 구조로 존재하므로, 특정 파일에 바로 접근하거나 개별 파일만 교체 가능 |
단점 | - 수정 어려움 - 배포 속도 |
- 파일 관리 복잡성 : 파일이 개별적으로 여러개 존재하므로 일관되게 관리하기 어려움 - 보안 취약성 : 파일이 개별적으로 노출되어 있으므로, 보안 측면에서 WAR 파일 보다 취약 - 추적 어려움 : 여러 파일이 분산되어 있어 특정 버그나 문제 발생시 어느 파일에서 문제가 발생했는지 추적하기 어려울 수 있음 |
언제 사용 ?!
WAR
- 운영 환경(Production) 에서 안정적이고 일관된 배포가 필요할 때
- 보안이 중요시되는 환경에서 파일이 직접 노출되는 것을 방지하고 싶을 때
WAR exploded
- 개발 중이거나 테스트 환경에서 자주 파일을 수정하고 바로바로 반영해야할 때
- 특정 파일만 수정하거나 업데이트 하는 상황이 많을 때
가장 어려운 서버 환경설정.. 하나하나 이해해 나가보자 !!
728x90
'TIL' 카테고리의 다른 글
TIL | Quartz 에서 Clustering 기능의 의미 (1) | 2025.02.05 |
---|---|
TIL | IntelliJ SVN 설정 (0) | 2024.10.13 |
TIL | NumberFormatException - for input string y (0) | 2024.06.19 |
TIL | DBeaver 사용시 서버가 계속 끊기는 문제 (1) | 2024.06.18 |
TIL | telnet 방화벽 접근가능 테스트 (0) | 2024.04.19 |