데브옵스 (DevOps)

개념

DevOps(데브옵스)는 각 팀이 애플리케이션 개발(development)부터 프로덕션 운영(operations)에 이르는 전체 프로세스를 소유하는 방법론이다. 이는 일련의 기술 구현을 넘어 문화와 프로세스의 완전한 변화를 요구한다. DevOps는 (전체 기능에 비해 상대적으로) 작은 구성 요소에 대해 작업하는 엔지니어 그룹들을 필요로 하며, 이를 통해 일반적인 오류 원인 중 하나인 전달/이관(Handoff)을 줄일 수 있게 한다.

다루는 문제

전통적으로, 긴밀하게 연결된 모놀리식 앱을 관리하는 복잡한 조직에서의 업무는, 일반적으로 여러 그룹 사이에서 파편화(fragmented)되었다. 이로 인해 수많은 핸드오프와 긴 리드 타임(lead time)이 발생했다. 구성 요소 또는 업데이트가 준비될 때마다, 그것이 다음 팀의 대기열에 배치되었다. 각 개인이 프로젝트의 작은 부분에 대해서만 작업을 수행했기 때문에 이러한 접근 방식은 오너십 부족으로 이어졌다. 그들의 목표는 고객에게 올바른 기능을 제공하는 것이 아니라 다음 그룹에 작업을 잘 전달하는 것으로 바뀌었는데, 이는 명백한 우선순위의 불일치였다.

코드가 마침내 프로덕션으로 배치될 쯤이면, 그 코드가 정말 많은 대기열과 개발자들을 거쳤기 때문에, 만약 코드가 동작하지 않는다면 문제의 원인을 추적하기가 어려웠다. DevOps는 이러한 접근 방식을 완전히 뒤집는다.

문제 해결 방식

한 팀이 애플리케이션의 전체 라이프사이클을 소유하게 되면, 코드가 프로덕션에서 어떻게 동작하는지에 대해서도 팀에 책임이 있기 때문에 핸드오프가 최소화되고, 프로덕션에 배포할 때 위험이 감소하고, 코드 품질이 향상되며, 더 높은 자율성과 오너십으로 인해 직원 만족도도 증가한다.