DevOps 란 무엇인가

한 번의 광고 클릭은 블로그 운영에 큰 도움이 됩니다. 감사합니다.

DevOps 란?

DevOps 란 소프트웨어의 개발(Dev)과 운영(Ops)을 결합해 제품을 더 빠르고 효과적으로 개선하기 위한 철학, 문화, 도구의 집합체입니다. 소프트웨어 개발자와 시스템 운영자 등 전문가들 간의 협업과 소통, 통합을 통해 DevOps는 다음의 목표를 이루는 것을 목적으로 합니다.

  • 시스템 개발 생명 주기의 단축 (Shorten the systems development life cycle)
  • 높은 소프트웨어 품질의 지속적 제공 (Provide continuous delivery with high software quality)

DevOps의 유래

사실 DevOps 의 개념은 완전히 새로운 것이 아닙니다. DevOps 는 Agile 개발 방법론을 보완해 발전시킨 방식이고, 두 사이에는 많은 유사성이 있습니다.

DevOps 가 본격적으로 논의 된 계기는 2009년, O’Reilly Velocity 컨퍼런스에서 Flickr의 두 엔지니어, John Allspaw와 Paul Hammond가 “하루에 10번 배포하기 – 개발자와 운영자 간의 협업 at Flickr”란 주제로 강연을 하면서부터 입니다. 당시에는 개발팀과 운영팀이 완전히 나뉘어 있어 새로운 기능을 배포하려는 개발팀과 안정적으로 시스템을 운영하려는 운영팀이 많은 갈등을 일으켰지만 Flickr는 두 조직 간에 발생한 다양한 이슈들을 비롯해 어떻게 해결해 나갔는지를 컨퍼런스를 통해 공유했습니다.

이 강연을 통해 그들은 개발자(Dev)와 운영자(Ops) 간의 협업과 소통이 필수적이었던 다양한 사례들을 제시하였고, 이는 이후에 Patrick Debois가 DevOpsDays 라는 컨퍼런스를 개최하여 이 용어가 본격적으로 등장하게 된 계기가 되었습니다.

DevOps-Toolchain

DevOps툴체인은 DevOps를 적용해 하나의 체인과 같이 배포, 개발, 운영 등 시스템 개발 주기를 관리하기 위한 도구들의 모음입니다. 그 구성은 대략적으로 다음과 같습니다. (Wiki 참고 : DevOps toolchain – Wikipedia)

1. Plan

이 활동은 “Define”와 “Plan”으로 이루어져 있고 비즈니스 가치와 어플리케이션 요구 사항을 정의하는 것을 목표로 합니다. 세부적으로 이 활동은 다음 사항들로 이루어져 있습니다.

  • 제품 평가 지표 (Production metrics)
  • 요구사항 정의
  • 비즈니스 평가 지표 (Business metrics)
  • 수정사항 릴리즈 평가 지표 (Update release metrics)
  • 릴리즈 계획 및 타이밍 (Release plan, timing and business case)
  • 보안 정책 및 요구사항

이 활동은 다음 IT 구성원들의 참여하게 됩니다 : 비즈니스 어플리케이션 소유자, 소프트웨어 개발자, 소프트웨어 설계자, 릴리즈 관리자, 보안 담당자, 인프라 담당 조직 등

2. Create

Create는 “Building”과 “Coding” 그리고 소프트웨어 개발 프로세스를 정의하는 활동들로 구성돼 있습니다.

  • 소프트웨어와 설정들에 대한 디자인
  • 코드 품질과 성능 관리
  • 소프트웨어 빌드 및 빌드 품질 관리
  • 릴리즈 후보

3. Verify

이 활동은 소프트웨어 릴리즈에 대한 품질을 보장하는 것에 직접적으로 연관되어 있습니다. 즉, 최고 품질의 코드 퀄리티가 유지되어 제품에 배포되는 것을 목적으로 합니다.

  • 인수 테스트 (Acceptance testing)
  • 회귀 테스트 (Regression testing)
  • 보안 및 취약성 분석
  • 성능 (Performance)
  • 설정 테스트 (Configuration testing)

4. Packaging

Packaging은 릴리즈의 배포가 준비 되었을 때의 활동들을 의미합니다. 다음의 활동들이 Packaging에 해당합니다.

  • 승인 및 사전 승인 (Approval/preapprovals)
  • 패키지 설정 (Package configuration)
  • 촉발 릴리즈 (Triggered releases)
  • 단계 릴리즈 및 중단 (Release staging and holding)

5. Release

Release는 제품과 목표 환경으로 소프트웨어를 배포하기 위한 일련의 과정(schedule, orchestration, provisioning and deploying)들과 관련이 깊습니다.

  • 릴리즈 조직화
  • 어플리케이션 배포
  • 대체 및 복구
  • 계획된 릴리즈 (Scheduled/timed releases)

6. Configure

이 활동은 DevOps의 운영자(Operation) 측의 활동들입니다. 한번 소프트웨어가 배포가 되면 추가적인 IT 인프라적인 반영 및 설정 작업들이 필요할 수 있습니다.

  • 인프라 용량, 데이터베이스, 네트워크 등의 반영 및 설정
  • 어플리케이션 반영 및 설정

7. Monitor

Monitoring은 DevOps툴체인의 중요한 연결고리입니다. 이 활동은 IT 조직으로 하여금 특정 릴리즈의 이슈들을 확일 할 수 있고 최종 유저들에 대한 영향도까지 확인할 수 있습니다.

  • IT 인프라적 성과
  • 최종 유저 경험 및 응답
  • 제품 평가 지표 및 통계

8. Version Control

Version Control은 변경사항을 문서, 프로그램, 웹 사이트 등에 기재하고 관리하는 행위들을 의미하고 이는 소프트웨어 환경설정 관리 측면에서 매우 중요합니다.

  • 비선형 개발 (Non-linear development)
  • 분산 개발 (Distributed development) 등

참고 글

error: Content is protected !!