- Development(개발+테스트) + Operations(운영)
DevOps는 하나의 아이디어(새로운 소프트웨어 기능, 개선 요청 또는 버그 수정 등)가 사용자에게 가치를 제공할 수 있도록 운영 환경에서 개발로부터 배포로 진행되는 프로세스의 속도를 높이는 접근 방식을 의미한다.
이러한 접근 방식을 적용하려면 개발 팀과 운영 팀이 자주 커뮤니케이션하고 팀원들과 공감하면서 업무에 접근해야 한다.
DevOps를 확립하면 셀프 서비스와 자동화를 통해 다양한 이점과 경쟁력을 얻을 수 있다.
대개 표준 개발 환경에서 코딩 작업을 하는 개발자는 IT 운영 담당자와 긴밀하게 협력하여 소프트웨어 빌드, 테스트, 출시 속도를 가속화할 수 있다.
'신속하고 지속적인 소프트웨어 제공을 통한 고객 만족'은 애자일 선언문(Agile Manifesto)의 12가지 원칙 중 첫 번째 원칙이다.
(가능하다면 하루에 여러번까지) CI가 필요한 환경에는 어떤 조건들이 있을까?
: 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어이다.
지속적인 서비스 제공 혹은 지속적인 배포 라는 의미.
(CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데), CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미한다.
CI에서 예로 든 MSA와 같은 환경에서 Agile 방법론이 적용될 경우, 서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다.
이 때, 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support 하는 것이 CD라고 할 수 있다.
이는 서비스의개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결해 줌으로써, 배포에 이르기까지의 노력을 최소한으로 단축시켜 준다는 Benefit을 제공한다.