ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CI/CD
    CS지식 2023. 9. 2. 00:57

    CI/CD(Continuous Integration/Delivery & Deployment)

    • 개발자가 코드를 짠 다음 해야 할 일
    • 지속적으로 코드를 합치고 배포해야 하는 것을 CI/CD라고 함

     

    CI/CD 필요성

    • 혼자가 아닌 수많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 작업하는 경우
      다음과 같은 문제가 발생
      • dev 서버에 누가 배포했나요? 제 환경에서 갑자기 안 되는데요?
      • 이 함수 테스트 안 하고 배포했나요? 해당 부분에서 에러 뜨는 거 같아요.

     

    파이프라인

    • 코드구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 함
    • 총 3가지의 단계로 구성
      • continuous integration : 코드를 빌드하고 테스트하고 합침
      • continuous delivery : 해당 레퍼지토리에 릴리스
      • continuous deployment : 이를 프로덕션, 즉 실제 서비스에 배포

    • 파이프라인이 주는 장점은 코드배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제되다는 점
    • 파이프라인 자체 내에 테스트가 있기 때문에 테스트 없으면 코드 머지자체가 안되게 만들 수 있음

     

    빌드

     

    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

     

    테스트

    • 함수 등 작은 단위를 테스팅하는 단위테스트
    • 모듈을 통합할 때 테스트하는 통합테스트
    • 사용자가 서비스를 사용하는 상황을 가정해서 테스트하는 엔드투엔드테스트
    • ex) mocha

     

    머지

    • git이나 svn을 이용해 머지를 함(요새는 그냥 git을 쓴다고 보면 됨)
    • 작은 프로젝트 같은 경우는 충돌을 최소화하기 위해 1 폴더 1 개발자를 할 수 있지만
      충돌이라는 것은 대부분 일어나기 때문에 조금 더 작은 단위로 충돌이 일어나게 하는 게 중요
    • 한 달 동안 코드를 짜서 배포하는 게 아니라 작은 이슈단위로 나눠서 보통 머지를 함
      (그렇다고 해서 너무 어토믹 하게 작은 단위로는 하지는 않고 작은 이슈단위를 기반으로 머지)
    • 만약 충돌 시에는 서로 화면공유하면서 합의하에 충돌을 해결하는 게 제일 좋음

     

    배포

    • 사용자를 위한 서비스를 배포할 수도 있다고 생각할 수 있음
    • 하지만 아닌 내부적으로 QA엔지니어나 관리자페이지를 위한 배포,
      데이터웨어하우스로부터 데이터를 가공해서 백엔드개발자를 위한 배포 등을 포함

     

    • github action, genkins, circle ci가 유명
    • heroku를 통해 CI, CD 설정 없이 자동 가능(참고로 heroku + github action으로 설정도 가능

    'CS지식' 카테고리의 다른 글

    디자인패턴(1)  (2) 2023.09.04
    개발자 기본지식  (0) 2023.09.02
    클라우드  (0) 2023.08.31
    API  (1) 2023.08.29
    데이터교환형식  (0) 2023.08.28

    댓글

Designed by Tistory.