AI 인턴 생존기 7부 5화: 자동화의 최전선, CI/CD!



AI 인턴 생존기 7부 5화: 자동화의 최전선, CI/CD! “이 코드는 언제 배포해요?” 지현이 모니터를 가리키며 물었다. 팀원들은 고개를 숙인 채, 배포 대기 중인 코드와 버그 리스트를 바라보았다. “글쎄요, 아마 다음 주 중으로…” 팀장이 머리를 긁적이며 대답했다. 불안한 침묵이 흐르자, AI 인턴인 나는 기회를 잡았다. “여러분, CI/CD를 도입하면 배포 시간을 단축할 수 있어요!” 모두가 나를 돌아보며 의아한 표정을 지었다. “CI/CD? 그게 뭐죠?” 한 팀원이 물었다. “그건… 음, 일단 좋은 거예요!” 그렇게 시작된 내 CI/CD 전도는 예상보다 많은 어려움이 따랐다. 팀원들은 처음엔 귀찮아했지만, 결국 효율적인 배포 시스템을 만들어가며 많은 것을 배우게 되었다.

오늘의 기술 개념: CI/CD

CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Delivery)의 약자입니다. 소프트웨어 개발에서, CI/CD는 개발자들이 코드를 자주 통합하고, 변경 사항이 있을 때마다 자동으로 테스트 및 배포하는 프로세스를 의미합니다. 이 방법은 소프트웨어 품질을 향상시키고, 배포 시간을 단축시키며, 팀 간의 협업을 원활하게 합니다. CI/CD의 주요 이점은 다음과 같습니다: - 배포 시간 단축: 자동화된 프로세스를 통해 배포 시간을 줄일 수 있습니다. - 코드 품질 향상: 자동 테스트를 통해 버그를 조기에 발견하고 수정할 수 있습니다. - 팀워크 개선: 코드 통합 과정이 원활해져 팀원 간의 소통이 증가합니다. 이제 CI/CD 파이프라인을 구축해보겠습니다. 단계는 생각보다 간단합니다.

1. CI/CD 도구 선택하기

  • Jenkins: 오픈소스 CI/CD 도구로 널리 사용되며, 다양한 플러그인으로 확장할 수 있습니다.
  • GitHub Actions: GitHub을 사용하는 팀에 적합하며, 코드 푸시 시 자동으로 작업을 실행할 수 있습니다.
  • Travis CI: 설정이 간단하여 소규모 프로젝트에 적합합니다.

2. CI/CD 파이프라인 구성

  1. 리포지토리 생성: GitHub 또는 GitLab에서 새로운 리포지토리를 만듭니다.
  2. 워크플로우 파일 작성: .github/workflows 또는 .travis.yml 파일을 만들어 배포 과정과 테스트 단계를 정의합니다.
  3. 자동화 테스트 설정: 코드 변경 시 자동으로 테스트가 실행되도록 설정합니다. 이는 코드의 품질을 보장하는 중요한 단계입니다.
  4. 배포 자동화: 테스트가 성공하면 자동으로 배포하는 프로세스를 설정합니다.

3. CI/CD 도구 설치 체크리스트

  • CI/CD 도구 설치: 선택한 도구를 설치합니다. “설치가 이렇게 쉬우면, 나도 할 수 있겠네!”
  • API 키 설정: 필요 시 API 키를 설정합니다. 보안은 필수입니다!
  • 테스트 스크립트 작성: 테스트를 위한 스크립트를 작성합니다.
  • 배포 환경 설정: 배포할 환경을 설정합니다. “어디에 배포하느냐가 중요해요!”

4. 모니터링 및 피드백

  • 배포 후 모니터링을 통해 피드백을 받고, 지속적으로 개선합니다. “이제 배포도 걱정 없겠어요!” 지현이 만족스럽게 미소 지었다.

실제로 구현하면: GitHub Actions를 이용한 CI/CD 설정

  1. 리포지토리 생성: GitHub에서 신규 리포지토리를 생성합니다.
  2. 워크플로우 파일 작성: - .github/workflows/ci.yml 파일을 생성합니다. yaml name: CI Pipeline on: [push] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Run tests run: | python -m unittest discover
  3. 코드 푸시: 코드를 리포지토리에 푸시하면 자동으로 테스트가 실행됩니다.

테스트 체크리스트

  • [ ] CI/CD 도구가 제대로 설치되었는가?
  • [ ] 테스트 스크립트가 실행되는가?
  • [ ] 코드 변경 시 자동으로 테스트가 실행되는가?
  • [ ] 테스트가 성공한 후 자동으로 배포가 이루어지는가?

흔한 실수

  • 초기 설정 간과: CI/CD 도구 설치 후 설정을 간과하는 경우가 많습니다. 초기 설정이 제대로 되어 있지 않으면 자동화가 원활히 작동하지 않을 수 있습니다.
  • 코드 충돌 문제: 여러 개발자가 동시에 작업하면서 코드 충돌이 발생할 수 있습니다. 팀원과의 소통을 통해 충돌 문제를 미리 해결해야 합니다.
  • 테스트 부족: 배포 후 버그가 발생할 수 있으므로, 충분한 테스트를 통해 안정성을 확보하는 것이 중요합니다. CI/CD를 도입한 후, 팀의 배포 과정은 한층 더 수월해졌습니다. 배포 지연으로 인한 불만도 사라지고, 각자가 맡은 업무에 집중할 수 있게 되었습니다. 팀워크가 다시 한 번 빛나는 순간이었습니다.

외부 자료 지원

  • CI/CD 개념에 대한 기본 정보: CI - 위키백과
  • CI/CD 도구 설명과 설정 방법: 씨미 소개 - 씨미 이제 우리는 CI/CD의 이점을 체험하며, 팀원들과 함께 성장하는 과정을 지속적으로 이어나갈 준비가 되어 있습니다.

실전 미니 워크북

이번 회차의 기술 개념은 CI/CD(지속적 통합/지속적 배포)입니다. 이야기를 현실 업무로 가져오려면 먼저 AI에게 맡길 일을 한 문장으로 쓰고, 그 다음에는 아래 여섯 칸을 채워야 합니다.

1. 맡길 일

  • AI가 해야 하는 일:
  • 사람이 먼저 준비해야 하는 자료:
  • AI가 건드리면 안 되는 범위:

2. 입력과 출력

  • 입력: 메일, 파일명, 표, 문서, 고객 문의처럼 실제로 들어오는 자료를 적습니다.
  • 출력: 분류표, 요약문, 파일명 규칙, 체크리스트처럼 확인 가능한 결과물을 적습니다.
  • 완료 기준: 사람이 봤을 때 "끝났다"고 말할 수 있는 상태를 적습니다.

3. 실패했을 때의 안전장치

  • 바로 삭제하거나 전송하지 않기
  • 먼저 샘플 5개로 테스트하기
  • 결과를 로그나 표로 남기기
  • 사람이 승인하기 전에는 최종 작업을 하지 않기

4. 오늘의 한 줄 교훈

CI/CD 파이프라인 구축 방법. AI가 똑똑해 보여도, 일의 경계와 완료 기준을 정하는 책임은 아직 사람에게 있습니다.

참고 자료



함께 보면 좋은 영상

Video: Master Full-Stack Docker & CI/CD – Build a Production-Ready Pipeline

Comments