본인이 번역가라고 생각해보자.
이번에 출판사로부터 일을 하나 받았는데,
영문으로된 글을 한글로 번역하는 일이다.
번역된 글은 출판사에서 적절히 페이지를 나누어 책으로 엮을 것이며,
완성된 책은 출판이 되어 서점에 진열될 것이다.
우리는 방금 컴파일, 빌드, 배포의 모든 과정을 훑어보았다.
영문으로된 글을 한글로 번역하는 것은 컴파일이다.
번역한 글을 책으로 엮는 것은 빌드이다.
완성된 책을 고객들이 읽을 수 있도록 서점에 진열하는 것은 배포이다.
1~2번 과정을 하나로 묶어 '빌드 한다'고 하기도 한다.
벽돌과 시멘트등 여러 재료를 사용해 무엇인가를 짓는(build)것의 결과물이 사람이 살 수 있는 집이 되는 것처럼,
코드와 컴파일러등 여러 도구를 사용해 무엇인가를 만드는(build) 것의 결과물은 동작하는 소프트웨어가 된다고 이해하면 좀 더 쉬우려나?
즉, 순서대로 보자면 컴파일 - 빌드 - 배포 의 순서이지만,
보통 컴파일을 포함한 배포하기 직전까지의 모든 과정을 ‘빌드 한다’ 라고 표현하기도 한다.
사실 용어를 정확하게 정의해두고 사용하는게 좋겠지만,
실제로 회사나 프로젝트 팀마다 용어를 조금씩 다르게 사용하는 경우가 있으니 참고해두자.
심지어는 코드가 완성된 직후, 컴파일부터 배포하는 모든 과정을 ‘빌드 한다’고 표현하는 경우도 봤다.
어쨌든 이를 좀 더 프로그래밍적 관점에서 보자면,
컴파일: 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일
빌드: 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일
배포: 빌드가 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시키는 일
혹은 컴파일을 포함해 war, jar 등의 실행 가능한 파일을 뽑아내기까지의 과정을 빌드한다고도 함.
이클립스에서 JAVA로 코딩을 한다고 생각해보자.
코드를 짜고나서 Run 버튼을 눌러 코드를 실행시킨다 (컴파일 + 실행)
정상적으로 실행되면 이것을 war 파일로 뽑아서(빌드) 웹서버에 올리거나(배포)
JSmooth 등을 사용해 exe, jar 파일로 뽑아(빌드) 사용자에게 주면 된다(배포)
참고로, 웹이 아닌 exe 파일로 배포하는 경우는 보통 ‘deploy’보다는 ‘distribution’ 한다고 표현하는 것 같다.
둘다 똑같은 ‘배포’이긴 하지만, deploy는 일반적으로 웹개발 영역에서 주로 사용되는 용어로 보인다.