- 불필요한 데이터를 없애고, 여러 갈래로 퍼져있는 데이터들을 통합/압축하여 배포하기에 최적화된 상태를 만드는 것
- 빌드 과정을 진행하기 전과 비교했을 때 데이터의 용량이 줄어들고, 웹 사이트의 로딩 속도가 빨라진다는 장점이 있음
- 일반적인 의미의 빌드는, 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미
- 웹 앱에서와 같이 HTML, CSS, JS의 형태로 배포하는 경우는 조금 다르며, 웹 앱은 배포 가능한 정적 파일(static files)의 형태로 만들어 주어야 함.
- 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정
- 배포에서는 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요
-
Development
- 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정
- 개발 단계이기 때문에 실제 데이터를 이용하지 않고 더미 데이터를 이용해서 테스트
-
Integration
- 각자의 컴퓨터에서 작성한 코드를 합치는 과정
- 내가 작성한 코드가 다른 코드를 침범해서 오류를 일으키지 않는지, 코드 간에 conflict 여부 확인
-
Staging
- 실제 출시 단계인 Production 단계와 가장 유사한 환경에서 테스트를 진행
- 실제 데이터를 복사해 문제가 있지 않은지 등 다양한 환경에서 테스트를 진행
- 서비스와 관련된 부서 혹은 인원의 확인 과정을 거치기도 함.
-
Production
- 개발된 서비스를 출시하는 단계
- 사용자가 접속할 수 있는 Production 환경에서 코드를 구동하고 서비스를 제공
- 실제 데이터를 가지고 서비스가 운영되기 때문에 문제가 생기면 안 되는 단계
- 절대 경로 대신 상대 경로를 사용
- 환경에 따라 포트를 분기할 수 있도록 환경변수(env) 설정
- 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있음.
- 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 낮음.
- Docker와 같은 개발 환경 자체를 통일시키는 솔루션 사용