나의 개발일지

DevOps와 CI/CD 란 무엇일까? | DevOps와 CI/CD의 연관성 본문

카테고리 없음

DevOps와 CI/CD 란 무엇일까? | DevOps와 CI/CD의 연관성

heew0n 2024. 4. 22. 21:07

DevOps

Development (개발) + Operations (운영)

단절된 개발과 운영간 프로세스를 Seamless하게 연결하고 자동화 방법을 통해 효율성을 극대화하는 방법

( 사용자에게 안전성과 신속성을 제공하기 위해 )

 

DevOps의 핵심요소

[ CAMS ]

Culture | 문화

팀의 경계를 완화하고 협업 수준 향상 / 조직의 사일로화 현상을 경계해야 한다

부서별 데이터가 통합되지 않아서 회사 전체 데이터를 통합해 인사이트를 얻기 곤란

비즈니스 목표에 맞춘 원활한 커뮤니케이션과 협업 문화가 중요하다 

       ** 사일로(Silo) : 곡식이나 사료를 저장해 두는 굴뚝 모양의 창고로, 각 사일로에는 동일한 내용물만 저장한다.

                                       다른 부서와는 담을 쌓고, 자기부서의 이익만 추구하는 것!

                                       

Automation | 자동화

전 과정을 자동화된 프로세스로 관리

품질검사 및 모니터링도 자동 -> 시간 절약, 실수 예방, 서비스의 일관성 유지

 

Measure | 측정

지속적인 서비스 개선을 위해 중요

DevOps 전반에 대한 측정 능력 및 방안 필요

투명성, 접근성, 가시성 

 

Share | 공유

조직 전반의 요구사항을 도출

협업 툴을 활용하여 중복 작업 제거 및 참여 의식 고취

MSA의 경우 - 서비스 구조가 복잡하여 작업 공유가 안되면 작업 내용 및 변경사항 파악 불가,

                          장애가 발생하여도 원인 분석에 많은 시간이 소요 

개발/운영 노하우를 공유하여 장애 예방 및 조직 전체의 기술 역량 고취

 

 


 

 

CI/CD

 

출처 : 하늘네트

 

CI (Continuous Integration) | 지속적인 통합 ➡️ "빌드와 테스트 자동화"

코드 변경 사항이 정기적으로 빌드 및 테스트되어 (가능하면 매시간 또는 매일) 공유 리포지토리에 통합되는 과정을 통해 계속 품질을 유지하면서 개발을 진행하는 방법

 

 

CD (Continuous Delivery or Continuous Deployment)  | 지속적인 전달 or 지속적인 배포 ➡️ "배포 자동화"

Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것

Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것

차이점은 자동화가 돼있는지 안돼있는지!

CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데,

CD는 개발자가 변경 사항이 레포지토리를 넘어 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미한다!

 

 

CI/CD가 필요한 이유

속도와 효율! 오늘날과 같이 다차원으로 끊임없이 진화되고 있는 개발 환경을 고려할 때, 조직들의 가장 큰 과제 중 하나는 시장 변화 및 고객 요구에 신속하고 유연하게 대응할 수 있는 개발안을 구축하는 것이다. 이러한 문제에 대한 중추적인 솔루션인 Agile 문화와 DevOps의 한 부분으로써 CI/CD개념이 출현한 것이다.

 

 

 


 

 

DevOps와 CI/CD의 연관성

 

데브옵스는 개발자와 운영자 사이의 의존성을 줄이고, 개발자가 개발 환경을 직접 세팅하고 운영까지 담당하는 방법론이다. 예를 들어, 개발자가 코딩을 시작하기 위해 테스트 서버가 필요하다면, 운영자에게 요청하고 그에 따라 기다려야 하는 번거로운 과정이 필요하다. 테스트가 완료되면, 다시 운영자에게 실제 운영을 위한 서버를 요청해야 한다.

이러한 시간과 노력을 절약하기 위해, 개발자는 직접 개발 환경을 세팅하고 코드를 작성하며, 테스트가 완료되면 실제 운영 환경까지 준비한다. 이런 방식은 데브옵스의 핵심 원칙 중 하나로, 개발자와 운영자 사이의 협업과 효율성을 증진시킨다.

CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deployment/Delivery)를 의미한다. 데브옵스에서 언급한 과정을 자동화하여, 코드의 통합, 빌드, 테스트, 커밋, 배포, 운영, 점검 등의 단계를 자동으로 처리한다. 대표적인 CI/CD 도구로는 Jenkins가 있다.

CI/CD를 적용하기 전에는 코드 변경 시 오류가 발생하면, 문제를 해결하기 위해 여러 번의 반복적인 작업이 필요하다. 그러나 CI/CD를 적용하면, 코드 변경이 자동으로 빌드되고 테스트되며, 문제가 발생하면 해당 부분만 수정하여 다시 빌드와 테스트를 거친다. 이러한 과정을 통해 개발 생산성이 크게 향상된다.

요약하면, 데브옵스는 개발자와 운영자 간의 업무 경계를 없애고, CI/CD는 개발과 배포 과정을 자동화하여 효율성과 생산성을 높이는 방법론이라고 할 수 있다.