DevOps는 더 빠르고 더 나은 애플리케이션을 개발하고 신규 또는 개정된 소프트웨어 기능이나 제품을 고객에게 더 빠르게 릴리즈하도록 지원하는 진보적 철학 및 프레임워크입니다.
DevOps 사례는 애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성, 투명성을 지원합니다.
'Dev'와 'Ops' 간의 긴밀한 관계는 초기 소프트웨어 계획에서 코딩, 빌드, 테스트 및 릴리즈 단계와 배포, 운영, 지속적인 모니터링에 이르기까지 DevOps 라이프사이클의 모든 단계에 걸쳐 있습니다. 이러한 관계는 추가적으로 개선, 개발, 테스트, 배포할 수 있는 지속적인 고객 피드백 루프를 촉진합니다. 이러한 노력을 통해 필요한 기능을 변경 또는 추가하여 더욱 신속하고 지속적으로 릴리즈할 수 있게 되었습니다.
어떤 사람들은 DevOps 목표를 문화, 자동화, 측정 및 공유(CAMS)라는 4가지 범주로 그룹화하며, 이러한 영역에 DevOps 툴을 활용할 수 있습니다. 이러한 툴을 사용하면 개발 및 운영 워크플로를 더욱 간소화하고 보다 효율적으로 협업할 수 있으며 통합, 개발, 테스트, 배포 또는 모니터링 중에 시간이 많이 소요되는 작업, 수동 작업 또는 정적 작업을 자동화할 수 있습니다.
개발 팀과 IT 운영 팀 간의 커뮤니케이션 및 협업 중에 발생하는 장벽을 허물기 위한 노력과 더불어 DevOps가 핵심 가치로 추구하는 것은 고객 만족과 신속한 가치 제공입니다. 또한 DevOps는 비즈니스 혁신을 촉진하고 지속적으로 프로세스를 개선하도록 설계되었습니다.
DevOps 방식은 조직의 최종 고객에게 비즈니스 가치를 더 빠르고, 더 훌륭하고, 더 안전하게 제공하도록 지원합니다. 이 가치는 보다 빈번한 제품 릴리즈, 기능 또는 업데이트의 형태일 수 있습니다. 여기에는 적절한 수준의 품질과 보안성을 갖춘 제품 릴리즈 또는 새로운 기능을 고객이 얼마나 빠르게 만나볼 수 있는지가 포함될 수 있습니다. 또는 문제나 버그를 신속하게 파악하여 해결한 후에 다시 릴리즈하는 속도에 중점을 둘 수도 있습니다.
기본 인프라는 소프트웨어를 처음 개발하여 테스트한 후 운영 환경에 릴리즈하는 과정에서 소프트웨어의 원활한 성능, 가용성, 안정성을 제공함으로써 DevOps를 뒷받침합니다.
조직에서 개발 및 제품 릴리즈 속도를 높이고 개선하는 데 사용할 수 있는 몇 가지 일반적인 DevOps 방법이 있습니다. 이러한 방법은 소프트웨어 개발 방법론 및 사례의 형식을 취합니다. 그중 가장 널리 사용되는 것은 스크럼, 칸반, 애자일입니다.
DevOps 사례를 따르는 사람들은 DevOps '툴체인'의 일부로 DevOps 친화적인 특정 툴을 사용하는 경우가 많습니다. 이러한 툴은 소프트웨어 제공 워크플로(또는 '파이프라인')의 다양한 단계를 더욱 간소화하고 단축하며 자동화하는 것을 목표로 합니다. 또한 이러한 툴 중 다수는 개발 팀 과 운영 팀 간의 자동화, 협업 및 통합이라는 핵심 DevOps 원칙을 장려합니다. 다양한 DevOps 라이프사이클 단계에서 사용되는 툴의 예는 다음과 같습니다.
DevOps 사례는 지속적인 개선 및 자동화의 개념을 반영합니다. 많은 사례가 하나 이상의 개발 주기 단계에 중점을 둡니다. 이러한 사례는 다음과 같습니다.
DevOps 지지자들은 여러 비즈니스 및 기술적 이점이 존재하며, 이러한 이점을 통해 고객 만족도를 높일 수 있다고 설명합니다. DevOps의 몇 가지 이점은 다음과 같습니다.
소프트웨어 개발 및 배포를 간소화하는 여러 DevOps 방법은 애자일 소프트웨어 개발 및 린 프로그래밍에 초기 기반을 두고 있습니다. 그러나 DevOps는 본래 개발자와 운영 팀 간의 활동을 조화롭게 만들기 위한 여러 활동에 그 뿌리를 두고 있습니다.
2000년대 초반, Google 및 Flickr와 같은 인기 웹 사이트는 엄청난 성공에 대비하여 가용성을 지속적으로 유지해야 할 필요가 있었습니다. 이러한 요구로 인해 운영 담당자인 SRE(Software Reliability Engineer)가 필요하게 되었고, SRE는 코드가 프로덕션으로 릴리즈된 후에도 사이트가 계속 실행되도록 보장하기 위해 개발자들과의 긴밀하게 협력했습니다.
2009년 Flickr의 엔지니어인 John Allspaw와 Paul Hammond는 컨퍼런스에서 DevOps와 유사한 방법론에 대해 발표했습니다. 이 프레젠테이션 제목은 '10+ Deploys per Day: Dev and Ops Cooperation at Flickr'(하루에 10개 이상 배포: Flickr에서의 개발 및 운영 협력)였습니다. 같은 해에 Patrick Debois는 벨기에에서 첫 번째 'DevOps Day'를 주최했습니다. 또한 #DevOps 해시태그도 더해지며 전 세계적으로 더 많은 DevOps Day가 생기면서 추진력을 얻었습니다.
이후 몇 년간 DevOps 목표가 한 단계 더 발전시키기 위해 업계 및 오픈 소스 툴과 프레임워크가 개발되고 제안되었습니다.
NetApp은 DevOps를 통해 보다 나은 비즈니스 성과를 이루도록 지원합니다. 운영 팀은 최소한의 엔지니어링으로 자동화된 인프라를 제공하며, 개발자는 안정적이고 예측 가능한 환경에서 마찰 없이 제품을 만들 수 있습니다. NetApp® 기술을 사용하면 온프레미스와 클라우드 환경 모두에서 개발자 생산성을 극대화하는 데 필요한 서비스와 기능을 자신 있게 제공할 수 있습니다.
NetApp은 개발자, 테스트, QA 및 운영 팀이 DevOps 파이프라인에 있는 익숙한 툴에서 인프라 리소스(예: 영구 스토리지 볼륨)를 코드로 손쉽게 사용할 수 있는 솔루션을 제공합니다. 예를 들어 NetApp 스토리지 API 및 IAC를 Puppet, Ansible, Docker, Kubernetes 및 OpenShift와 같은 툴과 통합할 수 있습니다.
하지만 NetApp은 개발자가 스토리지를 손쉽게 코드로 사용하는 기능만 제공하는 것은 아닙니다. NetApp 기술을 통해 운영 팀은 개발 및 테스트 담당자에게 리소스를 안정적으로 프로비저닝하여 제공할 수도 있습니다. 그러면 개발자 및 테스터가 스냅샷, 클론 등과 같이 시간을 절약할 수 있는 스토리지 기능을 자체 프로비저닝하여 코딩 시간과 테스트 주기를 단축할 수 있습니다. 이 기능을 활용하면 실시간 운영 데이터 또는 코드 세트의 사본을 단 몇 초 또는 몇 분 만에 코드로 프로비저닝하여 개발 및 QA 워크플로 속도를 높일 수 있습니다. NetApp이 DevOps에 적합한 이유에 대해 자세히 알아보십시오.
커뮤니티에 대한 NetApp의 노력은 thePub으로 확대됩니다. 이 개발자 커뮤니티에서는 협업을 장려하고, 팁과 요령을 공유하며, 최신 DevOps 사례 및 프로토콜에 대한 아이디어를 논의합니다.
DevOps 문화는 독립적으로 작업할 수 있으면서 소프트웨어 제품이 제공하는 사용자 환경을 공동으로 책임지는 소규모 융합 팀에 초점을 두고 있습니다.