빌드와 배포란 무엇이고 자동화(CI/CD) 하는 이유

시스템 인프라 운영 및 개발자와의 소통

혹은 상황에 따라 직접 개발 할 수도있는데 이러한 경우에 빌드와 배포에 대해서도 알아야한다.

 

문제가 발생했을때 , 빌드된 결과 때문인지? 배포중 오류가 난건지 구분해야 빨리 대응가능하기 때문입니다.

 

우선 빌드 배포를 알기전에 

컴파일에 대해서 알아야합니다.


컴파일이란 무엇인가 ? 

사람이 쓴 소스코드(.py, .java 등)를 컴퓨터가 실행할 수 있게 기계어로 번역하는 과정

 

아래 같은 코드를 작성한 것을 기계어(기계가 이해할 수 있게)로 번역. 

쉽게 설명 :

 가) 개발자 : “이런 스마트폰 만들자!” 하고 설계도(소스코드)를 그림

가) 소스코드

 나) 컴파일 : 사람이 이해할 수 있는 설계도(코드)를, 기계가 이해할 수 있는 실행 파일로 바꾸는 과정

컴파일
ㄴ컴파일


빌드와 배포란 무엇인가 ?  

1. 빌드 : 코드를 실행 가능하게 만드는 단계

쉽게 설명 : 공장에서 스마트폰을 조립해서 완제품으로 만드는 과정

개발자가 만든 코드를 실행 가능하게 만드는 것을 의미한다

빌드
빌드

2. 배포 : 실제 서버나 서비스에 반영하는 단계 

쉽게 설명 : 완성된 스마트폰을 택배로 소비자에게 보내는 것

배포
배포

실제 진행 프로세스 :

 가) 개발자 → 코드 작성 

 나) 컴파일 :  코드를 기계어로 번역
 다) 빌드 : 실행 가능한 파일로 만듬 (.exe , 실행파일)

 라) 배포 : 만든 실행프로그램을 다른사람에게 전달 (사용할 수 있게 서비스로 제공)  


빌드 vs 배포 시 흔히 발생하는 오류

빌드 시점 오류

제품을 만들때 발생하는 문제

예시) 스마트폰 공장에서 조립하는 도중 문제 생김

  • 의존성(Dependency) 문제
    조립하려 했더니 부품이 빠졌거나 호환 안됨 (갤럭시 21 카메라가 다른 모델(갤럭시 22)이랑 맞지 않음)
  • 컴파일/번들링 문제
     핸드폰의 나사 위치를 잘못 넣어서 고장이 남
  • 테스트 코드 오류: 단위 테스트 실패로 빌드 중단
     만든 핸드폰이 작동 테스트에서 불합격
  • 환경 설정 문제: 잘못된 빌드 변수(KEY, ENV)로 원하는 결과물 미생성
     조립시 공장 설정값이 잘못돼서 원하는 기능이 빠짐

배포 시점 오류

완성된 제품을 배송/판매할 때 생기는 문제

  • 파일/이미지 누락
    → 택배 박스에 충전기 안 넣음 → 고객 컴플레인
  • 네트워크 설정 오류
    → 집 주소는 맞는데 문이 잠겨있어 배달 못 함
  • 권한 오류
    → 고객이 물건을 꺼내보려 했는데 포장 테이프가 안 뜯어짐
  • 환경 변수 누락
    → 설명서 없이 제품만 보내서 기능을 못 씀 (예: Wi-Fi 설정이 빠짐)
  • 배포 전환 실패
    → 새로운 물건을 교체하려 했는데 새 제품이 고장남

 

빌드/배포는 복잡, 귀찮고 사람이 하면 실수가 생깁니다.  

그래서 자동화를 진행합니다.

 


자동화(CI/CD)가 왜 필요한가?

자동화가 없으면?

수동 배포를 해야합니다 수동배포 시

  • 사람이 매번 손으로 빌드/배포 → 실수, 누락, 속도 느림
  • 개발자가 바뀌면 같은 작업 다시 못 함 (재현 불가)

-> 얼마나 비효율적입니까.. 그리고 퇴사하면 인수인계가 사실상 불가능하죠 

자동화가 있으면?

  • 버튼 한 번, 혹은 git commit 만 해도 자동으로 빌드 + 테스트 + 배포
  • 오류 나면 자동 알림, 실패하면 자동 복구(롤백)
  • 모든 과정을 코드로 남겨둬서 누구나 다시 실행 가능
  • 팀 전체가 표준화된 방식으로 협업 가능

즉, 사람의 실수 없이 안정적으로 반복 가능한 프로세스를 만드는 게 핵심.

 

그래서 기업에서 자동화는 필수이며, 개발자뿐만아니라 시스템 운영자도 당연히 알아야합니다.

CICD 툴
CICD 툴


CI/CD 이해하기

  • CI(Continuous Integration) 지속적 통합:
    → 코드가 변경될 때마다 자동으로 빌드 + 테스트 실행
    대표적인 툴 : Jenkins, Github Action, Gitlab CI/CD 등
  • CD(Continuous Deployment / Delivery) 지속적 배포:
    → (Delivery) 테스트 통과하면 배포 준비 →
    → (Deployment) 실제로 운영 환경에 자동 배포
    대표적인 툴 : jenkins, ArgoCD, Flux 등

결과적으로 코드 커밋 → 빌드 → 테스트 → 배포 전체 흐름이 자동으로 연결되는 것이 CI/CD 입니다.

 

 

'서버 및 운영 > 운영' 카테고리의 다른 글

Hyper-V to vmware  (0) 2024.01.01
리눅스 vmstat 명령어  (0) 2022.07.06
쿠버네티스(Kubernetes)란?  (0) 2022.06.06
도커(Docker) 이미지 설치 및 컨테이너 실행  (0) 2022.05.30
가상화란?  (0) 2022.05.12