[Dev-Ops] CI/CD란 무엇인가

Dabi·2022년 5월 10일
6

DEV-Ops

목록 보기
1/1

이번 포스팅에서는 CI/CD에 대해 포스팅하고 있습니다.



[정의]

IT 업계에서 일을 하게된다면, CI/CD라는 용어를 한번씩들어보게 되는데요.

지속적 배포? 지속적 통합? 이라고 직역해서 이해하기엔 잘 와닿지가 않습니다.

소프트웨어공학에서는 CI/CD를 다음과 같이 정의하고 있습니다.

"개발부터 배포까지 모든 단계를 자동화 하여 짧은 주기로 고객에게 제공하는 것"



CI | Continuous Integreation

직역하면 지속적 통합이라는 의미로 해석됩니다.

Application의 새로운 코드들이 자동으로 buildtest 되어 Repository에

통합되는 것을 의미합니다.



언제 사용할까?


1. 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경

지속적으로 서비스를 해야하는 어플리케이션이나 개발중인 어플리케이션의 경우 기능

추가 시마다 commit을을 날려 레포지토리에 버전 업데이트를 해줘야합니다.

이런 상황에서 스파게티처럼 엉켜있는 작업물을 기능별로 빌드 / 테스트 / 병합 하는 일은

매우 번거로운 일입니다.

이런 상황에서 자동화된 빌드 및 테스트원천 소스코드의 충돌을 예방해줄 수 있습니다.


2. MSA(Micro Service Architecture) 환경

개발자들이 통으로 짰다 혹은 통짜 구조 라는 말들을 자주하곤 합니다.

왼쪽 그림에서와 같이 기존의 서비스는 대부분 UI와 비즈니스로직, 데이터 접근 계층이

하나의 거대한 어플리케이션 안에 하나로 들어가 있는 구조였습니다.


하지만 MSA는 오른쪽 그림과 같이 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태를

의미합니다. MSA 환경에서는 대부분 소규모 기능 단위로 빠르개 개발 후 적용을 반복하는

애자일 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하게 발생하게 됩니다.


이러한 상황에서 추가시 동작 테스트의 중요성은 높아지게되고, CI를 도입하여,

기능 충돌 방지의 이점을 가져올 수 있습니다.


이러한 CI의 도입을 통해 얻을 수 있는 이점은 다음과 같습니다.

디버깅 속도 향상, 소프트웨어의 품질 개선, 업데이트 QA 시간 및 출시까지의 시간 단축

CD | Continuous Delivery & Depolyment



지속적인 서비스 제공지속적인 배포라는 두 용어에 대한 축약어로 쓰입니다.

지속적인 서비스 제공은 자동으로 공유 레포지토리로 Release하는 것을 의미합니다.

지속적인 배포는 현재 운영중인 제품 단계까지 자동으로 배포하는 것을 의미합니다.

MSA와 같이 애자일 방법론이 적용되어 있는 경우, 서비스의 사용자는 최대한 빠른 시간 내에

최신 버전의 Production을 제공 받을 필요가 있습니다.

이 때, 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 해주는 것이

CD의 역할 입니다.



이러한 CD의 도입을 통해 개발팀과 비즈니스팀간의 커뮤니케이션이 부족한 문제를

해결해 줌으로써, 배포에 드는 비용을 줄일 수 있는 이점이 있습니다.



[Conclusion]



정리하자면 CI는 새로운 소스코드의 자동화된 빌드 및 테스트, 병합을 의미하며,

CD는 개발자의 변경 사항이 레포지토리를 넘어 고객이 사용하는 제품 환경까지 자동으로

릴리즈되는 것을 의미합니다.

profile
논리적인 사고와 추론을 지향합니다.

3개의 댓글

comment-user-thumbnail
2022년 5월 11일

CI/CD에서 대해서 구체적으로 설명해놓은 글이네요! 좋은 글 감사합니다~~

답글 달기
comment-user-thumbnail
2022년 5월 11일

CI/CD가 매번 헷갈렸는데 쉽게 설명되어 있어 좋았습니다! 감사합니다

답글 달기
comment-user-thumbnail
2022년 5월 11일

CI/CD에 대해 알기쉽게 설명해주셨네요! 유익한 포스팅 감사합니다!

답글 달기