-
[Spring Boot] JAR/WAR 배포 방법 비교하기Back-End/Spring Boot 2023. 6. 12. 22:45
스프링 부트의 장점 중 하나는 실행 가능한 JAR(Executable Jar)로 빌드하여 프로젝트를 바로 실행시킬 수 있다는 점이다. 이번 포스팅에서는 JAR와 WAR의 차이점을 알아보려고 한다.
기본적으로 JAR, WAR 모두 Java jar 옵션(java -jar)을 이용해 생성된 압축(아카이브) 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성 파일 등)을 패키징 한 것이다.
📑 JAR (Java Archive)
JAR 패키징은 클라우드를 염두에 둔 선택이다.
WAR 파일은 기존의 자바 애플리케이션 서버에 애플리케이션을 배포할 때는 적합하지만 대부분의 클라우드 플랫폼을 구성하는데는 잘 맞지 않는다. 일부 클라우드 플랫폼에서는 WAR 파일을 배포하고 실행할 수 있다. 그러나 모든 자바 클라우드 플랫폼은 실행 가능한 JAR 파일을 사용한다.
따라서 Spring Initializer에서도 JAR 패키징을 기본 값으로 사용하는 것이다.
JAR의 특징은 다음과 같다.
📌 JAR는 JAVA로 만든 어플리케이션의 구성요소들로 압축시켜놓은 파일이다.
📌 JRE or JDK 환경에서 JAR 파일을 실행시킬 수 있다. (java -jar 프로젝트네임.jar)
📌 Class(JAVA리소스, 속성파일) 라이브러리 파일을 포함한다.
📌 스프링부트는 내장 톰캣을 포함하고 있기 때문에 간단하게 JAR 배포만으로 실행 가능하다.
📌 스프링부트에서는 jsp를 지양하는데 JAR에서는 JSP를 사용할 수 없다.📑 WAR (Web Application Archive)
만약 기존의 자바 애플리케이션 서버에 우리 애플리케이션을 배포하고자 한다면 WAR 패키징을 선택하고 웹 초기 설정 클래스를 포함시켜야한다.
WAR의 특징은 다음과 같다.
📌 Servlet/JSP 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷
📌 웹 관련 자원들을 포함함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
📌 사전 정의된 구조를 사용함 (WEB-INF, META-INF)
📌 별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요
📌 즉 , JAR 파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.📑 결론
JAR, WAR 파일 애플리케이션 리소스를 패키징 하는 방법에 차이가 있을 뿐, 뭘 사용해야 하느냐는 개발자의 판단에 따를 뿐이다. 꼭 WAR를 사용해야만 하는 이유(JSP를 사용하여 화면을 구성해야한다. 외장 WAS 이용할 계획이 있다)가 아니라면 뭘 사용할지에 대한 완벽한 해답은 없는 듯 하다. Spring Boot에서 가이드하는 표준은 JAR이니까 JAR를 사용하여 서비스 하는 것도 괜찮은 선택이다.
[참고]
https://hye0-log.tistory.com/27 , https://jeongkyun-it.tistory.com/126
반응형'Back-End > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring Security 설정, 예제, 용어와 흐름 (0) 2023.06.23 [Spring Boot] JAR -> WAR로 변경하기 (0) 2023.06.12 [Spring Security] 인증(Authentication)과 권한 부여(Authorization) (0) 2023.05.19 [Spring Boot] bootstrap css 파일 경로 인식 못 함 (0) 2023.03.30 [Spring Boot] 서버 재시작 없이 html 변경하기 (thymeleaf) (0) 2023.03.29