DevOps/Docker

배포 자동화에 들어가기 앞서 - CI/CD, docker hub, docker compose

newny 2024. 1. 2. 22:40
반응형

지속적 통합(Continuous Integration, CI)


코드 통합을 위한 단계의 자동화

 

CI 장점

  • 코드 통합을 위한 단계들의 중복을 최소화함으로서 개발 생산성 향상
  • 주기적인 실행으로인해 문제점을 빠르게 발견 → 버그 수정 용이
  • ⇒ 코드의 퀄리티 향상 도출
  1. 자동 빌드
    • CI는 새로운 코드 변경 사항이나 커밋이 이루어질 때 자동으로 빌드 프로세스를 실행 → 소스 코드를 컴파일하고 필요한 실행 파일 또는 라이브러리를 생성하는 것을 의미
  2. 자동 테스트
    • 빌드 후 정의된 테스트 스위트*를 실행하여 코드 변경이 이전 코드와 호환되며 예상대로 작동하는지 확인
  3. 주기적인 실행
    • CI는 코드 변경이 이루어질 때마다 주기적으로 실행됨 → 빠르게 피드백을 받고 문제를 빠르게 감지하고 수정할 수 있도록 도와줌
  4. 버전 관리 시스템과 통합
    • 주로 버전 관리 시스템(예: Git,SVN)과 통합되어 작업 중인 코드 변경을 감지하고 자동으로 CI 프로세스를 시작함
  5. 팀 협업 강화
    • 다수의 개발자가 동시에 작업하는 경우 코드의 통합 문제를 최소화하므로 팀의 협업을 강화할 수 있음

 

*테스트 스위트

소프트웨어 개발에서 테스트를 수행하는 데 사용되는 테스트 케이스나 테스트 스크립트의 모음

 

 

 

지속적인 배포(Continuous Deployment) , 지속적인 제공(Continuous Delivery)


지속적 배포를 위한 방식

 

  1. 지속적인 배포
    • 지속적인 배포는 개발자가 코드를 커밋하면 해당 코드가 자동으로 빌드, 테스트를 거친 후 프로덕션 환경에 자동으로 배포되는 것을 의미 → 빠른 피드백과 더 빠른 소프트웨어 출시를 가능하게 함
    • 그러나 모든 변경 사항이 즉시 프로덕션 환경에 배포되므로 조심스럽게 사용해야 함
  2. 지속적인 제공
    • 지속적인 제공은 개발자가 코드를 커밋하면 해당 코드가 자동으로 빌드, 테스트를 거친 후 스테이징 또는 테스트 환경에 배포되는 것을 의미
    • 프로덕션 환경에는 수동으로 배포 → 이는 지속적인 배포와 비교하여 안정성을 강조하는 방식으로 사용됨
    • 개발자들은 테스트 환경에서의 결과를 확인하고, 필요한 경우 수동으로 프로덕션 환경에 배포를 진행할 수 있음

 

 

docker hub


  • 도커 컨테이너 이미지를 공유하고 관리하기 위한 온라인 서비스
  • 도커 허브는 도커 이미지를 중앙에서 관리하고 배포하기 위한 저장소 역할을 함
  • 도커 허브는 도커 생태계에서 중요한 요소로, 개발자 및 운영팀이 컨테이너 이미지를 효과적으로 공유하고 관리할 수 있게 해줌

 

도커 허브의 주요 기능과 특징

  1. 도커 이미지 저장소의 역할
    • 도커 이미지를 저장하고 공유할 수 있는 저장소 → 이미지를 중앙에서 관리하고 필요한 경우에 다른 사용자와 공유할 수 있음
  2. 저장소의 공개 및 비공개 처리
    • 공개 저장소의 경우 누구나 이미지를 검색하고 다운로드할 수 있음
    • 비공개 저장소는 접근 권한이 있는 사용자만 이미지에 액세스할 수 있도록 보호됨
  3. 이미지 버전 관리
    • 도커 허브는 이미지의 다양한 버전을 관리할 수 있음 → 이를 통해 애플리케이션의 여러 릴리스나 업데이트를 효과적으로 관리할 수 있습니다.
  4. 자동 빌드 및 테스트
    • 도커 허브는 GitHub 또는 Bitbucket과 같은 소스 코드 저장소와 연동하여 자동 빌드 및 테스트를 지원함 → 코드 변경 사항이 발생할 때마다 자동으로 이미지를 빌드하고 테스트할 수 있음
  5. Web 기반 인터페이스 (=GUI를 지원)
    • 도커 허브는 웹 기반 인터페이스를 제공하여 사용자가 이미지를 검색하고 관리할 수 있도록 함

 

 

docker compose


  • 도커 컨테이너 기반 애플리케이션을 정의하고 실행하기 위한 도구
  • 독립적인 프로그램이 아닌 도커 환경에서 사용되는 도구
  • yaml 파일을 사용하여 여러 컨테이너 간의 관계와 구성을 정의

 

docker compose를 사용하는 프로세스

  1. Dockerfile 작성
    • 각 컨테이너에 대한 Dockerfile을 작성
    • Dockerfile : 컨테이너를 빌드하는 데 사용되는 명령어와 설정을 정의하는 파일
  2. docker-compose.yml 작성
    • 애플리케이션의 전체 구성을 정의하는 YAML 파일을 작성 → 각 컨테이너의 이미지, 환경 변수, 네트워크 설정, 볼륨 마운트 등이 포함됨
  3. Compose 실행
    • 작성한 docker-compose.yml 파일을 사용하여 docker-compose up 명령을 실행하면, 정의한 모든 컨테이너가 시작됨
    • 필요에 따라 docker-compose down 명령을 사용하여 컨테이너를 중지하고 삭제할 수 있음
반응형