서비스에 맞는 Spring boot 패키징 방식?
프로젝트 도중 Spring boot를 이용한 서버를 만들려고한다. 이 서버는 API 서버로 배포하여 사용되고, 리소스 서버(DB)를 따로 두어 요청에 맞게 사용자에게 응답을 주는 역할을 하려한다. Spring boot에서는 jar와 war 2가지 방식의 패키징을 지원하는데, 어떤 방식을 사용해야할까?
JAR (Java ARchive)
- Java 어플리케이션이 자바 환경 위에서 바로 동작할 수 있도록 자바 프로젝트를 압축한 파일
- JRE(Java Runtime Environment)만 있으면 실행 가능
- 클래스 파일, 라이브러리, 리소스, 설정 파일들(META-INF 등)을 모여서 하나의 어플리케이션/라이브러리로 형성
- META-INF
- 자바 패키징 기술인 jar의 일부
- 자바에서 설정관련 파일을 저장하는 폴더
- META-INF
WAR (Web application ARchive)
- JSP/Servlet WAS 컨테이너 위에서 동작할 수 있는 웹 어플리케이션 압축 파일
- 별도의 웹 컨테이너(WAS) 필요
- WAS가 동작하면서 불러올 수 있는 설정 파일(WEB-INF)과 JSP, Servlet, XML, 정적 웹페이지(html) 등 웹 어플리케이션을 구성할 때 필요한 자원들을 포함
- WEB-INF
- 웹 어플리케이션의 사전 정의된 디렉터리 구조
- 중요한 파일들이 노출되지 않도록 만든 폴더
- WEB-INF
Spring boot 빌드시 WAS 내장 여부
- JAR로 빌드시, tomcat과 같은 WAS가 내장되어 실행
- 바로 실행이 가능 - WAR로 빌드시, 별도 WAS가 필요
결론
우선 이를 고민했던 이유는 두 방식의 배포가 어떤 차이를 가져올지 확신이 없어서였는데, 차이가 있다면 WAS의 내장 여부 정도였다. 내장 WAS에 대해 얼마나 신뢰를 하는가에 따라 두 방식이 갈리는 듯 하다. WAS에 대한 커스텀 설정을 할 일이 아직은 없기 때문에 결론적으로 JAR를 이용해서 구축을 해봐야겠다!
참조
[1] https://hye0-log.tistory.com/27
[2] https://m.blog.naver.com/whdgml1996/221938516145
[3] https://gocoder.tistory.com/29
[4] https://velog.io/@maldaliza/JAR-WAR%EB%9E%80
'고민하기' 카테고리의 다른 글
[자료구조] Array와 LinkedList의 삽입/삭제 (feat. ArrayList vs LinkedList) (0) | 2022.04.16 |
---|---|
OAuth란 무엇인가? (인증에 대하여) (0) | 2021.08.21 |
웹이란 무엇일까? (0) | 2021.08.11 |
백엔드 개발자 로드맵 (0) | 2021.08.11 |
버퍼(Buffer)를 사용하면 속도가 빨라진다? (0) | 2021.08.02 |