[Server] 빌드와 배포
컴파일된 코드를 실행가능한 형태로 만들어서 사용자가 웹 어플리케이션을 이용할 수 있게한다.
어느날 비개발직군인데 개발자와 일을 같이 하는 친구가 저에게 물어보았는데요
'도대체 빌드랑 배포가 뭐야?'
저는 이에 즉시 대답할 수가 없었습니다. 어렴풋이 추상적으로는 알고 있지만 설명하려니 정확하게는 모르는 상태였습니다.
이번 포스팅 작성을 통해 좀 더 정확하게 알고자합니다.
1. 빌드
.java 파일에 작성된 소스들은 사람이 작성한, 사람이 이해할 수 있게 작성된 코드입니다.
당연히 컴퓨터는 이런 형태의 소스 코드들을 이해할 수가 없습니다.
그래서 컴퓨터가 이해할 수 있는 언어인 이진 바이너리코드로 번역하는 과정(.class)을 컴파일 이라고 합니다.
컴파일된 파일(.class)들을 하나의 압축 파일로 패키징하고 이상은 없는지 검수하는 과정을 빌드라고 하는데요,
이 빌드의 결과물로 .JAR 또는 .WAR 파일이 생성됩니다.
2. plain jar
빌드의 결과물로 .JAR파일이 생성될 경우에는
1.스프링부트 실행이 가능한 .jar와 2.컴파일된 파일과 정적 리소스가 담긴 plain-jar
이 두가지가 생성이 됩니다.
plain-jar의 경우 외부 라이브러리를 포함하지 않아 주로 다른 프로젝트에 종속적으로 사용될 경우 사용합니다.
정리하자면 plain-jar는
자바 프로젝트를 압축한 파일 |
.class파일들과 해당 클래스에서 사용되는 정적 리소스(이미지)포함 |
외부 라이브러리 미포함 |
다른 프로젝트에 종속적으로 사용됨 ( 다른 프로젝트에서 외부 라이브러리로 사용됨을 뜻함) |
3. (Runnable) JAR
실행가능한 jar파일 입니다.
plain jar와 달리 |
의존하는 라이브러리나 외부 모듈을 포함하고 |
스프링부트 제공 내장 서버를 포함하고 있어서 |
배포 시, WAS 설치가 필요 없습니다. |
즉, 이 JAR 파일 하나만으로 실행하고 배포할 수 있습니다. |
4. WAR
war파일로 배포를 할 경우
내장 서버가 포함되어 있지 않기 때문에 WAS설치가 필요합니다.
WAR파일로 배포를 할 경우 |
내장 서버가 포함되어 있지 않기 때문에 WAS설치가 필요합니다. |
(Runnable)JAR의 경우 스프링부트가 제공하는 내장 서버에 JSP엔진이 미포함되어있어서 |
JSP(Java Server Page) 로 화면을 구성할 경우 |
WAR 파일로 빌드 후 배포해야합니다. |
5. 배포
빌드 과정에서 만들어진 .JAR 또는 .WAR 파일은 실행 가능한 형태이고,
실행을 함으로써 개발자가 만든 서비스를 일반 사용자가 사용할 수 있도록 시장에 내놓는 것을 배포라고 합니다.
배포의 방법에는 크게
- 소스코드로 전달
- jar파일로 전달
- war파일로 전달
이 있습니다.
5.1 소스코드로 전달
서버 내에서 직접 소스코드를 빌드하고 배포하는 방식입니다.
서버 내에서 빌드하기 때문에 서버에 jdk가 설치되어 있어야 합니다.
5.2 JAR파일로 전달
앞서 보았듯이 이미 java파일들을 컴파일하고 압축한 결과물(jar)을 전달하기 때문에
이 jar 파일을 실행할 jre 만 설치해줘도 됩니다.
5.3 WAR파일로 전달
war 또한 이미 빌드된 결과물을 올리는 방식이기 때문에 jre만 설치해도 됩니다.
다만, 내장 서버(톰캣)이 없기 때문에 WAS 도 같이 설치해주어야 합니다.
출처 : 참고 유튜브