sxxk2
_
sxxk2
전체 방문자
오늘
어제
  • all (19)
    • Development (6)
      • Python (4)
      • Django (1)
    • Computer Science (11)
    • Others (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sxxk2

_

Others

CI/CD

2022. 7. 9. 22:59

인턴을 했던 회사에 CI/CD가 구축되어있었습니다.
PR을 올린 후 merge를 하면 대략 5~10분내에 자동으로 스테이징 서버에배포가 되는 시스템이였는데, 해당 개념인 CI/CD를 알아보았습니다.

CI/CD?

CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션이다.


CI (Continuous Integration)

CI(지속적 통합)는 소스코드를 통합하고 빌드하고 테스트하는 과정을 자동화하여 지속하는 것을 의미한다.
성공적인 CI를 구현한다면 새로 추가되거나 변경 사항이 있는 코드가 지속적으로 빌드하고 테스트되어 Github와 같은 저장소에 통합된다.
팀 프로젝트등으로 협업시 여러 개발자가 동시에 코드 작업을 하는데 이 과정에서 서로 충돌할 수 있는 문제를 해결할 수 있다.
코드에 새로운 변경 사항이 발생하면 해당 변경사항을 적용한 어플리케이션을 구축하여 테스트를 수행하고 제대로 동작하는지 확인한다.
여기서 기존에 배포된 어플리케이션에게는 영향이 가지 않도록 해야한다. 만일 테스트에서 충돌이 발생하면 해당 부분에 대해서 코드를 수정하고 다시 CI를 통해 통합함으로써 반복되는 작업을 피할 수 있다.


CD (Continuous Delivery & Continuous Deployment)

CD(지속적 제공, 배포)는 소프트웨어를 패키징하고 배포하고 문제 발생시 롤백하는 과정을 자동화하여 변경점을 안전하고 빠르게 배포함으로써 서비스 제공을 지속하는 것을 의미한다.
어플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 저장소에 자동으로 업로드되는 것을 뜻하며 이를 통해 사용자가 사용할 수 있는 실제 환경에 실시간으로 배포할 수 있다. 따라서 개발팀과 운영팀의 거리를 좁혀준다.

CD를 위해서는 정상적으로 동작하는 CI가 먼저 구축되어있어야 한다. 지속적으로 배포하기 위해서는 당연히 코드 통합등의 과정이 자동화되어야 실시간으로 배포가 가능하기 때문이다. CD는 CI로부터 나오는 결과로부터 테스트 자동화와 코드 릴리스 자동화를 수행한다. 이를 통해 빠른 애플리케이션 배포가 가능하다. 마찬가지로 실제 환경에 배포하는 과정을 자동화함으로써 개발자가 수정한 어플리케이션의 변경점이 몇 분 이내에 자동으로 적용되어 실행할 수 있다. 따라서 사용자 피드백을 지속적으로 빠르게 반영할 수 있다.


CI/CD tools

  • Jenkins
  • 무료(단, 별도의 서버 필요)
    다양한 플러그인, IDE를 지원
    많은 사용자와 많은 문서
    규모가 작은 프로젝트의 경우 설정하는데 리소스 낭비가 발생할 수 있다.
    지라와 연동이 불편하거나 완벽하지 않을 수 있다.
    무료라는 점과 많은 사용자를 가졌다는 점이 매력적이다.
  • Travis
  • 깃허브와 연동
    빌드 과정을 한 눈에 이해하기 쉽다.
    초기 설정이 젠킨스에 비해 간편(YML 파일을 통한 설정)
    별도의 서버 필요 없다. travis에서 알아서 VM으로 호스팅 해준다.
    기업용의 경우 다소 비싸다(월 129달러)
    로컬에서 CI환경과 동일한 빌드환경을 제공하지 않는다.
    젠킨스에 비해 플러그인이 다양하지 않다.
    .travis.yml 파일을 수정하고 테스트하려면 git push를 반복해야한다.
  • Github Actions복잡한 과정없이 바로 깃허브에서 사용할 수 있다.
    빌드 과정을 눈으로 확인하기 쉽다.
    깃허브의 모든 이벤트에 대한 작업을 제공하고 다양한 언어와 프레임워크를 지원한다.
    젠킨스보다 빠르다.
    public은 무료, private 저장소의 경우 매월 3000분 무료
    문서가 비교적 부족하다.
    UI에서 개별 워크플로우 실행을 삭제할 수 없다.
    워크플로우에서 단일 작업만 다시 실행할 수 없다.

읽을거리

하루에 1000번 배포하는 조직 되기 - 뱅크샐러드
https://blog.banksalad.com/tech/become-an-organization-that-deploys-1000-times-a-day/

'Others' 카테고리의 다른 글

Git과 Git을 활용한 Workflow  (0) 2022.07.09
    'Others' 카테고리의 다른 글
    • Git과 Git을 활용한 Workflow
    sxxk2
    sxxk2

    티스토리툴바