간단하게 알아보는 CI/CD

Server_side·2024년 1월 19일
0
post-custom-banner

점점 빠르게 변화하고 성장해나가는 시대에 맞춰 빠른 업데이트/배포를 위해 많은 기업들에서 채택한 CI/CD 프로세스에 대해서 간단히 알아보자

CI/CD

CI/CD를 번역하자면 지속적인 통합/지속적인 제공(배포)라는 뜻으로 소프트웨어의 개발 단계부터 배포까지 모든 단계를 자동화함으로써 사용자에게 더 짧은 주기로 제공하는 것을 말한다.
그렇다면 지속적인 통합/제공/배포에 대해서 하나씩 알아보자

CI(Continuous Integration)

신규 코드 변경 사항들이 주기적으로 빌드 및 테스트되어 메인 레포지토리에 merge되는 것을 말한다.

특징
1. 다수의 개발자가 작업한 기능별 코드들을 자동화된 빌드 및 테스트를 통해 주기적이고 빈번하게 메인 레포지토리에 통합하므로 소스 코드의 충돌 예방 할 수 있음
2. 자동으로 빌드 및 테스트를 하기 때문에 코드의 문제점을 빠르게 발견할 수 있음
3. 빈번한 통합을 통해 매번 수정되어 통합되는 코드량이 적으므로 문제점이 발생하더라도 빠르게 발견 가능

CD(Continuous Deployment/Delivery)

CI는 신규 커드 변경 사항들을 빌드 및 테스트하여 메인 레포지토리에 통합하는 것이었다면,
CD는 해당 변경 사항들을 사용자에게 자동으로 배포, 즉 릴리즈까지 하는 것을 말한다.

Continuous Delivery: CI(빌드/테스트)이후 릴리즈준비가 끝나면 '수동'으로 사용자에게 배포하는 것
Continuous Deployment: CI(빌드/테스트)이후 릴리즈준비가 끝나면 '자동'으로 사용자에게 배포 하는 것

Delivery와 Deployment는 최종 배포 단계가 자동화가 되었는지 아닌지에 따라 나뉨
즉, CI/CD가 적용된 소프트웨어들이라고 할지라도 같은 CI/CD 가 적용된건 아닐 수 있음
자동 배포까지 적용했다는 것은 구축한 CI/CD 프로세스에 그만큼 자신이 있다는 뜻이라고 생각된다.

CI/CD 툴

Jenkins, Github Actions, CircleCi 등이 존재

마무리

이번 포스팅에서는 CI/CD에 대해서 가볍게 알아봤고 CI/CD의 가장 큰 특징은 속도와 자원낭비 최소화(즉 시간낭비)라고 생각된다.
이러한 종류는 직접 프로젝트에 적용하면서 배워가는 것이 글만 읽는 것보다는 배움의 효율이 더욱 좋을 것이다.
곧 신규 프로젝트를 진행할 예정인데 이번 프로젝트에서는 CI/CD를 적용해 볼 생각이며 적용하면서 빨리 여러 이슈들을 경험하며 능력치를 끌어올리고 싶다...

profile
아마도 난 백엔드 style?
post-custom-banner

0개의 댓글