본문 바로가기
코딩

CI / CD

by Frontend 2022. 8. 8.

배포 자동화

수동이 아닌, 배포 과정을 자동으로 진행시키는 것을 의미.

시간 절약 및 휴먼 에러 방지 가능.

 

 

배포 자동화 파이프라인

  1. Source 단계 : 소스 코드 관리 및 전달
  2. Build 단계 : 전달 받은 코드 컴파일링, 유닛테스트, 빌드 결과물 생성
  3. Deploy 단계 : 전달받은 결과물을 실제 서비스에 반영

출처 : 코드스테이츠

 

지속적 통합(CI - continuous integration)

프로젝트 구성원들이 각자 처리한 작업을 말그대로 지속적으로 통합시키는 소프트웨어 개발 방식.

다음의 3단계로 나뉜다 :

  • Code : 코드를 코드 저장소에 push 한다.
  • Build : 코드 저장소에서 코드를 가져와서 유닛 테스트 후 빌드한다.
  • Test : 빌드한 결과물이 다른 컴포넌트와 잘 통합되는지 확인한다.

 

말 그대로,

결과가 달라지는 수정 사항이 코드에 발생한다면, 그 때마다 코드 저장소에 변경된 코드를 push하여 유닛 테스트를 진행하고, 빌드하고, 다른 코드(또는 컴포넌트)와 오류없이 잘 맞물리는지 지속적으로 확인하며 개발해나가는 방식인 셈이다.

 

 

Github Action
  • Github Action은 Github의 특정 이벤트에 맞게 다양한 작업을 시킬 수 있는 CI/CD 플랫폼.
  • EC2와 같은 하나의 가상 인스턴스를 실행시켜서 원하는 작업을 시킬 수 있다.
  • ./.github/workflows/pullRequest.yml 파일에 언제 어떤 job을 할지 명시해놓는다면, push만 해도 해당 작업이 자동으로 실행된다.
name: Bare Minimum Requirements

# 언제 job을 작동시킬지
on: [push, pull_request]

# 어떤 job을 할지
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Bare Minimum Requirements
        uses: actions/setup-node@v1
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

 

 

지속적 배포(CD - continuous deployment)

CI 가 마무리되면 배포한다.

다음의 3단계로 구성된다 :

  • Release : 빌드까지 완료된 상태로서, 유관 부서 및 담당자들끼리 논의하여 기능 추가 여부나 배포 여부에 대해 결정하는 단계이다.
  • Deploy : 배포한다.
  • Operation : 배포된 소프트웨어를 운영한다. 고객의 피드백을 기획에 반영한다.

 

출처 : 코드스테이츠

 

 

대표적인 코드 자동화 서비스

  • Vercel 

https://vercel.com/

 

Develop. Preview. Ship. For the best frontend teams – Vercel

Deploy web projects with the best frontend developer experience and highest end-user performance.

vercel.com

  • Netify

https://www.netlify.com/

 

Netlify: Develop & deploy the best web experiences in record time

A powerful serverless platform with an intuitive git-based workflow. Automated deployments, shareable previews, and much more. Get started for free!

www.netlify.com

 


 

과제 코드

테스트 파일 작성 후, 테스트가 모두 통과되어야지만 빌드가 가능하게끔 하려면, package.json에 아래와 같이 추가해주면 된다.

  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts test --watchAll=false && react-scripts build",
    "test": "react-scripts test --watchAll=false",
    "eject": "react-scripts eject"
  },

 

 


Reference

https://blog.banksalad.com/tech/become-an-organization-that-deploys-1000-times-a-day/

 

하루에 1000번 배포하는 조직 되기 | 뱅크샐러드

안녕하세요, 뱅크샐러드 Engineering Foundation의 Framework Team 소속 Server Engineer…

blog.banksalad.com

https://tech.kakao.com/2022/05/06/github-actions/

 

카카오엔터프라이즈가 GitHub Actions를 사용하는 이유

- 카카오엔터프라이즈 aaron, greta가 함께 작성하였습니다.  GitHub Actions를 통한 CI/CD 사용설명서 안녕하세요, 카카오엔터프라이즈 DevOps Engine 아론(aaron), 그레타(greta)입니다.  카카오엔터프라이

tech.kakao.com

https://engineering.linecorp.com/ko/blog/build-a-continuous-cicd-environment-based-on-data/

 

데이터 기반으로 지속적인 CI/CD 개선 환경 만들기

2022-LINE-engineering-site

engineering.linecorp.com

https://fe-developers.kakaoent.com/2022/220106-github-actions/

 

카카오웹툰은 GitHub Actions를 어떻게 사용하고 있을까?

카카오엔터테인먼트 FE 기술블로그

fe-developers.kakaoent.com

 

'코딩' 카테고리의 다른 글

기술면접 대비  (0) 2022.08.22
알고리즘  (0) 2022.08.10
시간복잡도  (0) 2022.08.07
AWS (Amazon Web Service)  (0) 2022.08.05
Optimization (최적화)  (0) 2022.08.04