CI/CD(Continuous Integration/ Delivery & Deployment)란?

2023. 9. 19. 13:02·Computer Science
728x90

CI/CD(Continuous Integration/ Delivery & Deployment)란?

개발자가 코드를 짰자면 그 다음 해야할 일은 바로 지속적으로 코드를 합치고 코드를 배포해야합니다.

이를 CI/CD(Continuous Integration/ Delivery & Deployment)라고 합니다.

 

그럼 왜 필요할까?

혼자 개발을 할 때는 ftp로 배포할 수도 있지만 혼자가 아닌 수많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 이런 일이 발생할 수 있다.

 

- dev 서버에 누가 배포했나요? 제 환경에서는 갑자기 안되는데요?

- 이 함수 테스트 안하고 배포했나요? 해당 부분에서 에러 뜨는 거 같아요.

 

여러 명의 개발자가 동시에 개발을 하게 될 것이고 이는 앞과 같은 문제가 발생하게 됩니다.

이를 수동으로 하나하나 해결

 

파이프라인

코드구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 합니다.

총 3가지 단계로 구성됩니다.

Continuous integration : 코드를 빌드하고 테스트하고 합칩니다.

Continuous delivery : 해당 레퍼지토리에 릴리스 합니다.

Continuous deployment : 이를 프로덕션, 즉 실제 서비스에 배포합니다.

 

파이프라인이 주는 장점은 코드배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제된다는 점 입니다.

파이프라인 자체내에 테스트가 있기 때문에 테스트 없으면 코드 머지 자체가 안되게 만들 수도 있기 때문이죠.

 

머지

git이나 svn을 이용해 머지를 합니다. 

작은 프로젝트 같은 경우 충돌을 최소화하기 위해 어떤 폴더는 해당 개발자만 믿는다고 할 수도 있습니다.

 

충돌이라는 것은 대부분 일어나기 때문에 조금 더 작은 단위로 충돌이 일어나게 하는게 중요합니다.

그래서 긴 시간동안 코드를 짜서 배포하는게 아니라 작은 이슈단위로 나눠서 보통 머지를 합니다.

그렇다고 해서 너무 아토믹하게 작은 단위로 하지는 않고 작은 issue단위를 기반으로 머지를 하게 됩니다.

 

만약 충돌시에는 서로 화면공유하면서 합의하에 충돌을 해결하는게 제일 좋습니다.

 

 

빌드

대표적으로 webpack이 있습니다.

webpack은 여러가지 모듈을 정적자산으로 봐꿔주는 빌드해주는 도구입니다.

 

webpack

webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.

webpack.js.org

예를 들어 Vue.js를 사용한다고 했을 때

dev run bulid 를하게 되면

브라우저에서 돌아갈 수 있게 끔 html,js,css로 변환해줍니다.

 

테스트 

테스트는 함수 등 작은 단위를 테스팅하는 단위테스트, 모듈을 통합할 때 테스트하는 통합테스트, 사용자가

서비스를 사용하는 상황을 가정해서 테스트하는 end to end 테스트가 대표적입니다.

여기에 보안테스트도 있습니다.

만일 규모가 큰 프로젝트일 경우 보안테스트도 꼭 넣어주셔야 합니다

 

배포

배포는 그저 사용자를 위한 서비스를 배포할 수도 있다고 생각할 수 있지만 그뿐만이 아닌 내부적으로

QA 엔지니어나 관리자페이지를 위한 배포, 데이터웨어하우스로부터 데이터를 가공해서 

백엔드 개발자를 위한 배포 등을 포함합니다.

 

툴

github action, genkins, circle ci가 유명하며 heroku를 통해 CI, CD 설정 없이 가능합니다.

 

Cloud Application Platform | Heroku

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

www.heroku.com

 

추후 CI/CD에 대표적인 genkins에 대해 자세하게 다뤄보도록 하겠습니다.

감사합니다. 

728x90
반응형

'Computer Science' 카테고리의 다른 글

순회 (Traversal) 란?  (0) 2023.09.20
그래프 데이터베이스 (Graph Database)  (0) 2023.09.20
Python과 컴파일러 언어 간의 주요 차이점  (0) 2023.09.16
k진수에서 소수 개수 구하기 (풀이)  (0) 2023.09.13
재귀 함수란? (Recursion)  (0) 2023.09.11
'Computer Science' 카테고리의 다른 글
  • 순회 (Traversal) 란?
  • 그래프 데이터베이스 (Graph Database)
  • Python과 컴파일러 언어 간의 주요 차이점
  • k진수에서 소수 개수 구하기 (풀이)
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (132) N
      • python (36) N
        • selenium (4)
        • algorithm (3)
        • Django (6) N
        • Pandas | Numpy (19)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (4) N
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
CI/CD(Continuous Integration/ Delivery & Deployment)란?
상단으로

티스토리툴바