CI/CD

CI/CD

  • 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법
  • 지속적 통합, 지속적 배포, 지속적 서비스 제공
  • 이러한 프로세스를 CI/CD 파이프라인이라 하며, 애자일 방식의 협력을 통해 실행

CI와 CD의 차이

post_thumbnail

지속적 총합 Continuous Integration

  • 개발자를 위한 자동화 프로세스
  • 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되며 공유 리포지토리에 자동으로 통합
  • 컨플릭트 문제 역시 해결될 수 있다
  • 빌드/테스트의 자동화 과정

지속적 서비스 제공 및 지속적 배포 Continuous Delivery / Continuous Deployment

  • 위의 두 용어는 상호 교환적으로 사용
  • 지속적 서비스 제공
    • 새로운 변경 사항이 버그 테스트를 거친 뒤 리포지토리에 자동으로 업로드 되는 것
    • 이 리포를 통해, 어플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다
  • 지속적 서비스 제공
    • 변경 사항이 리포에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것
    • 수동 프로세스에 있을 과부하 문제를 해결

CI/CD 적용 전과 후 비교

CI/CD 적용 전

  1. 개발자들이 코드 개발 및 수정
  2. 각 feature 브랜치에 코드 push
  3. master 브랜치로 merge (integration)
  4. 에러 발생 시 디버깅 후 코드 수정
  5. 1~4의 과정 반복
  6. 에러 수정 후 배포 시작
    • 개발자가 직접 배포

CI/CD 적용 후

  1. 개발자들이 코드 개발 및 수정
  2. 각 feature 브랜치에 코드 push
  3. push에 의해 trigger된 CI 서버에서 빌드 -> 테스트 일련의 과정을 실행 후 결과 전송
  4. 에러 확인 및 디버깅 후 코드 수정
  5. 1~4의 과정 반복
  6. master 브랜치에 merge 후 CI 서버가 다시 빌드 -> 테스트 수행
  7. CI 서버가 Deploy 과정 수행

게임 유닛 테스트가 가능한가

  • 테스트 자체가 가져오는 장점보다, 테스트를 구현하기 위한 코드의 디자인이 변경된다는 장점이 있다
  • 물론 높은 수준의 항목 즉, 유저의 다양한 상호작용을 테스트하는 데에 있어서는 불합리할 것이다
  • 그러나 실제로 유닛 테스트가 적용되어야 할 부분은 작은 코드 조각들이다

DevOps

  • 개발 부서와 운영부서 간의 협력 개발 방법론
    • Development + Operation
    • 단순한 통합이 아님
  • 해당 역할의 엔지니어들은 반복적인 일을 자동화하고, 기술적 문제를 예방 및 해소 시키는 역할

Infrastructure

  • IT Infrastructure는 기업 IT 환경을 운영 및 관리하는 데 필요한 구성 요소
    • 하드웨어, 스포트웨어, 네트워킹, OS 등
  • 클라우드 컴퓨팅이나 조직 내부 등에 배포 가능

    Provisioning

  • 사용자 요구에 맞게 시스템 자원을 할당, 배치, 배포해두었다가 필요시 즉시 적용할 수 있게 준비해두는 것
  • 수동 프로비저닝과 자동 프로비저닝이 있다
  • 서버 자원, os, 소프트웨어 프로비저닝 등이 있다

출처

Categories: ,

Updated: