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