2025-11-04 21:17

Tags: 리액트 넥스트 데브옵스

빌드 (Build)

  • 개발자의 코드를 사용자가 실행할 수 있는 파일로 변환하는 과정.
단계 (Step)설명비유 (요리)
의존성 관리 (Dependency Management)코드 실행에 필요한 외부 라이브러리나 패키지를 다운로드하고 설치한다. (예: npm install, gradle build)필요한 모든 재료와 조미료를 장바구니에 담는 것
컴파일 (Compile)사람이 이해하는 고급 언어(Java, C++)를 컴퓨터가 이해하는 기계어(바이트코드, 바이너리)로 변환한다.날고기를 불에 익혀 먹을 수 있는 상태로 만드는 것
트랜스파일 (Transpile)특정 버전이나 환경에서 작동하도록 한 언어의 코드를 비슷한 수준의 다른 언어 코드로 변환한다. (예: TypeScript → JavaScript, ES6 → ES5)한국어 레시피를 영어 레시피로 번역하는 것
린팅 & 정적 분석 (Linting & Static Analysis)코드의 문법 오류, 잠재적 버그, 코딩 스타일 위반 등을 실행 전에 검사하여 코드 품질을 높인다.재료에 상한 부분이 없는지 미리 확인하는 것
통합 테스트 (Unit Test)작성된 코드의 각 기능(함수, 모듈)이 의도대로 정확히 작동하는지 독립적으로 검증한다.각 재료의 맛(단맛, 짠맛)이 정상인지 하나씩 맛보는 것
번들링 (Bundling)여러 개로 나뉜 JavaScript, CSS 파일 등을 하나 또는 몇 개의 파일로 합쳐 네트워크 요청 횟수를 줄인다. (예: Webpack, Rollup)밥, 반찬, 국을 하나의 도시락 통에 담는 것
압축 & 최적화 (Minification & Optimization)코드에서 불필요한 공백, 주석 등을 제거하고 변수명을 짧게 바꿔 파일 크기를 최소화한다. 이미지 파일 크기를 줄인다.도시락 통의 불필요한 공간을 줄여 부피를 최소화하는 것
패키징 (Packaging)모든 결과물을 하나의 실행 가능한 파일(예: .jar, .war, .exe)이나 배포 가능한 아카이브(예: .zip, Docker Image)로 묶는다.완성된 도시락을 배달 가방에 넣는 것
단계주요 활동설명대표 도구
1. 의존성 관리 (Dependency Management)라이브러리 다운로드, 버전 관리프로젝트가 필요로 하는 외부 라이브러리나 프레임워크를 지정된 저장소(Repository)에서 다운로드하고, 버전 충돌이 발생하지 않도록 관리한다.Maven, Gradle, npm, Yarn
2. 전처리 (Preprocessing)매크로 확장, 헤더 파일 포함C/C++와 같은 언어에서 #include#define 같은 전처리기 지시문을 처리하여 실제 컴파일할 소스 코드를 생성한다.C/C++ Preprocessor
3. 컴파일 (Compilation)소스 코드 → 중간 코드/오브젝트 파일프로그래밍 언어로 작성된 소스 코드 파일을 컴파일러가 읽어 어셈블리어나 기계어에 가까운 오브젝트 파일(.o, .obj) 또는 중간 코드(예: Java의 바이트코드)로 변환한다.GCC, Clang, Javac
4. 링킹 (Linking)오브젝트 파일 + 라이브러리 → 실행 파일컴파일된 여러 오브젝트 파일과 시스템 라이브러리, 외부 라이브러리들을 하나로 묶어 운영체제가 실행할 수 있는 단일 파일(실행 파일 또는 라이브러리 파일)을 생성한다.ld, LINK.exe
5. 패키징 (Packaging)실행 파일 + 리소스 → 배포 가능한 형태실행 파일과 함께 이미지, 설정 파일, 문서 등 필요한 모든 리소스를 묶어 사용자에게 배포할 수 있는 형태(예: JAR, WAR, MSI, DMG, Docker 이미지)로 만든다.Jar, Tar, Docker
6. 테스트 (Testing)단위 테스트, 통합 테스트 실행코드의 품질을 보장하기 위해 사전에 작성된 테스트 코드를 실행하고, 빌드 성공 여부를 결정하는 기준으로 삼는다.JUnit, pytest, 제스트
7. 배포 (Deployment)결과물을 서버나 스토어에 업로드빌드된 최종 결과물을 실제 사용자가 접근할 수 있는 서버, 앱 스토어, 패키지 저장소 등으로 업로드하고 배포하는 과정을 자동화한다.젠킨스, GitLab CI CD, Ansible