초보자를 위한 DevOps 소개
데브옵스(DevOps)는 많은 이들에게 다양한 의미로 통용되는 유행어가 되었습니다.
데브옵스가 정확히 무엇인지 파악하고 정의하기란 쉽지 않습니다. 하지만 데브옵스와 관련된 핵심 개념과 그 발전 과정을 이해한다면 보다 폭넓은 시각을 가질 수 있습니다.
데브옵스의 시작
데브옵스는 애자일 소프트웨어 개발의 대표적인 예시입니다. 데브옵스의 핵심 아이디어는 소프트웨어 개발 속도 증가에 발맞추고, 애자일 방법론을 통해 이를 달성하고자 하는 필요성에서 시작되었습니다. 지난 10년간 애자일 문화와 방법론이 크게 발전하면서, 소프트웨어 제공 수명 주기에 대한 더욱 통합적인 접근 방식이 요구되었습니다.
애자일 소프트웨어 개발이 생소하신가요?
애자일 개발은 여러 반복적이고 점진적인 소프트웨어 개발 방법론을 포괄하는 용어입니다. 대표적인 애자일 방법론으로는 스크럼(Scrum), 칸반(Kanban), 스케일드 애자일 프레임워크(Scaled Agile Framework®, SAFe®), 린 개발(Lean Development), 익스트림 프로그래밍(Extreme Programming, XP) 등이 있습니다.
이러한 모든 애자일 방법론은 핵심 가치와 비전은 공유하지만, 각각 고유한 접근 방식을 가지고 있습니다. 반복과 지속적인 피드백을 통해 확장 가능한 소프트웨어를 성공적으로 개선하고 제공하는 데 중점을 둡니다. 또한 지속적인 계획, 지속적인 테스트, 지속적인 통합 등 다양한 형태의 지속적인 활동을 포함합니다.
기존의 워터폴 방식과 달리, 애자일 방법론은 유연하고 적응력이 뛰어납니다. 협업을 강화하고 빠른 의사 결정을 장려하며, 팀 구성원들에게 권한을 부여하는 데 초점을 맞추고 있습니다.

데브옵스의 목표는 확장된 애자일 개발 방식을 적용하여 소프트웨어 변경 사항의 흐름을 개선하는 것입니다. 빌드, 검증, 배포 등 소프트웨어 제공의 모든 단계를 효율적으로 관리하여, 다기능 팀이 설계부터 생산까지 소프트웨어 제품에 대한 완전한 책임을 질 수 있도록 돕습니다.
데브옵스가 해결하는 문제점
배포 프로세스 – 분산 애플리케이션은 바이너리 및 구성 파일을 여러 서버에 배포해야 하는 경우가 많습니다. 서버 팜 규모가 커질수록 이 과정은 더욱 복잡해집니다. 무엇을, 어떻게, 어디에 배포해야 할지 결정하기 어려워지며, 이는 결국 배포 지연으로 이어집니다.
애플리케이션을 다음 단계로 이동시키는 데 시간이 오래 걸리면, 테스트나 TTL(Time to Live)과 같은 다른 요소들도 지연될 수밖에 없습니다.
데브옵스는 소프트웨어 개발자와 IT 운영팀 간의 협업을 통해 이러한 문제를 해결합니다. 함께 프로세스를 배포하고, 자동화를 통해 다음 단계로 나아가 지속적인 개발을 구현할 수 있습니다. 이는 개발 속도를 높이는 데에도 효과적입니다.
데브옵스의 목표
데브옵스는 계획 단계부터 배포 단계까지 모든 관계자 간의 협업을 개선하고, 배포 프로세스의 자동화를 통해 다음과 같은 목표를 달성합니다.
- 배포 빈도 향상
- 제품 출시 시간 단축
- 신제품 출시 실패율 감소
- 수정 사이의 리드 타임 단축
- 복구 시간 단축
일반적인 데브옵스 시나리오
새로운 소프트웨어 프로젝트를 시작하기 전에 모든 팀 구성원이 모여 회의를 진행합니다. 개발자, 테스터, 운영 및 지원 전문가로 구성된 팀은 배포 가능한 완전한 기능의 소프트웨어를 개발하기 위한 계획을 세웁니다.
개발이 완료되면, 새로운 코드는 매일 배포됩니다. 자동화된 테스트 프로세스를 통해 코드의 구현 준비 상태를 확인합니다. 자동화 테스트를 통과한 코드는 소수의 사용자에게 먼저 배포됩니다. 코드가 안정적인지 확인하기 위해 짧은 기간 동안 모니터링됩니다. 문제가 없다면, 최종적으로 모든 사용자에게 코드가 배포됩니다. 계획 및 개발 이후 단계의 대부분은 자동화되어 사람의 개입이 최소화됩니다.

데브옵스 성숙도의 단계
데브옵스 성숙도에는 여러 단계가 있습니다. 각 단계에 대한 핵심 개념을 살펴봅시다.

