DevOps: 디지털 혁신을 가속화하는 원동력
게시 됨: 2018-12-11"사실상 모든 사람이 지속적인 통합을 수행합니다. 지속적인 배포는 일종의 성배와 같습니다." - GoPro DevOps 엔지니어링 책임자인 Theo Kim
소프트웨어 시장의 경쟁으로 인해 조직은 최고의 리소스를 할당하여 고품질 소프트웨어를 빠른 속도로 개발 및 제공해야 합니다. 이러한 민첩성 수준의 핵심은 개발과 IT 운영 간에 고도로 협력적이고 의사 소통적인 관계를 구축하는 것입니다.
모던 시프트
"DevOps"라는 용어는 소프트웨어 개발자와 IT 운영 전문가가 함께 작업하여 애플리케이션을 빠르고 효율적으로 만들 수 있도록 하는 것을 목표로 2008년에 처음 등장했습니다. 10년 후 DevOps는 Amazon, Netflix 및 Fidelity Worldwide Investments와 같은 거대 기업을 비롯한 많은 조직의 성공에 필수적인 요소가 되었습니다.
표면적으로 DevOps는 획기적인 기술로 보이지 않습니다. 팀이 협력하여 더 나은 결과를 더 빠르게 제공할 수 있도록 하는 것이 분명한 목표처럼 보입니다.

애자일 개발 프로세스는 개발 팀과 비즈니스 이해 관계자 간의 의사 소통을 증가시켜 개발 시간을 단축합니다. 그러나 코드의 마지막 줄이 작성되고 마지막 테스트 사례가 통과되면 소프트웨어 프로젝트가 완료되지 않습니다. 애플리케이션은 릴리스용으로 패키징하고, 프로덕션에 배포하고, 가능한 문제를 모니터링하고, 새로운 기능과 필요한 버그 수정으로 개선해야 합니다.
이러한 각 사후 개발 작업에는 시간이 걸리므로 사용자에게 새로운 기능과 비즈니스 기능을 제공하는 것이 지연됩니다. DevOps는 개발자와 운영 팀 간의 커뮤니케이션 및 협업에 민첩한 초점을 제공하여 개발 후 프로세스에 동일한 응답성을 제공합니다.
오늘날 DevOps는 소프트웨어 개발을 위한 가장 효율적인 방법으로 간주됩니다. 소프트웨어 조직은 DevOps를 사용하여 개발 복잡성을 줄이고 문제를 더 빠르게 감지 및 해결하며 고품질의 혁신적인 소프트웨어를 지속적으로 제공할 수 있습니다. CI(지속적 통합), CDE(지속적 배포) 및 CD(지속적 배포) 는 조직이 품질 저하 없이 속도를 높이는 데 도움이 되는 몇 가지 사례입니다.
지속적인 통합
CI(지속적 통합)는 개별 개발자의 작업 결과물을 조기에 자주 중앙 저장소에 통합하는 것을 목표로 하는 소프트웨어 개발 업계에서 널리 확립된 개발 방식입니다. 팀 구성원은 개발 작업을 자주 통합하고 병합합니다. CI는 통합 버그를 조기에 감지하여 팀 내에서 더 나은 협업을 가능하게 하여 더 나은 품질의 제품으로 이어집니다.
CI는 통합 프로세스를 단순하고 쉽게 반복할 수 있도록 하며 조직이 더 짧고 빈번한 릴리스 주기를 즐기고 소프트웨어 품질을 개선하며 전반적인 생산성을 높일 수 있도록 합니다.

그러나 고려해야 할 절충점이 있습니다. CI 프로세스는 추가적인 품질 보증을 제공하지 않습니다. 많은 조직에서는 이러한 통합에 비용이 많이 들기 때문에 적시에 타협을 의미하더라도 새 코드로 인해 새로운 버그가 발생하지 않도록 수동 절차를 선호합니다. 통합 작업 중 마찰을 줄이기 위해 CI는 테스트 스위트와 자동화된 테스트 실행에 의존합니다. 그러나 자동화된 테스팅이 지속적인 테스팅과 상당히 다르다는 것을 깨닫는 것이 중요합니다.

