DevOps란?

Home

Understanding DevOps

목차

DevOps란?

DevOpsDevelopmentOperations의 합성어이며, 기존의 개발 업무와 관리 업무로 나누어진 두 역할 사이의 커뮤니케이션, 협업, 통합을 강조하는 개념입니다.


Why DevOps?

빠른 속도와 빠른 시장

최근 IT 트랜드의 핵심 요소는 속도입니다. 페이스북과 구글에서도 중요 철학 중 하나로 빠른 속도를 내세우고 있으며, 일정한 주기를 가지고 끊임없이 결과물을 만들어 내어 그때그때 필요한 요소를 진행하는 방법론이 대두되고 있습니다.

결국 빠르게 변하는 비즈니스 환경과 사용자의 요구 사항에 기민하게 대처하고, 비즈니스가 계속 살아남기 위해 필요한 것입니다.

Developer와 Operator의 차이

IT 시스템에서 필요한 큰 핵심 역할은 서비스를 만드는 개발자와 이 서비스를 운영하고 개선하는 시스템 관리자입니다. 서로 간의 역할이 분명하게 나누어져 있지만, 같은 서비스를 만들고 있기에 서로 간의 협업이 매우 중요합니다. 하지만 시스템 간 연결은 복잡해지고 기술과 요구 사항이 지속적으로 변화하고 있는 시점에서 이러한 시스템 운영에 대한 서로 간의 소통이 매우 어렵게 되고 있습니다. 서로 간의 업무와 정보가 손쉽게 공유되지 않아 처리 속도도 매우 느리며, 심하게는 서로 화합하지 못하고 서로를 탓하기만 하는 경우도 빈번히 발생합니다.

그렇기 때문에 두 역할 간의 커뮤니케이션, 협업, 통합을 강조하여 서로 간의 차이를 줄여주는 DevOps가 필요한 것입니다.

기술의 진화

DevOps를 가능하게 하는 요소 중, 자동화는 서로 간의 업무와 정보를 쉽게 공유할 수 있는 기반이 됩니다. 개발자가 각각 개발한 소스 코드를 모아서 한꺼번에 빌드 하는 통합 빌드의 과정을 특정 시점이 아니라 주기적으로 수행합니다. 그로 인해 통합에서 발생하는 오류를 사전에 해결하고 이 모든 과정에 소요되는 시간을 줄이기 위한 것이 나오면서 가능하게 되었습니다. 더 이상 빌드는 컴파일만을 의미하지 않습니다. 소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발을 하게 되었고, 그 과정에 있어서 분업과 협업은 필수적이 되었습니다.

이러한 기술의 진화로 배포를 위한 빌드 단계, 테스팅 단계 등에서 시간을 절약하는 효과를 발휘하여 빠른 시장 변화 속도에 발맞춰 대응할 수 있는 것이 가능하게 되었습니다.


DevOps의 주요 요소

DevOps는 CALMS라고 해서, 크게 5개지 핵심 요소로 나누어 볼 수 있습니다. 일반적으로 문화(Culture), 자동화(Automation), 간소화(Lean), 측정(Measurement), 공유(Share)를 주요한 원칙으로 제시하고 있습니다.

문화(Culture)

DevOps 문화는 한 마디로 협업입니다. 이 세상의 모든 도구와 자동화 시스템은 Dev와 Ops의 협력하고자 하는 마음이 없다면 어떤 것도 해결할 수 없습니다. 그렇기에 DevOps 공식 사이트에서는 이러한 사고방식이 비기술적인 비즈니스 팀을 선내에 배치하는 데 특히 중요하다고 전하기도 했습니다. 즉 DevOps의 문화는 도구의 문제가 아닌, 사람 간의 문제를 해결하기 때문입니다.

자동화(Automation)

자동화는 위에서 말했듯이 개발, 테스트 및 지속적 배포의 핵심요소입니다. 개발 사이클 상에서 높은 수준의 자동화를 도입한다면 막대한 이익을 얻을 수 있습니다. 자동화를 처음 접하는 팀은 보통 CD(Continuous Delivery)로 시작합니다. CD란 지속적 배포를 뜻하며 자동화 테스트를 통해 각 코드 변경 사항을 실행한 다음, 빌드를 패키징하고, 자동화 배포를 사용하여 생산을 추진하는 과정입니다.

시스템은 언제나 변화하지만 이러한 자동화 과정을 통해 더 안정적일 뿐만 아니라 위험도 줄일 수가 있습니다. 게다가 Dev와 Ops 간의 서로 업데이트한 내용을 자동화하여 봄으로써 즉각적으로 서로 간의 소통이 가능합니다.

간소화(Lean)

간소화란 낭비를 제거함으로 어떻게 고객에게 가치를 빠르게 제공할 수 있을까에 대한 생각이자 사고방식입니다. DevOps 상에서는 이러한 낮은 가치를 지닌 것을 끊임없이 찾고 지속적으로 개선하는 것입니다.

즉 Lean의 핵심은 끊임없이 문제를 해결하고 개선하는 것입니다.

측정(Measurement)

DevOps는 여러 가지를 측정하고, 측정 결과를 가시화하여 보여줍니다. 실질적인 데이터를 보여줌으로써 지속적인 개선을 위한 노력이, 실제 개선으로 이어지고 있는지 확인할 수 있습니다.

즉 성공적인 측정을 통해 성공적인 피드백을 하고, 이렇게 얻은 정보를 토대로 로드맵을 작성하고, 다음 계획을 세부적으로 수립할 때 사용합니다. 이 모든 것은 다른 팀, 다른 부서와의 공유를 통해 더욱 강력한 힘을 발휘할 수 있습니다.

공유(Share)

성공 여부와 상관없이 DevOps는 다른 사람들이 배울 수 있도록 서로의 경험을 공유합니다. Dev와 Ops 간의 마찰은 주로 공유의 부족으로 인해 발생하게 됩니다. 하지만 DevOps를 통하여 서로 간의 경계를 허물어 아이디어 공동 작업, 문제 및 성공 사례의 공유를 통해 피드백 채널을 열어 지속적인 개선을 할 수 있습니다.


Reference