웹 개발 파이프라인 구축

코드 개발 => CI(빌드 => 테스트 => 코드 병합) => 코드 리포지토리에 자동으로 릴리스 => 프로덕션 환경에 자동으로 배포

배포/인도 자동화의 중요성

전통적 인도 프로세스

한계점

  • 느린 인도 기간 : 개발 요구사항이 정의된 때로부터 제품 전달이 완료되기까지 긴 시간 소요
  • 느린 피드백 주기 : 개발팀의 효율성 향상에 걸림돌로 적용
  • 자동화 미비 : 릴리스 회수가 적으므로 자동화 필요 감소 -> 릴리스 기간 예측 어려워짐
  • 핫픽스 위험성 : 긴급한 코드 변경에 대하여 충분한 테스트가 이루어질 수 없는 위험
  • 개발문화 건전성 제한 : 팀 스트레스, 의사소통 부족, 책임의 분산, 낮은 업무 만족도 등..

해결책 : CD

  • 변경 내용이 단지 코드 한줄이라고 할 때
    이를 배포하는 데 어느 정도 시간이 소요되는가?
    이 배포 작업을 반복해서 안정적으로 수행할 수 있는가?
  • 해결안 : 프로세스의 각 단계를 자동화
    빠른 제품 인도
    짧은 피드백 주기
    위험도가 낮은 릴리스 : 반복과 롤백
    유연한 릴리스 정책 결정 가능

자동 배포 파이프라인

  • 코드의 통합, 테스트, 배포는 매우 중요한 단계들이다.
    각 단계를 유지하면서 동시에 자동화 하는 것이 필요, 또한 지속적 모니터링도 필수

코드변경 => 지속적 통합 => 자동 인수 테스트 => 구성 관리

CI(Continuous Integration) : 지속적 통합

코드가 올바르게 빌드 및 통합되는지를 자동으로 확인

  • 리포지토리에서 코드를 체크아웃
  • 빌드를 수행하고 단위테스트 (테스트 커버리지 리포트 생성)
  • 코드 품질을 검증 (정적 분석을 통한 규칙 검사/코딩 규약 등의 준수 여부 검사)

개발팀에 1차적인 피드백 제공

자동 인수 테스트

인수 테스트

  • 제품이 릴리스할 준비가 되었는지를 "사용자 요구사항에 견주어" 확인
  • 전통적으로 QA팀의 역할
  • 통합 테스트, 인수 테스트, 비기능적 분석 등을 포함

CD 파이프라인에 통합

  • 품질 점검을 나중에 하는 것이 아니라 개발 중에 제품에 내재시키자는 것
  • 개발자가 구현을 마치는 즉시 고객이 원하는 제품인지를 검증
  • 소프트웨어의 인도 결정을 자동화

구성 관리

구성 관리(configuration management)

  • 소프트웨어와 환경 변화를 추적하고 제어
  • 전통적으로 운영팀의 역할
  • 필수 도구 준비와 설치
  • 응용의 배포와 관련한 다양한 서비스 인스턴스와 배포 버전 관리

CD 파이프라인에 통합

  • 프로덕션 환경의 응용을 자동으로 구성 및 배포
  • 구성 관리 도구를 이용해 구성 관리 파일을 버전 관리 시스템에 저장 및 변경 이력 추적

CD를 위한 기술적 전제조건

  • 자동 빌드, 테스트, 패키징, 배포
  • 신속한 파이프라인 실행
  • 신속한 장애 복구
  • 무중단 배포
  • 트렁크 기반 개발

0개의 댓글

Powered by GraphCDN, the GraphQL CDN