지속적 전달
CDE(지속적 제공)는 CI가 중단된 부분을 이어받아 지속적 통합의 자연스러운 확장입니다. 지속적 전달은 자동화된 테스트 및 품질 검사를 성공적으로 통과한 후 애플리케이션이 항상 프로덕션 준비 상태에 있도록 하는 것을 목표로 합니다. CDE는 예를 들어 CI 및 배포 자동화를 위한 일련의 관행을 사용하여 소프트웨어에 버그가 없도록 보장하여 소프트웨어를 프로덕션과 유사한 환경에 자동으로 제공합니다.
Continuous Delivery는 테스트 및 배포 프로세스를 자동화하기 위해 팀에서 사용하는 배포 파이프라인에 따라 다릅니다. 파이프라인 자체는 빌드에 대해 점진적인 테스트 스위트 세트를 실행하는 자동화된 시스템입니다. 파이프라인의 모든 세그먼트에서 빌드가 중요한 테스트에 실패하여 팀에 경고할 수 있습니다. 그렇지 않은 경우 다음 테스트 스위트로 계속 진행되며 연속적인 테스트 통과는 파이프라인의 다음 세그먼트로 자동 승격됩니다. 파이프라인의 마지막 세그먼트는 프로덕션과 동등한 환경에 빌드를 배포합니다.

최신 CI/CDE 파이프라인의 가장 좋은 예 중 하나는 AWS에서 사용할 수 있습니다. Amazon은 인상적인 CI/CDE 파이프라인 환경을 제공하며 많은 개발 리소스 중에서 선택하고 쉽게 구성하고 쉽게 모니터링할 수 있는 파이프라인에서 이들을 함께 연결할 수 있는 단계별 절차를 제공합니다.
지속적인 배포
많은 사람들이 CD(Continuous Deployment)를 Continuous Delivery와 동일한 것으로 혼동하지만 이 프로세스는 한 단계 더 나아가 애플리케이션을 프로덕션에 자동으로 지속적으로 배포함으로써 차별화됩니다. 모든 변경 사항을 프로덕션 환경에 자동으로 지속적으로 배포하는 것을 목표로 하는 연속 배포 방식은 지속적인 제공 방식을 의미하지만 그 반대는 사실이 아닙니다.
Continuous Delivery의 최종 배포는 수동 단계이지만 Continuous Deployment에는 수동 단계가 없다는 점에 유의해야 합니다. 개발자가 변경 사항을 커밋하는 즉시 배포 파이프라인을 통해 변경 사항이 프로덕션에 배포됩니다. 또한 지속적인 배포 방식은 모든 유형의 조직에 적용할 수 있는 반면 지속적인 배포 방식은 특정 조직 유형에만 적합할 수 있습니다.

CD 방법론을 사용하는 조직은 새 배포에 대한 빠른 사용자 피드백을 통해 이점을 얻을 수 있습니다. 기능은 사용자에게 신속하게 전달되며, 명백한 오류나 결함은 즉시 처리될 수 있습니다.
DevOps 채택이 엄청나게 증가하면서 CI/CD 파이프라인 구현을 지원하는 자동화 도구도 크게 증가했습니다. 이러한 도구는 Github와 같은 코드 리포지토리 시스템 및 Jira와 같은 버그 추적 시스템을 비롯한 다양한 개발자 도구와 통합됩니다. 또한 SaaS가 대중적인 제공 모델이 되면서 이러한 도구의 대부분이 클라우드에서 실행되고 있습니다. 가장 인기 있는 도구로는 GitLab CI, TeamCity, Bamboo, GoCD, Jenkins 및 Circle CI가 있습니다.

