compile(컴파일) 이란
개발자가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일을 뜻한다. 즉 java의 경우는 javac를 통하여 .java파일(컴파일 전)를 .class파일(컴파일 후)로 생성하는 과정을 말한다. 컴파일되는 과정을 수동으로 해보면 아래와 같다.
1) HelloCompile.java 생성
public class HelloCompile {
public static void main (String [] args) {
System.out.println("Hello Compile!");
}
}
2) HelloCompile.java를 javac로 컴파일. 컴파일을 하게 되면 HelloCompile.class가 생성 된다.
3) java로 컴파일된 HelloCompile.class를 실행
build(빌드)
소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말한다. 빌드의 과정은 아래와 같다.
1) 컴파일 : 소스코드를 바이너리 코드로
2) 링크 : 클래스 파일들끼리 연결 (외부 라이브러리 포함)
3) 패캐징 : 연결된 클래스 및 리소스 파일 묶어주기
4) 테스트 : 기능 테스트
이러한 빌드의 4가지 과정을 통하여 java의 경우에는 jar(Java Archive) 파일 또는 war(Web Archive) 파일을 생성하게 된다. 즉 컴퓨터가 이해할 수 있는 언어로 번역된 파일들을 묶어서 해당 파일들을 실행할 수 있도록 해주는 작업을 말한다. Eclipse에서는 war로 Export를 하면 .war파일이 생성된다. 해당 .war파일이 빌드가 된 결과물이라고 할 수 있다.
deploy(배포)
빌드된 결과물을 사용자가 서버 등의 접근할 수 있는 환경에다가 배치하여 서비스 가능한 상태로 하는 것을 말한다. 간단한 예로는 AWS EC2에 tomcat을 install한 후 webapps 하위 폴더에 빌드된 결과물을 배치하게 되면 웹브라우저를 통하여 접근이 가능하다. /var/lib/tomcat9/webapps/ROOT/post아래에 위의 post.war의 압축을 풀어 배치 후 tomcat을 재가동 시켰더니 웹브라우저에서 접근이 가능했다. 실무적으로는 더 복잡하지만 해당 과정이 배포라고 할 수 있다.
마지막으로 인터넷에서 컴파일, 빌드, 배포의 쉽고 좋은 예시가 있어 가져왔다.
1. 영문으로된 글을 한글로 번역하는 것은 컴파일이다.
2. 번역한 글을 책으로 엮는 것은 빌드이다.
3. 완성된 책을 고객들이 읽을 수 있도록 서점에 진열하는 것은 배포이다.
4. 1~2번 과정을 하나로 묶어 '빌드 한다'고 하기도 한다.
'devops' 카테고리의 다른 글
Docker란 (0) | 2023.11.06 |
---|---|
Jenkins로 배포 자동화 실현해보기 (0) | 2022.09.04 |
CI/CD (0) | 2022.08.13 |