DevOps란?

DevOps의 탄생 배경

DevOps가 탄생하기 전 애자일 개발에 의한 계속적인 개발로의 변화와, 계속적인 개발로 인해 나타난 운용 과제가 있었다. 이를 어떻게 해결할 것인가 개발자들이 고민한 결과 DevOps가 탄생하게 되었다.

DevOps의 목적

💡 신속하게 비즈니스 요구에 부응한다는 것

개발과 운용이 긴밀하게 연계하고 상호 간의 관점을 가지고 서비스를 개선하기 위해서는 서로의 전문성을 인정하고 어떻게 서로를 더 이해할 수 있을까 생각하는 것이 중점이 된다.

이러한 개발과 운용의 연계를 뒷받침하는 도구의 종류로써, 인프라의 자동화나 버전 관리의 공유 등이 있다.

DevOps는 조직, 팀의 어떤 과제에 대응하나

속인성 배제

속인성 있는 작업: 어떤 특정한 사람에게 크게 의존하는 작업.

💡 그 사람만 아는 것, 그 사람이 없으면 곤란한 것, 즉 속인성 있는 작업은 DevOps의 개발과 운용 간 긴밀한 연계에 저해 요인이 되기 때문에 배제하지 않으면 안된다.

💡 운용의 관점에서, 속인성이 있는 것은 치명적이다.

👉 구성 관리 도구로 구축 절차를 가시화함으로써 이런 문제를 해결할 수 있다.

코드이므로 프로세스 상의 조건 분기도 모두 표현할 수 있으며, 지금까지 사람이 판단하여 작업하던 프로세스는 어떤 사람이라도 반복적으로 실행할 수 있게 되었다.

팀 간의 오버헤드 삭감

💡 개발팀과 운용팀의 긴밀한 연계에서는 이러한 오버헤드를 제거하고 함께 요건을 받아 의논하고 크로스 체크하며, 서로의 작업을 알게 된 상태에서 서비스 개선을 진행시키는 관계를 목표로한다.

👉 버전 관리 도구나 인프라 구성 관리 도구를 이용하는 경우, 인프라를 코드화함으로써 개발팀과 운용팀에서 보게 되는 구성 정보가 일원화되고 공유되며, 이로 인해 전문성이 배제됨으로써 인력을 유연하게 활용할 수 있게 된다.

채팅 도구나 공통의 이슈 트래킹 시스템 등의 도입으로 개발 부문과 운용 부문의 활동 내역, 구성 관리 정보, 시스템 상황 등 모든 정보가 일원화되어 팀 간 정보 전달 오버헤드가 줄어들어 더욱 신속하게 개선 정책을 내놓을 수 있는 체제를 구축할 수 있게 된다.

품질 향상

웹 서비스나 스마트 폰 어플리케이션 개발, 게임 개발 등 다양한 개발에서 DevOps의 체계를 갖추면, 운용팀과 개발팀이 지식을 교환하고 지적, 설계하며 서로의 담당 업무를 깊게 이해하게 되어 성과물의 품질을 보다 향상시킬 수 있다.