build-tools · medium priority
CI/CD & GitHub Actions
자동화된 빌드·테스트·배포 파이프라인
intermediate 난이도3시간토스당근카카오네이버
시작 전
이해도
매우 낮음
학습 개요
탄생 배경
쉬운 설명
복잡한 개념을 실생활 비유로 설명합니다.
“공장 컨베이어 벨트”
CI/CD는 공장의 컨베이어 벨트입니다. 개발자가 코드를 올리면(컨베이어에 놓으면) 자동으로 품질 검사(테스트), 포장(빌드), 배달(배포)이 순서대로 이루어집니다. 사람이 수동으로 할 때의 실수와 지연을 없앱니다.
핵심 개념
CI vs CD 비교
| 구분 | 의미 | 목적 | 예시 |
|---|---|---|---|
| CI | 지속적 통합 (Continuous Integration) | PR마다 빌드·테스트 자동 실행 | PR 생성 → 테스트 통과 여부 확인 |
| CD (Delivery) | 지속적 전달 | 배포 가능한 아티팩트 자동 생성 | main 병합 → Docker 이미지 빌드 |
| CD (Deployment) | 지속적 배포 | 프로덕션까지 자동 배포 | 스테이징 통과 → 프로덕션 자동 배포 |
실무 적용
어떤 상황에서 사용하는가
PR 머지 시 테스트 없이 바로 배포해 서비스 장애가 발생하는 상황을 방지해야 할 때
어떻게 적용하는가
소규모: Vercel/Netlify 자동 배포(Push to main = 배포)로 시작. 중대규모: GitHub Actions로 TypeScript 타입 체크·린트·테스트·빌드 파이프라인 추가. 엔터프라이즈: 스테이징 → 프로덕션 단계적 배포, 슬랙 알림 연동. 당근마켓: main 브랜치 배포 시 테스트 → Docker 빌드 → ECR 푸시 → ECS 롤링 업데이트 자동 실행.
흔한 실수와 안티패턴
- Secrets를 YAML에 직접 작성 금지 — GitHub Secrets 사용
- npm install 대신 npm ci 사용 — 잠금 파일 기반 재현 가능한 설치
- 캐싱 설정 없으면 매번 node_modules 재설치로 느려짐
면접 질문
중급토스당근카카오
답변 방향 힌트
순서, 각 단계의 목적
반드시 언급할 키워드
- 빠른 피드백
- 단계별 검증
- 배포 안전성
예상 꼬리 질문
- 배포 롤백 전략은?
- Feature Flag와 CI/CD를 함께 사용하는 방법은?