DevOps란?_DevOps와 CI/CD
본문 바로가기
DevOps 부트캠프/etc.

DevOps란?_DevOps와 CI/CD

by liveloper jay 2022. 2. 8.

평소 DevOps라는 단어는 들어 보았지만 이것이 대충이라도 어떤 것인지 개념이 쉽게 잡히지 않아 고민하던 중 이번 DevOps부트캠프 기간을 통해 내용을 정리해보려 합니다.

출처: 위키백과( https://ko.wikipedia.org/wiki/데브옵스)



DevOps란?

데브옵스(DevOps)는 Dev(Development,개발)+Ops(Operations,운영)의 합성어입니다. 그럼 개발과 운영은 각각 어떤일을 맡아 진행하며 DevOps는 구체적으로 어떤 것일까요?

개발 및 서비스를 하는 조직의 경우 팀을 나누어 개발 및 유지보수를 담당하게 됩니다. 여기서 각 팀의 목표는 다음과 같습니다.

  • 개발(Dev) : 빠른 개발을 통한 잦은 배포와 업데이트, 애플리케이션을 통한 쉽고 빠른 리소스 제공
  • 운영(Ops) : 프로덕션 앱의 안정성, 애플리케이션이 아닌 인프라 관리, 모니터링 및 제어


여기서 하나의 서비스를 서로 다른 팀에서 개발 및 관리하기 때문에 효율성이 떨어지거나, 개발팀과 운영팀의 소통이 원활하게 진행되지 않는 경우가 생길 수 있습니다. 이때 각 팀간의 단절되었던 역할들을 서로 조율하고 협업하여 더욱 안정적이고 뛰어난 제품을 생산할 수 있도록 지원하기위해 등장하게 된 것이 DevOps라는 개발방법론입니다. 그럼 DevOps가 가지는 이점에는 어떤 것들이 있을까요?

  • 속도 : 작업속도의 향상으로 사용자들의 요구사항 및 시장변화에 더 빠르게 적응
  • 신속한 제공 : 릴리즈 속도 향상으로 인해 제품을 더 빠르게 개선
  • 안정성 : 사용자에게 빠르게 안정적인 서비스 제공을 통한 품질 보장
  • 확장 : 자동화와 일관성 지원을 통한 위험부담 감소와 효율적 관리
  • 협업 강화/ 보안


지금까지 DevOps는 어떤것이며 가지는 이점에 대해 알아보았습니다. 그럼 우리가 일반적으로 알고있는 DevOps엔지니어는 어떤 업무를 하게 될까요?
간단하게 설명하면 DevOps 엔지니어는 개발 라이프사이클 또는 서비스에서 반복적인 일들을 자동화하고, 각 팀간의 차이를 기술적으로 해소시키는 역할을 합니다. 즉 작성된 코드를 이용하여 빌드,테스트 에서 배포까지의 파이프라인을 구성하는 것이 DevOps의 영역이라고 할 수 있겠습니다. 이 파이프라인 구성에 대한 정보를 알기 위해 함께 필요한 개념인 CI/CD 파이프라인에 대해 간단히 알아보겠습니다.


CI/CD 파이프라인

먼저 CI/CD 파이프라인 설명을 진행하겠습니다.

출처: 위키백과(https://ko.m.wikipedia.org/wiki/파일:Devops-toolchain.svg)

위 사진을 참고하여 파이프라인의 각 과정을 설명하면 다음과 같습니다.

  1. 계획 : 서비스 및 애플리케이션을 만드는데 있어 방법, 절차 등을 미리 생각하여 계획하는 단계
  2. 코드 : 계획을 바탕으로 코드 작성 및 검토, 코드 병합 및 저장소에 업로드
  3. 빌드 : 코드 저장소로부터 내려받은 코드에 대한 테스트 진행 후 빌드
  4. 테스트 : 빌드의 결과물 테스트 (테스트의 결과가 성능을 결정)
  5. 패키지/릴리스 : 배포 가능한 패키지 작성, 변경사항 관리 및 릴리스 승인/자동화
  6. 배포 : 클라이언트가 사용 가능하게 서비스 배포를 진행
  7. 운영/모니터링 : 서비스의 안정성 및 성능 확인, 에러 발생시 빠른 대응

다음은 CI/CD에 대해 알아보도록 하겠습니다.

CI(Continuous Identity)란?

CI란 변경되거나 새롭게 작업된 내용에 대해 정기적으로 유닛 테스트 및 빌드를 진행하며 통합하는 과정입니다. 서비스 및 애플리케이션 제공 과정에서 여러 개발자가 참여하게 됩니다. 여기서 여러 개발자가 각자 개발한 코드를 주기적으로 commit하게 되고, 지속적인 통합이 없다면 충돌이 발생하여 통합하는 과정이 별도로 필요할 것입니다.
그때 CI 자동화 시스템을 구축하게 되면 commit된 소스코드를 주기적으로 내려받아 유닛테스트 및 빌드를 진행하게 됩니다. 이 과정에서 결함이 있을 경우 빠른 해결 또한 가능해집니다.

CD(Continuous Delivery/Deployment)란?

CD란 지속적인 서비스 제공(Continuous Delivery)과 지속적인 배포(Continuous Deployment) 두가지를 의미하며,CI 과정 수행후, 배포단계까지의 과정에서 문제는 없는지 검증 후 배포할 환경과 유사한 환경에서 검증을 진행 후 유효하면 배포할 환경으로 전달하하는 것을 Continuous Delivery , 전달 받은 결과를 자동화하여 배포하는 이후의 과정을 Continuous Deployment라고 합니다.


CI/CD 파이프라인은 지속적 배포를 하는 것을 목적으로 하며, CI/CD를 통해 사용자들에게 더 빠르게 서비스를 제공할 수 있을 것입니다.

댓글