프로젝트에 CI/CD를 적용해보기 #1

CI/CD 적용 배경

회사에서 주로 수동 배포를 진행하고 있는데 몇 가지 불편함을 느끼고 있습니다.

  • SSH로 매번 서버에 접속해야 하는 번거로움
  • 휴먼에러 발생 가능성 특히 잘못된 profile 지정

이러한 문제를 해결하고 배포 과정을 간소화하기 위해, 버니케어 프로젝트에 CI/CD를 적용했습니다.

CI/CD Tools

인터넷에서 CI/CD 도구를 검색해 본 결과, 주로 다음과 같은 조합으로 사용되는 것을 확인했습니다.

  1. Github Actions + AWS
  2. Github Actions 단독
  3. Jenkins

Jenkins는 강력하고 실무에서 자주 사용하는 도구입니다. 하지만,

  • 별도 서버가 필요해 초기 비용이 증가하고,
  • 이는 비용절감 목표에 부합하지 않습니다.

따라서, 추가 설치없고 한가지 툴로 구현할 수 있는 Github Actions 단독사용을 선택했습니다.

그럼 CI와 CD가 무엇인가?

CI : 지속적인 통합(Continuous Integration)

  • 여러 개발자들이 작성한 코드를 배포 브랜치에 통합하기 전에, 자동화된 빌드와 테스트를 통해 코드의 품질을 보장해 준다.
  • 통합 전에 문제를 발견하여 리스크를 줄여주는 시스템이다.
코드 품질을 보장하는 핵심 시스템입니다.

CD: 지속적인 배포(Continuous Deploy)

  • 코드의 변경사항이 존재하면 자동으로 배포해주는 시스템이다.
  • 무의미한 반복적인 경험과 배포 오류를 줄여주는 시스템이다.

배포 프로세스를 자동화하여 효율성과 신뢰성을 높이는 시스템입니다.

CI/CD 도입 기대 효과

CI/CD 도입으로 얻을 수 있는 효과는 다음과 같습니다.

  1. 배포 시간 절약
    • 자동화된 빌드와 배포로 수작업을 줄여 배포 시간을 절약할 수 있습니다.
  2. 코드 품질 향상
    • 자동화된 빌드와 테스트를 통해 잠재적인 문제를 조기에 발견할 수 있습니다
  3. 휴먼에러 감소
    • 수동 배포 과정에서 발생하는 실수를 방지합니다.

마무리

이번 글에서는 버니케어 프로젝트에 CI/CD를 도입하게 된 배경과 선택한 도구, CI/CD의 개념 및 도입 기대 효과를 정리해보았습니다.
다음 글에서는 GitHub Actions를 활용한 CI/CD 아키텍처와 구현 방식에 대해 자세히 다뤄보겠습니다.

'DevOps' 카테고리의 다른 글

Nginx Websocket connection to failed  (0) 2024.02.17
fail2ban  (0) 2024.02.05
ssh connection timeout  (0) 2024.02.05
[Ubuntu] Ubuntu 22.04 swap 메모리 설정  (0) 2024.02.03
[Docker] Ubuntu 22.04 Docker 설치  (0) 2024.02.03