IT 기술/기타

Devops 와 CI/CD

neeon 2023. 8. 16. 10:51
728x90

DevOps 란?

DevOps = Development(개발+테스트) + Operations(운영)

 

개발과 운영의 합성어. 운영 환경에서부터 개발, 배포까지 진행되는 프로세스의 속도를 높이는 접근방식을 의미.

→ 이런 접근 방식을 적용하려면 개발팀과 운영팀 간의 장벽을 허물고 자주 협력해야함. 이를 정리해둔 모델이 CALMS 모델.

 

[DevOps Elephant] 그림과 같이 DevOps라는 개념이 덩치가 크다보니 각자의 입장에서 부분적으로 이해하고 경험한 것을 마치 전부인 양 인식하는 오해와 혼돈이 있다. - DevOps의 전체 모습을 그만큼 이해하기가 어려움

 

DevOps - CALMS Model

이 개념의 경우 최초에는 비교적 간단한 개념으로 문화(Culture)/자동화(Automation)/측정(Measure)/공유(Sharing) 를 원칙을 DevOps의 4가지 핵심영역으로 보았으나, 추후 Lean 개념이 추가되어 CALMS Model로 발전하였음.

조직의 DevOps 내재화를 평가하기 위한 모델로 많이 사용. : 각 영역별로 실행되는 practice 수준을 진단하여 성숙도 레벨을 판단하고, 보다 성숙한 단계로 진입하기 위한 practice를 보강하는 형식으로 사용

 

DevOps - 4 AREA 접근 방식

Area 1 : 개발 프로젝트의 결과물을 운영으로 전환하는 영역

Area 2 : 운영의 지식과 정보가 개발팀(프로젝트)로 전달되는 영역. 불필요한 차단은 해제하고 운영에서 생산된 정보들이 One-Stop Access 되도록 정책을 만들어야 함

Area 3 : 프로젝트에서 생산된 모든 지식이 운영에 장착되도록 하는 영역. Project Open을 위해 또는 인수인계 단게에서 운영에 전달되는 단순 정보를 넘어서는 것으로, 프로젝트 팀이 운영과 공동 책임을 지는 수준까지를 의미.

Area 4 : 프로젝트 시작부터 운영이 관여하는 영역

 

이 접근법은 "공동의 이해관계를 갖고 공동의 책임을 갖는다"는 면에서 매우 이상적이지만, 실제 세계에서 실현이 어려워 보인다..

 

기타 3ways 접근방식, 5 Plays 전략등을 알아보려면 ...더보기

 

CI/CD 란?

1. CI (Continuous Integration)

지속적인 통합. 개발을 진행하면서도 품질을 관리할 수 있도록 하는 것.

→ 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미

 

* CI의 간단한 순서 

   1) 개발자가 구현한 코드를 기존 코드와 병합한다.

   2) 병합된 코드가 올바르게 동작하고 빌드되는지 검증한다.

   3) 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아간다. 여기서 문제가 없다면 배포를 진행.

 

* 붙어다니는 키워드 : "자동화" - 보통 github 같은 것을 이용하여 CI를 자동화함.

   형상관리 툴에 작업한 코드를 통합해두면, 빌드 및 테스트는 자동으로 진행되므로, 다음 날 버그 발생만 잡으면 됨. 

 

* CI의 장점

   1) 코드 검증에 들어가는 시간이 줄어듬

   2) 개발 편의성이 증가함

   3) 항상 테스트 코드를 통과한 코드만이 repo에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있음.

 

2. CD (Continuous Deployment)

지속적인 배포. 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념.

지속적인 제공(Continuous Delivery)로 사용되기도 함.

- 지속적인 제공은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github와 같은 저장소에 업로드하는 것을 의미

- 지속적 배포는 이렇게 성공적으로 병합된 내역을 저장소 뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈하는 것을 의미

 

* CD의 장점

   1) 개발자는 배포보다는 개발에 더욱 신경 쓸 수 있도록 도와줌

   2) 개발자가 원 클릭으로 수작업 없이 빌드, 테스트, 배포까지의 자동화를 할 수 있음

DevOps 와 CI/CD 의 차이

DevOps 는 개발과 운영을 통합하여 프로세스의 속도를 높이는 접근 방식

CI/CD 는 지속적으로 통합·테스트·배포를 하고 이 흐름을 자동화하는 것

→ 비슷한 개념이나 결국 방법론적으로는 DevOps 는 CI/CD 를 빠르고 지속적이게 반복하는 것이라고 이해했다 나는...

728x90