본문 바로가기

1.관리 및 아키텍처

DevOps 소개

들어가기

고객 요구에 대한 빠른 반영과 수시 배포하는 환경 이슈를 극복하기 위한 개발 방법론이다. 이 방법론은 소프트웨어 개발과 운영을 하나의 팀으로 운영한다. DevOps에 대해 간단하게 살펴보자.

작성자: ospace114@empal.com, http://ospace.tistory.com/

DevOps란

DevOps는 Development Operation 약자로 IT 개발자와 운영자들 사이의 의사소통, 협업, 융합을 강조하는 팀 문화이자 개발 방법론이다. DevOps은 목적은 상품과 서비스를 신속하게 생산하는데 있다.

Dev vs. Ops 충돌

개발과 운영 사이에는 간극이 있다. 개발은 고객 요구를 빠르게 반영하기를 원하지만 운영은 안정성에 더 중점을 둔다. 이로 인해 서로간에 다른 목표로 생기는 차이점이 발생하고 또한 프로세스도 서비스 반영과 관리 방식의 차이가 발생한다. 또한 사용하는 도구도 서로 다르다.
이 간극을 메꾸기 위해서는 공통 목표를 세우고 프로세스와 도구를 공유하여 차이를 줄여야 한다. 사람이 프로세스나 도구보다 중요하다는 문화가 핵심이다.

개발 범위

전체 프로세스 측면에서 처음 고객이나 비즈니스로 인한 요구사항을 분석하는 영역이 있고 이를 구현, 테스트, QA를 진행하는 개발 영역과 최종 서비스를 운영하는 영역으로 나눌 수 있다. 물론 개발 영역은 각 항목을 더 세부적으로 나누기도 한다.
Agile은 지속통합의 관점으로 요구사항 분석, 버전관리, 빌드 및 일부 테스트까지 개발 영역으로 담당한다. 그러나 DevOps인 경우는 지속전달 측면에서 요구사항 수집 및 분석을 제외하고 개발영역에서 운영영역까지 공통으로 개발영역에 포함된다.

  • Agile: 요구사항 수집 분석에서 테스트까지
  • DevOps: 개발에서 운영까지

이런 범위도 개발팀 또는 회사의 환경에 따라 달라진다.

환경 구성

DevOps에서 중요한 부분이 수정 작업이 아닌 자동화에 의한 프로세스 진행에 있다. DevOps 환경에 필요로 하는 주요 3가지 시스템은 다음과 같다.

  • 버전관리 시스템: 소스, 설계서, 스키마, 설정파일, 의존관계 정의, 시스템 및 인프라 설정 포함
  • 타겟관리 시스템: 버전관리 시스템과 연계
  • 프로비저닝 툴체인: 시스템 할당,배치,배포하는 도구

추가로 고려한다면 이슈관리 시스템과 커뮤케이션 툴이 있을 수 있다.
DevOps는 지속적인 통합과 배포(CI/CD)에 지속적인 모니터링 및 관리까지 포함된 어플리케이션의 전체 라이프사이클을 관리한다고 보면 된다.

DevOps은 좋은가?

DevOps를 도입할 경우 장점이 많다. 거의 모든 과정을 한 팀에서 해결하기 때문에 빠르게 기능을 반영할 수 있고, 버그나 문제점이 발생할 경우 중간 의사소통이 없기에 더 빠르게 해결 가능하다. 개발자는 더 안정적인 서비스 구현에 노력하게 되며, 자동화가 더 확충된다. 물론 그외에 안전성, 확장성, 리소스 효율 향상 등이 있다고 하지만 이는 기준 운영 방식에도 비슷하게 적용할 수 있기에 특별한 장점은 아니라고 생각든다.
장점만 있는게 아니라 단점도 있다. 필자가 생각하기에 개발자의 부담이 직간접적으로 늘어나기에 기존 개발 속도나 소요자원이 더 많이 소요된다. 즉, 개발 기간이 늘어난다. 최악에 경우 운영시스템 심각한 문제로 인해 개발 업무를 전혀 진행할 수 없을 수 있다.

마무리

개발자가 운영자에 역활을 100% 대처할 수 없고 운영자가 개발 업무를 매우 잘한다는 보장이 없다. 운영 업무도 시스템 자원 소모와 필요 자원에 대한 대비, 외부 공격에 대한 분석과 대응 및 시스템 오류에 대한 대처와 원인 분석 등의 다양한 업무가 있다. 그렇기 때문에 개발자가 운영에 대한 업무까지 부담하는 경우 알게 모르게 개발업무에 영향을 미치게 된다. 어쩌면 운영은 문제을 사전에 예방하기 보다, 문제가 발생할 경우 대응하는 형태일 경우가 많게 된다.
개발자가 해야할 역할이 점점 더 많이 늘어나고 있다. 그나마 최근에 최근 클라우드나 오픈 소스로 인해 이에 대한 부담이 줄어들고, 어느 정도의 운영 지식은 검색을 통해서 보완될 수 있다. DevOps은 어떻게 보면 Agile + Operation 처럼 보인다. 부족한 글이지만 도움이 되었으면 하네요. 모두 즐거운 코딩 하세요. ospace.

출처

[1] Terry Cho, 개발과 운영의 조화 – Devops, http://bcho.tistory.com/815
[2] 김동수, DevOps와자동화, http://www.slideshare.net/ds5apn/dev-ops-2013041801pdf

반응형