티끌모아 태산

CI/CD를 왜 배우는 걸까? 본문

백엔드/DevOps

CI/CD를 왜 배우는 걸까?

goldpig 2024. 6. 2. 23:38
728x90

✅CI/CD란?

CI/CD란 Continuous Integration, Continuous Deployment라는 의미를 갖고 있다. 쉽게 말해 CI/CD는 테스트(Test), 통합(Merge), 배포 (Deploy)의 과정을 자동화하는 걸 의미한다. 

CI/CD를 왜 배울까?

예를들어, 서버를 AWS EC2에 배포하고 운영하다보면 코드 수정 혹은 새로운 기능을 추가하는 일이 많아진다. 그러면 새로운 기능에 대한 코드를 작성한 후 Commit을 한다. 그런 뒤 브런치에 Merge를 하고 배포를 한다. 배포를 할 때, 직접 수동으로 컴퓨터 서버 (ex. AWS EC2)에 접속해서 새로운 코드를 다운받아 실행시켜야한다. 

 

이 과정을 새로운 기능 추가 또는 코드의 수정이 일어날 때마다 반복하기란 너무 귀찮은 일이다. 그래서 이런 반복적인 과정을 자동화 시키기 위해서 CI/CD를 배우는 것이다.

 

CI/CD 과정은 일반적으로 다음과 같은 과정으로 일어난다.

출처 :  https://www.performetriks.com/post/load-test-in-a-cicd-environment

특정 기능을 개발하고 완료해서 Commit을 찍으면 빌드가 되게 셋팅된다. 빌드가 완료되면 작성한 테스트 코드를 실행시킨다. ( 테스트 코드를 작성하지 않은 서비스에서는 이 과정을 생략하기도 한다. ) 그런 뒤 테스트가 통과되면 서버 컴퓨터에 최신 코드가 배포된다. 

✅CI/CD를 구축할 때 사용할 Github Actions

CI/CD를 구축할 때 사용하는 툴은 여러가지가 있다.

  • Github Actions - 별도의 서버 구축 필요 없음
  • Jenkins - 별도의 서버 구축 필요
  • Circle CI
  • Travis CI 
  • 등등

이 중에서 현업에서 많이 사용하면서, 무료로 사용할 수 있고, 빌드용 서버가 따로 필요없는 Github Actions를 활용해서 CI/CD를 구축할 수 있다. 실제 현업에서는 Github Actions 뿐만 아니라 Jenkins도 많이 활용한다. 둘 중 무엇을 사용해도 CI/CD 구성을 전부 할 수 있다. 그러므로 Github Actions를 사용할 지, Jenkins를 사용할 지는 장단점을 비교해서 상황에 맞게 선택하면 된다. 개인적으로 추천하는 툴은 Github Actions이다.

  • Jenkins의 단점은 별도의 서버를 구축해야 한다는 점이다. 하지만 Github Actions는 빌드용 서버 구축 없이 Github에 내장되어 있는 Github Actions 기능을 사용할 수 있다. 
  • Github Actions는 비용적인 측면도 유리하고 셋팅하는 데 시간도 적게 걸린다. 

Github Actions를 활용한 전체적인 CI/CD 흐름

Github Actions를 로직을 실행시킬 수 있는 일종의 컴퓨터라고 생각하면 된다. 그렇기 때문에 CI/CD과정에서 Github Actions는 "빌드, 테스트, 배포"에 대한 로직을 실행시키는 역할을 하게 된다. CI/CD의 구성은 다양하지만 일반적으로 아래의 흐름을 같는다.

 

  1. 코드 작성 후 Commit
  2. Github에 push
  3. Push를 감지해서 Github Actions에 작성한 로직이 실행된다.
    1. 빌드(Buid)
    2. 테스트(Test)
    3. 서버로 배포(Deploy)
  4. 서버에서 배포된 최신 코드로 서버를 재실행
728x90

'백엔드 > DevOps' 카테고리의 다른 글

백엔드 CI/CD에 필요한 AWS 지식  (1) 2024.06.02