📌CI/CD란?
CI/CD: 지속적 통합/지속적 배포
- 많은 기업들이 빠른 개발 주기와 안정적 배포를 위해 CI/CD도구를 사용하고 있음
- 그 중 가장 널리 사용되는 도구가 Jenkins
📌Jenkins란?

- 자세한 작동 방식은 아래에 추가 설명 참고
- 오픈 소스 자동화 서버로 소프트웨어 개발 과정에서 코드 변경 사항을 자동으로 통합하고 배포
- 코드를 빌드 -> 테스트하며 개발자들이 변경 사항의 품질을 확인하고 문제를 확인할 수 있도록 도움
- 방대한 플러그인 생태계와 큰 커뮤니티로 유연성과 안정성을 제공
- 초보자를 위한 간편한 설정 기능 & 고급 사용자를 위한 커스터마이징 옵션 제공
📌 Jenkins는 어떻게 작동할까? (CI/CD 파이프라인 이해하기)
앞서 언급했듯이 Jenkins는 지속적 통합(CI)과 지속적 배포(CD)를 자동화해주는 가장 대표적인 오픈소스 도구입니다. 아래 이미지를 통해 Jenkins가 개발자의 코드를 어떻게 관리하고 배포하는지 그 흐름을 정리해 보겠습니다.

1. 전체적인 흐름 (Workflow)
이미지는 크게 빌드 실패(Error) 케이스와 빌드 성공(Success) 케이스 두 가지 시나리오를 보여줍니다. 공통적인 시작점은 개발자의 'Commit'입니다.
- Commit & Push: 개발자가 코드를 수정하고 Git과 같은 버전 관리 시스템에 소스코드를 커밋합니다.
- Jenkins Trigger: Jenkins는 Git의 변경 사항을 감지하여 자동으로 미리 설정된 파이프라인(Job)을 실행합니다.
2. 단계별 상세 과정
📂 Step 1: Clone Repo (코드 가져오기)

Jenkins 서버로 원격 저장소(Git)에 있는 최신 코드를 복제(Clone)해옵니다. 이 과정이 완료되어야 이후 빌드 작업을 수행할 수 있습니다.
⚙️ Step 2: Build / Compile (컴파일 및 빌드)

가져온 소스코드를 실행 가능한 형태로 컴파일하고 빌드합니다.
- 만약 여기서 오류가 발생한다면? (이미지 상단 흐름) 곧바로 개발자에게 Error 알림(Notified)을 보내며 프로세스가 중단됩니다. 빠른 피드백을 통해 즉각적인 수정이 가능합니다.
✅ Step 3: Unit Test (단위 테스트)

빌드가 성공하면 작성된 테스트 코드를 실행하여 기능상의 문제가 없는지 검증합니다. 코드의 품질을 보장하는 핵심 단계입니다.
🐳 Step 4: Docker (이미지 빌드 및 푸시)

테스트를 통과한 애플리케이션을 Docker 이미지로 빌드합니다. 이는 어디서나 동일한 환경으로 실행될 수 있도록 컨테이너화하는 과정입니다.
☸️ Step 5: K8S Dev Deploy (쿠버네티스 배포)

생성된 Docker 이미지를 기반으로 Kubernetes(K8s) 개발 환경에 자동으로 배포합니다. 실제 서비스 환경에 적용되기 전 마지막 확인 단계라고 볼 수 있습니다.
3. 결과 및 피드백 (Notification)
- Success: 모든 파이프라인 단계가 성공적으로 완료되면 최종적으로 Success 상태가 되며, 개발자는 성공 알림을 받습니다.
- Continuous Feedback: Jenkins의 핵심은 결과를 개발자에게 즉시 알리는 것입니다. 성공하든 실패하든 개발자는 자신의 코드가 시스템에 어떻게 반영되었는지 실시간으로 파악할 수 있습니다.
💡 요약
Jenkins를 사용하면 코드 커밋 → 빌드 → 테스트 → 이미지화 → 배포로 이어지는 복잡한 과정을 자동화할 수 있습니다. 이를 통해 개발자는 비즈니스 로직 구현에만 집중할 수 있고, 배포 주기(Release Cycle)를 획기적으로 단축할 수 있습니다.
젠킨스는 배포를 자동화해주는 도구군요. ec2 어렵게만 느껴졌는데 또 다른 도구라고 생각하니까 마음의 벽이 훨씬 낮아졌습니다. 좋은 설명 감사합니다.
컴퓨터공학은 특히 기능a가 있으면 다시 그걸 쉽게 만드는 기능a'이 생기고 다시 이 둘을 통합하는 기능b가 생기고.. 이런 경향이 큰 것 같아요! 쉽지않습니다 @,@