환경
지속적인 업데이트 프로세스를 사용하여 프로덕션에 새 가치를 빠르고 안전하게 제공합니다. 작은 변경 내용을 자주 배달하여 문제의 위험을 줄일 수 있습니다.
여러 배달/배포 환경 채택을 포함하여 다른 요인은 "프로덕션에 대한 배포 고통"에 영향을 줍니다. 다중 환경 접근 방식을 사용하면 더 빠른 속도와 빈도로 코드를 빌드, 테스트 및 릴리스하여 배포를 최대한 간단하게 만들 수 있습니다. 수동 오버헤드 및 수동 릴리스의 위험을 제거하고 대신 다양한 환경을 대상으로 하는 다단계 프로세스를 사용하여 개발을 자동화할 수 있습니다.
일반적인 다중 환경 아키텍처에는 다음 네 가지 계층이 포함됩니다.
- 개발
- 테스트
- 준비
- 프로덕션
이 아키텍처에서 제품은 프로덕션(사용자가 직접 상호 작용하는 환경)을 통해 개발(소프트웨어에 대한 변경 내용을 개발하는 환경)에서 순서대로 전환됩니다. 엔드투엔드 비즈니스 흐름의 유효성을 검사하기 위해 UAT(사용자 승인 테스트) 환경을 도입할 수도 있습니다.
Environment | 설명 |
---|---|
개발 | 개발 환경(개발)에서는 소프트웨어에 대한 변경 내용이 개발됩니다. |
테스트 | 테스트 환경을 사용하면 사용자 테스터 또는 자동화된 테스트에서 새 코드와 업데이트된 코드를 사용할 수 있습니다. 개발자는 개발 환경에서 단위 테스트를 통해 새 코드 및 구성을 수락해야 해당 항목이 하나 이상의 테스트 환경에 진입할 수 있습니다. |
스테이징 | 준비는 프로덕션에 배포하기 직전에 최종 테스트를 수행하는 위치입니다. 각 준비 환경은 가능한 한 정확하게 실제 프로덕션 환경을 미러링해야 합니다. |
UAT | UAT(사용자 승인 테스트)를 사용하면 최종 사용자 또는 클라이언트는 소프트웨어 애플리케이션이 프로덕션 환경으로 이동하기 전에 소프트웨어 시스템을 확인/수락하는 테스트를 수행할 수 있습니다. |
생산 | 프로덕션 환경(프로덕션)(라이브라고도 함)은 사용자가 직접 상호 작용하는 환경입니다. |
디자인 고려 사항
Azure 랜딩 존 및 Azure 워크로드 개발 모두에 다음 고려 사항을 적용합니다.
- 테스트 환경은 플랫폼 개발자가 프로덕션에 배포하기 전에 변경 내용을 테스트할 수 있게 하여 프로덕션에서의 배달과 관련된 위험을 줄여주기 때문에 중요합니다.
- 환경을 가능한 한 비슷하게 유지하면 테스트의 첫 번째 단계에서 환경 관련 오류를 쉽게 찾을 수 있으므로 개발 및 테스트 속도와 안정성이 향상됩니다.
- 환경 구성에 불일치가 있는 경우 "구성 드리프트"가 발생하여 데이터가 손실되고 배포가 느려지고 오류가 발생할 수 있습니다.
- IaC(코드 제공 인프라)를 채택하여 배포 속도를 높이고 환경 일관성을 개선하며 환경 간 "구성 드리프트"를 줄일 수 있습니다.
- 프로덕션에서 제한된 테스트 사용자 집합에서만 새 기능을 사용할 수 있도록 하고 프로덕션으로 릴리스하는 시간을 줄이는 카나리아 또는 파란색-녹색 배포와 같은 방법을 채택하는 것이 좋습니다.
- 테스트 결과에 대한 검사를 사용하여 개발에서 프로덕션으로 코드의 전환을 제어합니다. 테스트 실패로 인해 변경 내용이 다음 환경에 자동으로 배포되지 않도록 이러한 컨트롤을 자동화할 수 있습니다.
- 지정된 사용자가 코드를 프로덕션에 배포하기 전에 끌어오기 요청을 검토하도록 합니다. 분기 전략과 함께 리포지토리를 사용하여 검토 프로세스를 관리하는 것이 좋습니다.
- 모든 개발자가 모든 환경에 액세스할 수 있도록 하여 사일로를 방지합니다.
워크로드
워크로드에 대한 환경을 관리하는 방법을 알아보려면 엔터프라이즈 규모 FAQ를 참조하세요.
Azure 랜딩 존
고객이 새 Azure Policy 할당, Azure RBAC 역할 할당, Microsoft Entra 그룹 멤버 자격, Azure 리소스 만들기 등의 효과와 결과를 테스트하려는 경우 Azure 랜딩 존 배포를 위해 여러 환경을 채택하는 것이 일반적입니다.
엔터프라이즈 규모에 대한 테스트 접근 방식은 다음과 같은 두 가지 채택 방법을 설명합니다.
- 카나리아 및 프로덕션 환경에서 관리 그룹 계층 구조 복제
- 샌드박스 구독
팔로우하는 방법에 관계없이 항상 다음을 수행해야 합니다.
- 테스트를 위해 하나 이상의 환경을 채택합니다.
- 테스트 및 프로덕션 목적으로 분리된 서비스 주체를 사용하여 환경을 보호합니다.
- 특정 환경에 변경 내용을 배포하기 전에 변경 내용의 유효성을 검사하고 승인하는 자동화된 검사 및 승인을 구현합니다.