워터폴 개발
지속적인 통합이 도입되기 전에는, 개발팀이 방대한 양의 코드를 작성한 후 다른 팀의 코드와 병합하여 릴리스했습니다. 코드 버전이 너무 달라 많은 변경이 필요했고, 이러한 변경 사항을 적용하는 데 몇 달 이상이 걸리기도 했습니다. 이는 생산성이 매우 낮은 방식이었습니다.
지속적인 통합
새로 개발된 코드를 주요 릴리스 예정 코드와 빠르게 통합하는 방식입니다. 지속적인 통합은 코드 릴리스에 소요되는 시간을 크게 단축해줍니다.
데브옵스가 이 용어를 처음 사용한 것은 아닙니다. 지속적인 통합은 익스트림 프로그래밍 방법론에서 유래한 애자일 엔지니어링 방식입니다. 데브옵스는 지속적인 통합을 성공적으로 구현하기 위해서는 자동화가 필수적이라는 점을 인지하고 이 방식을 채택했습니다. 지속적인 통합은 데브옵스 성숙도를 향해 나아가는 첫 번째 단계로 여겨집니다.
데브옵스 관점에서 지속적인 통합은 코드 확인, 실행 가능한 코드로 컴파일, 필수 검증 테스트 실행 등의 단계를 포함합니다.
지속적인 전달
지속적인 통합에서 확장된 두 번째 데브옵스 단계입니다.
지속적인 전달에서는 추가 자동화 및 테스트를 통해 코드를 메인 코드 라인과 빠르게 병합할 수 있을 뿐만 아니라, 사람의 개입 없이도 코드 배포 준비를 거의 완료할 수 있도록 합니다. 코드베이스를 항상 배포 가능한 상태로 유지하는 것을 목표로 합니다.
지속적인 배포
지속적인 배포는 지속적인 전달에서 한 단계 더 발전한 형태입니다. 이 방식을 사용하면, 사람의 개입 없이도 모든 변경 사항을 프로덕션 환경에 배포할 수 있습니다.
지속적인 개발을 추구하는 팀은 테스트를 거치지 않은 코드를 절대 배포하지 않습니다. 새로 생성된 모든 코드는 프로덕션 단계에 진입하기 전에 자동화된 테스트를 거칩니다. 코드는 소수의 사용자에게 먼저 배포되고, 다음 단계로 진행하기 전에 품질과 사용량을 모니터링하는 자동화된 피드백 루프가 존재합니다.
넷플릭스, Etsy, 아마존, 핀터레스트, 플리커, IMVU, 구글과 같은 기업들이 지속적인 개발을 성공적으로 적용하고 있습니다.
데브옵스의 가치
데브옵스는 다양한 도구의 자동화를 통해 협업 문화를 조성하고, 효율성을 개선하는 데 중점을 둡니다. 소프트웨어 솔루션에 데브옵스를 성공적으로 적용하려면, 문화와 도구를 모두 활용해야 합니다.
데브옵스 문화
데브옵스는 협업을 강화하고, 혼돈을 줄이며, 책임을 공유하는 방식을 개선합니다. 자동화, 품질 향상, 피드백 평가를 중시하고 자동화를 극대화하는 데 기여합니다.
애자일 방법론은 소프트웨어 개발에 가장 적합한 전체론적 접근 방식입니다. 진행 상황을 측정할 때, 애자일 개발팀은 작동하는 소프트웨어 측면에서 이를 평가합니다. 데브옵스 문화의 애자일 방식을 통해 제품 소유자, 개발자, 테스터 및 UX 담당자는 같은 목표를 향해 긴밀하게 협력할 수 있습니다.
데브옵스 도구
구성 관리, 테스트 및 시스템 구축, 애플리케이션 개발, 버전 관리 및 모니터링을 위한 도구들이 포함됩니다. 지속적인 통합, 지속적인 전달 및 지속적인 배포를 구현할 때, 서로 다른 도구들이 필요하며, 동일한 도구를 동시에 사용하기도 합니다. 전달 체인이 진행될수록, 더 많은 도구가 필요해집니다.
주요 도구 및 사례를 살펴보겠습니다.
소스 코드 저장소 – 개발자들이 코드를 체크인하고 변경할 수 있는 공간입니다. 소스 코드 저장소는 체크인된 코드의 다양한 버전을 관리하여, 개발자들이 서로의 코드를 덮어쓰는 것을 방지합니다.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse 등은 널리 사용되는 코드 저장소 도구입니다.
빌드 서버: – 빌드 서버는 소스 코드 저장소의 코드를 실행 가능한 코드베이스로 컴파일하는 자동화 도구입니다. Jenkins, SonarQube 및 Artifactory는 자주 사용되는 빌드 서버 도구 중 일부입니다.
구성 관리 – Puppet, Chef, Ansible, SaltStack, Run Deck 등은 환경 전반에 걸쳐 일관성을 유지하기 위해 애플리케이션 및 인프라 구성을 관리하는 데 도움을 줍니다.
가상 인프라 – AWS, GCP 및 Azure는 거의 모든 인프라 서비스를 제공하는 3대 퍼블릭 클라우드 제공업체입니다. 코드를 통해 인프라를 프로비저닝하고 관리할 수 있는 API를 제공합니다.
결론
이 글을 통해 데브옵스에 대한 기본적인 이해를 얻으셨기를 바랍니다. 만약 데브옵스에 대한 관심이 생겼다면, 온라인 마스터 클래스를 통해 더 깊이있는 학습을 경험해 볼 수 있습니다.
페이알 고얄(Payal Goyal)의 글