카테고리 없음

[CICD] CI/CD란?

juno0432 2024. 12. 6. 21:54
CI란
코드 배포 전에 변경 사항이 자동으로 빌드되고 테스트되어 저장소에 통합되는 과정.
이를 통해 빌드 결과와 테스트 결과를 즉시 확인할 수 있음.

CD란
CI에서 생성된 안정적인 코드를 서버에 자동으로 배포하는 로직.
이 과정을 통해 코드는 빠르고 안정적으로 스테이징이나 프로덕션 환경에 반영됨.

 

 

 

프로젝트에서 CI/CD를 구축하면서 질문을 받았었다

CI/CD를 하면서 왜 효율성이 올라갔는지? 였다

 

일단 CI/CD를 하면서 하기전과 후를 비교해보자

 


CI CD란

 

  • 지속적 통합(CI)
    개발자들이 작성한 코드를 커밋하면, 각 커밋마다 자동으로 빌드와 테스트가 실행되는 프로세스이다.
    문제가 발생하면 즉시 확인할 수 있도록 자동화된 테스트와 빌드 과정을 제공한다.
  • 지속적 제공(CD)
    CI 과정을 확장하여 안정적인 코드 변경 사항을 스테이징 또는 프로덕션 환경으로 자동으로 배포하는 과정.

 

쉽게 말해서 CI/CD는 테스트, 통합, 배포의 과정을 자동화하는것을 의미한다.

 

CI/CD를 하지 않는다면 아래의 방식으로 배포를 한다.

  1. 새로운 기능에 대한 코드를 작성.
  2. Commit을 찍고 Github에 반영.
  3. 브랜치에 Merge 후 배포.
  4. 배포 시 컴퓨터 서버(예: AWS EC2)에 접속하여 새로운 코드를 다운로드하고 실행.

이 과정을 코드 수정 시마다 반복하기는 매우 번거롭고 비효율적이다.

그리고 다른사람들의 코드또한 지속적으로 들어오는데 테스트는 어떻게하지?

따라서 이러한 반복 작업을 자동화하고 효율적으로 처리하기 위해 CI/CD를 배우고 구축하는 것이 중요하다.

 

CI/CD를 구축할 수 있는 툴에는 여러가지가 있다

  • Github Actions
  • Jenkins
  • Circle CI
  • Travis CI

이 중에서 GitHub ActionsJenkins를 사용하여 CI/CD를 구축하는 방법을 중심으로 공부하고 기록해 나갈 예정이다.

 

Github Actions의 장점은 다음과 같다.

  1. Github 레파지토리와 강력하게 통합되어 있어서, Github의 모든 이벤트에 대응함.
  2. 워크플로우를 YAML파일로 정의하여 버전 관리가 용이하며 수정 및 공유가 간편함.
  3. 별도의 클라우드 설치 필요없음.
  4. 다양한 액션을 GitHub Marketplace에서 제공해줌.

Github Actions의 단점은 다음과 같다.

  1. Jenkins에 비해 실행속도가 느림

Jenkins의 장점은 다음과 같다.

  1. 유연성 : 플러그인과 커스터마이징 가능성이 매우 높아 다양한 요구사항에 대응 가능.
  2. 독립적 실행: 자체 서버에서 실행되므로 외부 의존성이 적음.
  3. 대규모 시스템에 적합: 여러 서버나 복잡한 시스템을 통합하고 관리하기에 적합.

Jenkins의 단점은 다음과 같다.

  1. 설정 및 유지관리의 어려움: 별도의 서버 설치가 필요하여 초기 설정에 시간이 걸림
  2. 비용 문제: 서버를 24시간 가동해야함
  3. 플러그인 의존성 문제: 플러그인의 업데이트와 호환성 유지가 번거로움

이라고 한다.

솔직히 조사하고 적었지만 한번 둘다 써보면서 저 장점과 단점이 맞는지 확인해봐야할것같다.

 

왜 둘다 써보느냐?

 

 

2022년 jetbrains 조사결과 Github Actions와 Jenkins를 둘다 사용하는 결과가 많았기에 사용해볼 예정이다

 

참고자료

https://circleci.com/docs/about-circleci/#what-is-ci-cd

 

CircleCI overview - CircleCI

An overview of CircleCI, continuous integration and continuous delivery

circleci.com

https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-ci-cd-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84

 

비전공자도 이해할 수 있는 CI/CD 입문·실전 강의 | JSCODE 박재성 - 인프런

JSCODE 박재성 | 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 CI/CD 입문 강의를 만들어봤습니다!, 🤬 에라이, 못 해먹겠네!비전공자로 개발을 시작해 여러 회사에서 CTO로

www.inflearn.com

 

https://aws.amazon.com/ko/devops/continuous-integration/

 

CI란 무엇입니까? - 지속적 통합 설명 - AWS

테스트를 좀 더 빈번하게 수행함으로써, 팀에서는 이후에 더 큰 문제로 발전하기 전에 버그를 조기에 발견하고 해결할 수 있습니다.

aws.amazon.com