posted by 귀염둥이채원 2018. 4. 3. 01:28

소프트웨어 개발 방법론의 하나로, 개발(development)과 운영(operation)을 결합한 혼성어이다. 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론을 말한다.

시스템 개발자와 운영을 담당하는 정보기술 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론을 말한다. 정확한 정의가 존재하지 않는 추상적 개념에 해당하지만, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해서 개발과 운영이 상호의존적으로 대응해야 한다는 의미로 통용된다.


이러한 데브옵스의 개념은 애자일 소프트웨어(agile software) 개발과 지속적 통합(continuous integration) 등의 개념과도 관련이 있다. 애자일 소프트웨어 개발 방법은 계획과 문서를 기반으로 개발 모형이나 모델에 따라 앞을 예측하며 개발하는 것이 아니라, 실질적인 코딩을 기반으로 일정한 주기에 따라 계속적으로 프로토타입을 형성하고 필요한 요구 사항을 파악하며 이에 따라 즉시 수정사항을 적용하여 결과적으로 하나의 큰 소프트웨어를 개발하는 적응형(adaptive style) 개발 방법이다.


지속적 통합이란 개발 당시의 코드(baseline code)와 개발 완료 후의 차이가 극심하여 통합시 다양한 변화와 의존성 문제 해결에 개발 시간보다 더 많은 시간이 소요되는 문제를 해결하기 위해, 통합 작업을 초기부터 계속적으로 자주 수행하여 지속적으로 소프트웨어의 품질 제어를 적용하고자 하는 것이다.


애자일 소프트웨어 개발에서는 작은 변경을 자주 출시하기 때문에 개발 담당자와 운영 담당자의 협업이 긴밀해야 하며, 이러한 개발 방법의 보급과 함께 데브옵스에 대한 개념도 널리 보편화되었다.


데브옵스라는 용어는 2008년 애자일 컨퍼런스에서 앤드루 클레이 쉐이퍼(Andrew Clay Shafer)와 패트릭 드부와(Patrick Debois)가 "애자일 인프라스트럭처"에 대해 논의하며 처음으로 사용되었다. 이 용어는 그 후 2009년 벨기에에서 열리기 시작한 "데브옵스 데이(DevOps Day)"를 통해 대중화되었다.


데브옵스는 개발 프로세스에 대한 철학이자 이러한 방법론을 실현시키는 플랫폼과 툴셋을 모두 포함하는 개념으로, 데브옵스를 더욱 쉽게 실천하기 위해서 셰프(Chef)나 퍼펫(Puppet)과 같은 인프라 구성관리 자동화 툴을 사용할 수 있다. 이러한 데브옵스 툴을 사용하는 경우 자동화된 테스팅 실시가 가능하며 자동화된 구성관리(CM:Configuration Management)를 통해 서버 설정을 자동화할 수 있기 때문에 투입 리소스를 절감할 수 있는 효과를 가져온다.


'Devops' 카테고리의 다른 글

CI/CD란 무엇인가?  (0) 2018.04.03
ansible이란 무엇인가?  (0) 2018.04.03