CI/CD 적용 배경
회사에서 주로 수동 배포를 진행하고 있는데 몇 가지 불편함을 느끼고 있습니다.
- SSH로 매번 서버에 접속해야 하는 번거로움
- 휴먼에러 발생 가능성 특히 잘못된 profile 지정
이러한 문제를 해결하고 배포 과정을 간소화하기 위해, 버니케어 프로젝트에 CI/CD를 적용했습니다.
CI/CD Tools
인터넷에서 CI/CD 도구를 검색해 본 결과, 주로 다음과 같은 조합으로 사용되는 것을 확인했습니다.
- Github Actions + AWS
- Github Actions 단독
- Jenkins
Jenkins는 강력하고 실무에서 자주 사용하는 도구입니다. 하지만,
- 별도 서버가 필요해 초기 비용이 증가하고,
- 이는 비용절감 목표에 부합하지 않습니다.
따라서, 추가 설치없고 한가지 툴로 구현할 수 있는 Github Actions 단독사용을 선택했습니다.
그럼 CI와 CD가 무엇인가?
CI : 지속적인 통합(Continuous Integration)
- 여러 개발자들이 작성한 코드를 배포 브랜치에 통합하기 전에, 자동화된 빌드와 테스트를 통해 코드의 품질을 보장해 준다.
- 통합 전에 문제를 발견하여 리스크를 줄여주는 시스템이다.
코드 품질을 보장하는 핵심 시스템입니다.
CD: 지속적인 배포(Continuous Deploy)
- 코드의 변경사항이 존재하면 자동으로 배포해주는 시스템이다.
- 무의미한 반복적인 경험과 배포 오류를 줄여주는 시스템이다.
배포 프로세스를 자동화하여 효율성과 신뢰성을 높이는 시스템입니다.
CI/CD 도입 기대 효과
CI/CD 도입으로 얻을 수 있는 효과는 다음과 같습니다.
- 배포 시간 절약
- 자동화된 빌드와 배포로 수작업을 줄여 배포 시간을 절약할 수 있습니다.
- 코드 품질 향상
- 자동화된 빌드와 테스트를 통해 잠재적인 문제를 조기에 발견할 수 있습니다
- 휴먼에러 감소
- 수동 배포 과정에서 발생하는 실수를 방지합니다.
마무리
이번 글에서는 버니케어 프로젝트에 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 |