Build, Compile, Link, Deploy
로컬 PC에서 개발을 하고 테스트 까지 진행한 뒤에 문제가 없을 경우 수정된 코드를 실서버에 반영해야 한다.
서버에 반영하는 것을 배포 라고 하고 그 과정을 위한 준비 과정을 빌드라고 한다.
Build
소스 코드 파일을 컴퓨터에 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말한다.
컴파일 된 코드를 실제 실행할 수 있는 상태로 만드는 일이다.
자바를 예로 들면 빌드시 컴파일, 테스팅, 패키징 등 작업이 일어난 후 target 폴더 안에 생성되는 (.jar .war) 것을 의미한다.
- JAR (Java Archive) : 자바에서 사용되는 압축양식, 클래스 + 리소스파일로 구성
- WAR (Web Archive) : 웹 어플리케이션을 압축하고 배포하는데 사용되는 파일 형태.
JAR에 비해 자바 서블릿, XML 파일, 정적 파일등 필요한 자원이 더 많다.
Build Tool
컴파일, 테스트, 배포 등 과정이 포함될 수 있고, 빌드 과정을 도와주는 도구를 빌드 툴이라고 한다.
빌드 툴로는 Ant, Maven, Gradle 등이 있다.
Compile
작성한 소스코드를 컴파일러를 통해 바이너리 코드로 변환하는 과정을 말한다.
소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 의미한다.
자바의 경우 .java 를 .class로 변환하는 과정을 의미한다.
Link
프로젝트를 진행하다 보면,
소스파일이 여러개 생성되고
A 소스파일에서 B 소스파일에 존재하는 함수를 호출하는 경우가 있다.
A와 B를 컴파일만 하면 A가 B에 존재하는 함수를 찾을 수 없어 호출할 수 없다.
이때 A와 B를 연결해 주는 작업을 Link라고 한다.
여러개로 분리된 컴파일한 소스파일들을 최종 실행 가능한 파일로 만들기 위해 필요한 부분을 찾아서 연결해주는 작업이다.
Java의 경우 JVM이 프로그램 실행 도중에 필요한 class를 찾아서 class path에 로드해준다.
Deploy
작성한 코드를 빌드하고, 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치하는 것이다.
간단하게 생각하면 빌드를 하고 생성된 jar 또는 war 파일을 WAS에 올리는 것이다.
Deploy Process
배포의 단계는 크게 development, Integration, Staging, Producution 으로 나눌 수 있다.
development : 여러명의 개발자가 각자 자신이 맡은 부분을 작업하는 단계
Integration : 하나의 브랜치로 PR을 날리는 단계
Staging : 테스트가 성공적으로 되어 PR이 수락되었다면, 프로덕션 환경과 가장 유사한 환경에서 배포를 테스트 해보는 단계이다.
Producution : 실제 사용자에게 배포를 하는 단계이다.
Reference
- https://choseongho93.tistory.com/296
- https://bamdule.tistory.com/137
- https://junroot.github.io/programming/Java%EC%9D%98-%EB%B9%8C%EB%93%9C%EC%99%80-%EB%B0%B0%ED%8F%AC/
- https://velog.io/@leede418/CS-Compile-Link-Build-%EB%9E%80