DevOps란?
DevOps는 개발(Dev)과 운영(Ops)을 결합하여 애플리케이션 계획, 개발, 제공 및 운영 과정에서 사람, 프로세스 및 기술을 통합합니다. DevOps를 사용하면 개발, IT 운영, 품질 엔지니어링 및 보안과 같은 이전의 사일로 역할을 조정하고 협업할 수 있습니다.
Teams는 DevOps 문화, 사례 및 도구를 채택하여 빌드하는 애플리케이션에 대한 신뢰를 높이고 고객의 요구에 더 잘 대응하며 비즈니스 목표를 더 빠르게 달성할 수 있습니다. DevOps는 팀이 더 나은 신뢰할 수 있는 제품을 생산하여 고객에게 지속적으로 가치를 제공할 수 있도록 지원합니다.
DevOps는 계획, 개발, 전달 및 운영 단계 전반에 걸쳐 애플리케이션 수명 주기에 영향을 줍니다. 각 단계는 다른 단계에 의존하며 단계는 역할별이 아닙니다. DevOps 문화권에는 각 단계의 모든 역할이 어느 정도 포함됩니다.
다음 다이어그램에서는 DevOps 애플리케이션 라이프스타일의 단계를 보여 줍니다.
팀이 DevOps 문화, 사례 및 도구를 채택하면 놀라운 성과를 거둘 수 있습니다.
출시 시간 가속화
향상된 효율성, 향상된 팀 공동 작업, 자동화 도구 및 지속적인 배포를 통해 팀은 제품 시작부터 출시까지의 시간을 빠르게 줄일 수 있습니다.
시장 및 경쟁에 적응
DevOps 문화는 팀에 고객 우선 포커스를 요구합니다. 민첩성, 팀 공동 작업 및 고객 경험에 집중함으로써 팀은 지속적으로 고객에게 가치를 제공하고 시장에서 경쟁력을 높일 수 있습니다.
시스템 안정성 및 안정성 유지 관리
팀은 지속적인 개선 사례를 채택하여 배포하는 제품 및 서비스의 안정성과 안정성을 높일 수 있습니다. 이러한 사례는 오류 및 위험을 줄이는 데 도움이 됩니다.
평균 복구 시간 개선
평균 복구 시간 메트릭은 오류 또는 위반으로부터 복구하는 데 걸리는 시간을 나타냅니다. 소프트웨어 오류, 보안 위반 및 지속적인 개선 계획을 관리하려면 팀은 이 메트릭을 측정하고 개선하기 위해 노력해야 합니다.
DevOps를 완전히 구현하려면 DevOps 문화권을 채택해야 합니다. DevOps 문화를 육성하려면 사람들이 작업하고 공동 작업하는 방식에 깊은 변화가 필요합니다. 조직은 DevOps 문화에 전념할 때 고성능 팀이 발전할 수 있는 환경을 만듭니다. DevOps 사례를 채택하면 기술을 통해 프로세스를 자동화하고 최적화하지만 조직 및 해당 사용자 내에서 DevOps 문화권으로 전환하지 않으면 DevOps의 모든 이점을 얻을 수 없습니다.
다음 이미지는 Microsoft 라이브 사이트 문화권의 주요 측면을 캡처합니다.
다음은 DevOps 문화권의 주요 구성 요소입니다.
- 협업, 가시성 및 맞춤: 건강한 DevOps 문화의 특징은 팀 간의 협업입니다. 협업은 가시성으로 시작합니다. 개발, IT 및 기타 팀은 DevOps 프로세스, 우선 순위 및 문제를 서로 공유해야 합니다. 함께 작업을 계획함으로써 비즈니스와 관련된 목표와 성공 측정값에 맞게 조정하는 것이 좋습니다.
- 범위 및 책임의 변화: 팀이 조정됨에 따라 소유권을 가지며 역할의 중심이 되는 단계뿐만 아니라 다른 수명 주기 단계에 참여하게 됩니다. 예를 들어, 개발자는 개발 단계에서 확립한 혁신 및 품질뿐 아니라 변경한 내용이 운영 단계에 미치는 성능과 안정성도 책임을 지게 됩니다. IT 운영자들은 계획 및 개발 단계에 거버넌스, 보안, 규정 준수를 적용합니다.
- 더 짧은 릴리스 주기: DevOps 팀은 짧은 주기로 소프트웨어를 릴리스하여 민첩하게 기본. 릴리스 주기를 짧게 가져가면 개선 사항이 작은 증분 단위로 누적되기 때문에 계획과 위험 관리가 쉬워지게 되며, 이로 인해 시스템 안정성에 미치는 영향도 줄어듭니다. 릴리스 주기가 짧아지면 조직에서 변화하는 고객 요구 사항과 경쟁사의 압박에 유연하게 대응할 수 있습니다.
- 지속적인 학습: 고성능 DevOps 팀은 성장형 사고방식을 설정합니다. 빠르게 실패하고 학습을 프로세스에 통합합니다. 지속적으로 개선하고, 고객 만족도를 높이고, 혁신과 시장 적응성을 가속화하기 위해 노력하고 있습니다.
애플리케이션 수명 주기 전반에 걸쳐 DevOps 사례(다음 섹션에 설명됨)에 따라 DevOps를 구현합니다. 이 중 일부 방식은 특정 단계를 가속화 및 자동화하고 개선하는 데 도움이 되고 다른 방식은 여러 단계에 걸쳐 적용되어 팀들이 생산성을 높이는 원활한 프로세스를 만들도록 지원합니다.
CI(연속 통합)는 개발 팀에서 코드를 자동화, 병합 및 테스트하는 데 사용하는 방법입니다. CI는 개발 주기 초기에 버그를 포착하는 데 도움이 되며, 이로 인해 수정 비용이 적게 듭니다. 자동화된 테스트는 품질을 보장하기 위해 CI 프로세스의 일부로 실행됩니다. CI 시스템은 아티팩트 생성 및 릴리스 프로세스에 피드하여 자주 배포합니다.
CD(지속적인 업데이트)는 하나 이상의 테스트 및 프로덕션 환경에 코드를 빌드, 테스트 및 배포하는 프로세스입니다. 여러 환경에서 배포 및 테스트하면 품질이 향상됩니다. CD 시스템은 인프라 및 앱을 포함하여 배포 가능한 아티팩트가 생성됩니다. 자동화된 릴리스 프로세스는 이러한 아티팩트를 사용하여 기존 시스템에 새 버전 및 픽스를 릴리스합니다. 경고를 모니터링하고 보내는 시스템은 전체 CD 프로세스에 대한 가시성을 높이기 위해 지속적으로 실행됩니다.
버전 제어란 코드를 버전으로 관리하는 것, 즉 수정 버전과 변경 이력을 추적하여 코드를 검토하기 쉽고 복구하기 쉽게 만드는 것을 의미합니다. 이 방법은 일반적으로 여러 개발자가 작성 코드에서 공동 작업할 수 있도록 하는 Git과 같은 버전 제어 시스템을 사용하여 구현됩니다. 버전 제어 시스템은 동일한 파일에서 이루어진 코드 변경 사항을 병합하고 충돌을 처리하고 변경 사항을 이전 상태로 롤백하기 위한 명확한 프로세스를 제공합니다.
개발 팀의 협력을 지원하고, 팀원 간에 코딩 작업을 배분하고, 필요할 때 간편하게 복구할 수 있도록 모든 코드를 저장하는 버전 제어를 사용하는 것은 DevOps 방식의 구현을 위한 기본적인 요건입니다. 버전 제어는 연속 통합, IaC와 같은 다른 개발 방식에도 필요한 요소입니다.
Agile은 팀 협업, 고객 및 사용자 피드백, 짧은 릴리스 주기를 통한 변화에 대한 높은 적응성을 강조하는 소프트웨어 개발 접근 방식입니다. Agile을 구현하는 팀들은 고객에게 지속적인 변경 사항 및 개선 사항을 제공하고, 고객의 피드백을 수집하며, 고객의 요구 사항과 필요 사항을 바탕으로 학습하고 조정합니다. Agile은 순차적인 단계로 정의되는 긴 릴리스 주기를 사용하는 폭포수와 같은 기존의 프레임워크와는 현저히 다른 개발 방식입니다. 널리 사용되는 Agile 프레임워크에는 칸반과 스크럼이 있습니다.
IaC(infrastructure as code)는 팀들이 시스템 리소스와 토폴로지를 코딩하는 것처럼 관리할 수 있도록 이를 설명적으로 정의합니다. 정의는 버전 제어 시스템에 저장하여 버전을 관리할 수 있으며, 여기서 코드로 작업하는 것처럼 검토하고 되돌릴 수 있습니다.
IaC를 도입하면 시스템 리소스를 안정적이고 반복 가능한 관리형 방식으로 배포할 수 있습니다. IaC는 배포를 자동화하고 복잡한 대규모 환경에서 사용자 오류가 발생할 위험을 줄이는 데도 도움이 됩니다. 환경 배포를 위한 반복적이고 안정적인 솔루션인 IaC를 사용하면 프로덕션과 동일한 개발 및 테스트 환경을 유지할 수 있습니다. 환경을 다른 데이터 센터와 클라우드 플랫폼으로 복제하는 것도 훨씬 간편하고 효율적으로 됩니다.
구성 관리는 서버, 가상 머신 및 데이터베이스를 포함한 시스템의 리소스 상태를 관리하는 것을 의미합니다. 구성 관리 도구를 사용하면 변경 사항을 체계적인 방식으로 롤아웃하여 시스템 구성이 수정될 위험을 줄일 수 있습니다. 시스템 리소스의 구성이 시간이 흐름에 따라 기존에 정의된 바람직한 상태에서 벗어나는 것을 가리키는 구성 드리프트를 방지하고 시스템 상태를 추적하는 데도 구성 관리 도구가 유용하게 사용됩니다.
코드로서의 인프라와 함께 시스템 정의 및 구성을 쉽게 템플릿화하고 자동화할 수 있으므로 팀이 복잡한 환경을 대규모로 운영할 수 있습니다.
연속 모니터링은 전체 애플리케이션 스택의 성능 및 상태를 실시간으로 완전히 파악하는 것을 의미합니다. 이 표시 유형은 애플리케이션을 실행하는 기본 인프라부터 상위 수준 소프트웨어 구성 요소에 이르기까지 다양합니다. 운영자의 주의를 끄는 미리 정의된 조건에 대한 원격 분석 및 메타데이터 수집 및 경고 설정을 통해 가시성을 확보합니다. 원격 분석 데이터는 시스템의 여러 부분에서 수집된 이벤트 데이터와 로그로 이루어지는데, 이는 데이터를 분석하고 쿼리할 수 있는 곳에 저장됩니다.
뛰어난 성과를 내는 DevOps 팀들은 방대한 데이터로부터 인사이트를 창출할 수 있도록 유용하고 의미 있는 알림을 설정하고 깊이 있는 원격 분석 데이터를 수집하기 위해 노력합니다. 팀들은 이러한 인사이트를 바탕으로 문제에 실시간으로 대응하고 추후 개발 주기에서 애플리케이션을 개선할 방안을 도출할 수 있습니다.
계획 단계에서 DevOps 팀은 빌드하려는 애플리케이션 및 시스템의 기능과 기능을 아이디어, 정의 및 설명합니다. Teams는 단일 제품에서 여러 제품 포트폴리오에 이르기까지 낮고 높은 수준의 세분성으로 작업 진행 상황을 추적합니다. Teams는 다음 DevOps 사례를 사용하여 민첩성 및 가시성을 계획합니다.
- 백로그를 만듭니다.
- 버그를 추적합니다.
- 스크럼을 사용하여 Agile 소프트웨어 개발을 관리합니다.
- Kanban 보드를 사용합니다.
- 대시보드를 사용하여 진행률을 시각화합니다.
Microsoft가 회사의 소프트웨어 팀에서 DevOps 계획을 지원하기 위해 채택한 몇 가지 교훈과 사례에 대한 개요는 Microsoft가 DevOps를 사용하여 계획하는 방법을 참조 하세요.
개발 단계에는 소프트웨어 코드 개발의 모든 측면이 포함됩니다. 이 단계에서 DevOps 팀은 다음 작업을 수행합니다.
- 개발 환경을 선택합니다.
- 코드를 작성, 테스트, 검토 및 통합합니다.
- 코드를 아티팩트로 빌드하여 다양한 환경에 배포합니다.
- 버전 제어(일반적으로 Git)를 사용하여 코드에서 공동 작업하고 병렬로 작업합니다.
품질, 안정성 및 생산성을 희생하지 않고 빠르게 혁신하려면 DevOps 팀에서 다음을 수행합니다.
DevOps로의 전환을 지원하기 위해 Microsoft가 채택한 개발 사례에 대한 개요는 Microsoft가 DevOps를 사용하여 개발하는 방법을 참조 하세요.
배달은 CD(지속적인 업데이트)를 통해 애플리케이션을 프로덕션 환경에 일관되고 안정적으로 배포하는 프로세스입니다.
배달 단계에서 DevOps 팀은 다음을 수행합니다.
- 명확한 수동 승인 단계를 사용하여 릴리스 관리 프로세스를 정의합니다.
- 고객에게 최종 릴리스될 때까지 단계 간에 애플리케이션을 이동하도록 자동화된 게이트를 설정합니다.
- 배달 프로세스를 자동화하여 확장 가능하고, 반복 가능하고, 제어되고 , 잘 테스트되도록 합니다.
배달에는 배달 환경의 기본 인프라 배포 및 구성도 포함됩니다. DevOps 팀은 IaC(Infrastructure as Code), 컨테이너 및 마이크로 서비스와 같은 기술을 사용하여 완전히 제어되는 인프라 환경을 제공합니다.
금고 배포 사례는 고객 환경에 영향을 미치기 전에 문제를 식별할 수 있습니다. 이러한 사례를 통해 DevOps 팀은 안심하고 안심하고 자주 제공할 수 있습니다.
효율적인 배달 시스템을 제공하기 위해 Microsoft가 발전한 핵심 DevOps 원칙 및 프로세스는 Microsoft가 DevOps를 사용하여 소프트웨어를 제공하는 방법에 대해 설명합니다.
작업 단계에는 하이브리드 또는 퍼블릭 클라우드(예: Azure)를 포함하여 프로덕션 환경에서 애플리케이션을 기본 파악, 모니터링 및 문제 해결이 포함됩니다. DevOps 팀은 시스템 안정성, 고가용성, 강력한 보안 및 가동 중지 시간 제로를 목표로 합니다.
자동화된 배달 및 안전한 배포 사례를 통해 팀은 문제가 발생할 때 신속하게 문제를 식별하고 완화할 수 있습니다. 경계를 유지하려면 다양한 원격 분석, 실행 가능한 경고 및 애플리케이션 및 기본 시스템에 대한 완전한 가시성이 필요합니다.
Microsoft가 복잡한 온라인 플랫폼을 운영하는 데 사용하는 사례는 Microsoft가 DevOps를 사용하여 신뢰할 수 있는 시스템을 운영하는 방법에 대해 설명합니다.