다음 Azure Well-Architected Framework 성능 효율성 검사 목록 권장 사항에 적용됩니다.
체인:10 | 운영 작업을 최적화합니다. 소프트웨어 개발 수명 주기 및 기타 일상적인 작업이 작업 부하 성능에 미치는 영향을 모니터링하고 최소화합니다. 이러한 작업에는 바이러스 검사, 비밀 교체, 백업, 데이터베이스 재인덱싱 및 배포가 포함됩니다. |
---|
이 가이드에서는 운영 작업을 최적화하기 위한 권장 사항을 설명합니다. 운영 작업 최적화는 작업 부하 작업 라우팅의 일부로 수행하는 작업의 영향을 최소화하는 프로세스입니다. 작업 작업은 워크로드 자체와 동일한 컴퓨팅 리소스를 사용합니다. 작업 작업의 영향을 고려하지 않으면 작업 부하가 성능 목표를 놓칠 수 있습니다. 또한 고객의 워크로드 성능에 부정적인 영향을 미칠 수 있습니다.
정의
기간 | 정의 |
---|---|
블루-그린 배포 전략 | 두 개의 동일한 환경을 사용하고 새 배포(그린 배포)에 대한 트래픽 방향을 제어하는 배포 전략입니다. |
데이터베이스 인덱스 재구축 | 인덱스를 삭제하고 다시 만드는 유지 관리 작업입니다. |
데이터베이스 인덱스 재구성 | 현재 데이터베이스 인덱스를 최적화하는 유지 관리 작업입니다. |
데이터베이스 스키마 | 데이터베이스의 일반적인 구조와 다른 데이터와의 관계입니다. |
배포 슬롯 | 고유한 호스트 이름을 사용하여 라이브 앱을 배포할 수 있는 Azure App Service의 기능입니다. |
제자리 업그레이드 | 구성 요소 또는 응용 프로그램을 교체하거나 새 환경으로 마이그레이션하지 않고 업그레이드하는 프로세스입니다. |
IaC(Infrastructure as Code) | 인프라스트럭처를 정의하고 배포하기 위한 설명 모델로, 네트워크, 가상 머신, 부하 분산 장치 및 연결 토폴로지를 포함합니다. |
주요 디자인 전략
소프트웨어 개발 수명 주기 및 기타 일상적인 작업이 작업 부하 성능에 미치는 영향을 줄이기 위한 조치를 취해야 합니다. 목표는 바이러스 검사, 비밀 순환, 백업, 인덱스 최적화(재구성 또는 재구축) 및 배포와 같은 일상적인 작업으로 인해 워크로드의 성능이 크게 저하되지 않도록 하는 것입니다.
운영 작업에 대한 계정
성능 목표를 설정할 때 운영 작업을 고려하는 것이 중요합니다. 일상적, 정기적 및 임시 작업을 성능 목표에 통합하면 작업 부하가 효율적으로 작동하도록 할 수 있습니다. 성능 목표에서 운영 작업을 고려하기 위해 고려해야 할 몇 가지 핵심 사항은 다음과 같습니다.
운영 작업을 식별합니다. 관련 운영 작업을 식별하고 성능 목표에 포함합니다. 일상적인 작업의 예로는 바이러스 검사, 데이터베이스 인덱스 재구성, 데이터베이스 인덱스 재구축, 디스크 또는 데이터베이스 백업, 인증서 교체, 운영 체제 패치, 암호 교체, API 키 교체, 침투 테스트 및 프로덕션의 감사 검토가 포함될 수 있습니다.
성능 목표를 평가합니다. 현재 성능 목표를 평가하고 워크로드와 관련된 운영 작업을 고려하여 조정합니다. 이렇게 하면 성능 목표가 워크로드의 운영 요구 사항에 맞게 조정됩니다.
배포 최적화
배포 최적화는 리소스와 코드를 릴리스하는 프로세스를 개선하여 원활한 성능을 보장하고 중단을 최소화하는 것을 의미합니다. 여기에는 계획, 효과적인 리소스 분배 및 IaC(Infrastructure-as-Code)와 애플리케이션 코드가 실제 환경에 도입되기 전에 모두 철저한 테스트가 포함됩니다. 배포가 부적절하면 워크로드의 속도와 효율성이 감소하고, 잠재적인 리소스 제약이 발생하고, 운영 환경에서 사용자 경험이 손상될 수 있습니다. 배포를 최적화하려면 다음 전략을 고려하십시오.
허용 가능한 가동 중지 시간을 평가합니다. 가동 중지 시간이 허용되는 경우 속도와 효율성을 우선시하는 배포 전략을 구현할 수 있습니다. 그러나 결정을 내리기 전에 다운타임이 비즈니스 요구 사항에 미치는 영향을 신중하게 평가하는 것이 중요합니다. 반면, 가동 중지 시간이 허용되지 않는 경우 워크로드의 지속적인 가용성을 보장하는 배포 전략을 구현해야 합니다. 블루-그린 배포 또는 카나리아 배포와 같은 기술을 사용하여 문제를 모니터링하는 동안 새 버전의 워크로드를 점진적으로 롤아웃하는 것이 좋습니다. 이러한 전략은 다운타임의 영향을 최소화하고 원활한 사용자 경험을 보장하는 데 도움이 됩니다.
현재 인스턴스 수로 배포합니다. 또한 즉각적인 크기 조정 작업을 유발하는 배포도 피해야 합니다. 인스턴스 수가 너무 적어 시스템이 즉시 크기 조정 작업을 수행하도록 강제하는 라이브 시스템에 리소스를 배포해서는 안 됩니다. 예를 들어 IaC(Infrastructure-as-Code) 템플릿이 배포 시 필요한 인스턴스 수와 일치하지 않을 수 있습니다. 현재 배포된 환경에서 8개의 인스턴스를 실행하고 있더라도 인스턴스 수가 2일 수 있습니다. 배포는 6개의 인스턴스를 제거하고 성능에 부정적인 영향을 미칩니다.
블루-그린 배포 전략을 사용합니다. 배포로 인해 서비스 중단 및 가동 중지 시간이 발생할 수 있습니다. 이러한 문제를 완화하려면 블루-그린 배포와 같이 성능 영향을 최소화하는 배포 전략을 선택합니다. 이러한 접근 방식을 통해 환경 간에 원활하게 전환하고 서비스 중단 위험을 줄일 수 있습니다. 블루-그린 배포 방법을 사용하는 경우 블루 환경과 그린 환경이라는 두 개의 별도 환경이 있습니다. 그린 환경에서 문제 또는 성능 저하가 감지되면 안정적인 블루 환경으로 쉽게 롤백할 수 있습니다. 이 전략을 사용하면 가동 중지 시간을 최소화하고 워크로드에 대해 높은 수준의 성능을 유지할 수 있습니다. 파란색-녹색 접근 방식을 사용하여 배포하려면 다음 일반 단계를 수행합니다.
새 환경을 배포합니다. 업데이트된 버전의 애플리케이션을 사용하여 기존 환경(파란색)과 함께 새 환경(녹색)을 설정합니다.
새 환경의 유효성을 검사합니다. 배포로 인해 대기 시간이 발생하고 응답 시간이 늘어날 수 있습니다. 컷오버 전에 인스턴스를 사전 예열하는 것이 좋습니다. 사전 예열에는 프로덕션과 같은 트래픽 및 워크로드를 시뮬레이션하여 새로운 환경을 준비하여 환경이 예상 부하를 처리할 준비가 되었는지 확인하는 작업이 포함됩니다. 대기 시간 및 응답 시간에 대한 영향을 최소화하는 데 도움이 됩니다. 새 환경을 철저히 테스트하고 유효성을 검사하여 올바르게 작동하고 성능 기대치를 충족하는지 확인합니다. 테스트는 캐시를 워밍업하고, 데이터베이스 연결을 설정하고, 환경이 예상 로드를 처리할 준비가 되었는지 확인하는 데 도움이 됩니다.
점차적으로 트래픽을 이동합니다. 새 환경을 미리 워밍하고 검증한 후 프로덕션 트래픽을 이전 환경(파란색)에서 새 환경(녹색)으로 점진적으로 이동합니다. 처음에는 적은 비율의 트래픽을 친환경 환경으로 유도하고 안정성과 예상되는 애플리케이션 상태를 확인한 후 점진적으로 증가시킵니다. 전역 부하 분산 장치 또는 트래픽 관리 메커니즘을 사용할 수 있습니다. 제어된 트래픽 이동을 통해 성능 문제를 조기에 식별하고 워크로드를 새 환경으로 완전히 전환하기 전에 수정 조치를 취할 수 있습니다.
모니터링 및 최적화. 배포에서는 공유 컴퓨팅 리소스를 사용할 수 있습니다. 트래픽을 전환한 후 새 환경의 성능과 상태를 지속적으로 모니터링합니다. 원하는 성능과 사용자 경험을 보장하기 위해 필요한 최적화 또는 조정을 수행합니다.
이전 환경을 제거합니다. 모든 트래픽을 녹색 환경으로 성공적으로 전환한 후 기존 연결에서 파란색 환경을 제거합니다. 이 단계는 이전 환경의 유지 관리 비용을 최적화하고 새 환경에 구성 드리프트가 없는지 확인하는 데 도움이 됩니다.
이 과정을 반복합니다. 향후 배포를 위해 블루 및 그린 환경의 역할을 반대로 합니다. 변경 사항을 새로운 블루 환경에 배포하고, 검증하고, 트래픽 전환을 조정하고, 이전 그린 환경을 해제합니다.
여러 빌드를 사용합니다. 다양한 유형의 빌드는 빌드 시간을 최적화하고 배포 품질을 보장하는 데 도움이 될 수 있습니다. 예를 들어 모든 코드 커밋과 함께 트리거되는 CI(연속 통합) 빌드를 가질 수 있습니다. 자동화된 테스트를 정기적으로 실행하는 야간 빌드와 프로덕션에 배포하는 데 사용되는 릴리스 빌드를 사용할 수 있습니다. 각 빌드 유형에는 지속적인 통합, 자동화된 테스트 또는 프로덕션 배포와 같은 특정 목적이 있어야 합니다. 배포 전에 워크로드를 테스트하고 검증하면 개발 프로세스 초기에 문제 또는 버그를 식별하고 해결하는 데 도움이 됩니다.
기능 플래그를 고려합니다. 기능 플래그는 소프트웨어 개발에서 응용 프로그램에 있는 특정 기능의 가시성과 동작을 제어하는 데 사용됩니다. 기능 플래그를 사용하면 개발자는 응용 프로그램을 다시 배포할 필요 없이 특정 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다. 기능 플래그는 기능을 활성화할지 비활성화해야 하는지 여부를 결정하는 코드에 조건부 논리를 도입하여 작동합니다. 이 논리는 사용자 역할, 사용자 기본 설정 또는 개발 팀에서 정의한 특정 조건과 같은 다양한 요소를 기반으로 할 수 있습니다. 개발자는 기능 플래그를 사용하여 일부 사용자에게 새로운 기능을 점진적으로 출시하거나 테스트를 위해 특정 그룹에 대한 기능을 활성화(카나리아 테스트)할 수 있습니다.
업그레이드 최적화
현재 위치 업그레이드는 기존 리소스 또는 응용 프로그램에 대한 업그레이드입니다. 현재 위치 업그레이드는 작업 부하를 일시적으로 늦추거나 중단할 수 있습니다. 업그레이드가 워크로드와 호환되는지 확인하는 것이 중요합니다. 업그레이드를 적용하기 전에 별도의 환경에서 테스트하여 잠재적인 문제를 식별하는 것이 좋습니다. 업그레이드 프로세스 중에 문제가 발생할 경우를 대비하여 롤백 계획을 제공합니다. 업그레이드를 적용하기 전에 중요한 데이터 및 구성을 완전히 백업하는 것이 중요합니다. 업그레이드 후 업그레이드된 시스템을 면밀히 모니터링하여 모든 것이 예상대로 작동하는지 확인합니다. 백업을 사용하면 필요한 경우 양호한 상태로 복원할 수 있습니다. 사용자 및 작업 부하 성능에 미치는 영향을 최소화하기 위해 사용량이 적은 시간에 업그레이드 일정을 우선적으로 예약해야 합니다. 예상되는 가동 중지 시간 및 수행해야 하는 필요한 작업을 포함하여 계획된 업그레이드에 대해 사용자에게 미리 알립니다.
트레이드오프: 사용량이 적은 시간에 운영 활동을 수행하기 위해 대기하면 운영 효율성에 영향을 미칠 수 있습니다. 적절한 기술을 갖춘 직원이 사용량이 적은 시간에 작업하도록 하는 것이 덜 편리할 수 있습니다.
툴링 최적화
파일 무결성 모니터링, 바이러스 검사, 침입 탐지 및 기타 운영 작업을 위한 필수 도구는 작업 부하 성능에 영향을 줄 수 있습니다. 컴퓨팅 리소스를 소비하고 대기 시간 및 성능 오버헤드를 추가할 수 있습니다. 도구가 워크로드 성능에 미치는 영향을 테스트하고 이해해야 합니다. 테스트 결과에 따라 도구 구성을 미세 조정하고, 검사 빈도를 조정하고, 컴퓨팅 리소스를 재할당해야 합니다. 바이러스 검사의 경우 관련 제외 목록을 만들어 검사 기간을 최소화할 수 있습니다.
데이터베이스 운영 최적화
데이터베이스 작업 최적화는 효율성을 극대화하고 리소스 사용률을 최소화하기 위해 데이터베이스 작업을 구체화하고 미세 조정하는 프로세스를 말합니다. 이러한 작업에는 백업, 스키마 변경, 성능 튜닝 및 모니터링과 같은 작업이 포함됩니다. 효율적인 데이터베이스 운영은 더 빠른 쿼리 응답, 시스템 오버헤드 감소, 전반적으로 더 원활한 사용자 경험으로 이어집니다.
스키마 변경에는 테이블, 열 또는 인덱스의 추가 또는 변경과 같은 데이터베이스 구조 수정이 포함됩니다. 이러한 변경으로 인해 배포 프로세스 중에 추가 처리 및 리소스 사용률이 필요할 수 있으며, 이로 인해 워크로드의 전반적인 성능에 영향을 줄 수 있습니다. 스키마 변경으로 인해 활성 쿼리, 인덱스 또는 트랜잭션의 성능이 저하되거나 데이터를 사용할 수 없게 될 수 있습니다.
이러한 영향을 최소화하려면 비프로덕션 환경에서 스키마 변경을 계획하고 테스트해야 합니다. 다양한 배포 기술을 사용하여 스키마 업데이트를 구현할 수 있습니다. 또한 사용 가능한 스키마 변경 도구를 사용하여 프로세스를 최적화해야 합니다. 데이터를 보관하고 분할하면 스키마 변경의 영향을 줄이는 데 도움이 될 수 있습니다.
백업 최적화
백업은 처리 능력, 네트워크 대역폭 및 디스크 I/O와 같은 워크로드 리소스를 사용합니다. 이러한 영향을 최소화하는 백업 전략을 테스트하고 선택해야 합니다. 가능한 한 사용량이 적은 시간에 백업을 수행해야 합니다. 전략에는 매번 전체 백업 대신 증분 백업이 포함되어야 합니다. 스냅샷은 백업보다 리소스를 덜 사용할 수 있습니다. 사용자 지정 솔루션을 구축하는 것보다 기본 제공 플랫폼 백업 및 복원 기능을 고려해야 합니다. 이러한 옵션을 테스트하고 워크로드에 최상의 성능을 제공하는 조합을 사용해야 합니다.
모니터링 및 디버깅 최적화
로깅이 과도하거나 제대로 구현되지 않은 경우, 원격 분석, 계측, 분산 추적 캡처 및 수집이 성능에 영향을 줄 수 있습니다. 마찬가지로 원격 디버깅과 같은 편의 기능도 성능에 영향을 줄 수 있습니다. 성능에 미치는 영향이 환경에 미치는 영향을 측정하고 알아야 합니다. 이러한 프로세스로 인해 성능이 저하되는 것을 원하지 않습니다. 성능 영향이 이점보다 더 큰 모든 프로세스를 구성하거나 비활성화해야 합니다.
Azure 지원
운영 작업에 대한 설명: Azure DevOps 는 팀이 소프트웨어를 효율적으로 계획, 개발, 테스트 및 제공할 수 있도록 하는 개발 도구 및 서비스 집합입니다. 여기에는 버전 제어, 지속적인 통합 및 제공, 프로젝트 관리 등과 같은 기능이 포함됩니다.
Azure는 많은 운영 작업의 영향을 최소화하는 서비스 간 통합을 제공합니다. 예를 들어 Azure Key Vault와 통합되는 서비스는 성능에 미치는 영향을 최소화하는 원활한 인증서 회전 또는 비밀 회전을 지원하는 경우가 많습니다.
배포 최적화: App Service 는 배포 슬롯을 제공합니다. 배포 슬롯을 사용하여 비프로덕션 환경에 코드를 배포할 수 있습니다. 앱 콘텐츠와 구성 요소를 두 배포 슬롯 간에 교환할 수 있습니다. 예를 들어 앱 콘텐츠를 비프로덕션 슬롯에서 프로덕션 슬롯으로 전환할 수 있습니다.
Azure Front Door 및 Azure Traffic Manager를 사용하면 파란색-녹색 배포 전략을 구현할 수 있습니다. 일부 Azure 컴퓨팅 서비스는 블루-그린 배포와 같은 고급 배포 전략도 지원합니다. 이러한 서비스를 트래픽 이동 또는 인스턴스 워밍 전략과 결합하여 배포의 성능 영향을 완화할 수 있습니다.
데이터베이스 작업 최적화: Azure SQL Database 는 전체 백업, 차등 백업 및 트랜잭션 로그 백업을 자동으로 수행합니다. Azure Cosmos DB 는 정기적으로 데이터를 자동으로 백업합니다. 자동 백업은 데이터베이스 작업의 성능이나 가용성에 영향을 주지 않고 수행됩니다. Azure Cosmos DB는 백업을 별도의 스토리지 서비스에 저장합니다.
백업 최적화: 일부 Azure 데이터 서비스는 특정 시점 복구 및 인덱싱에 대한to-no 성능 영향이 낮을 수 있도록 지원합니다. Azure Backup은 데이터 및 애플리케이션을 보호할 수 있는 안정적이고 확장 가능한 클라우드 기반 백업 솔루션입니다. 증분 백업, 압축 및 암호화와 같은 기능을 제공하여 백업 작업 중 성능에 미치는 영향을 최소화합니다. Azure Site Recovery는 보조 위치에 복제하여 응용 프로그램을 보호하는 데 도움이 됩니다. 연속 복제 및 자동화된 장애 조치(failover) 기능을 제공하여 백업 및 재해 복구 작업 중에 가동 중지 시간과 성능에 미치는 영향을 최소화합니다.
비즈니스 연속성 및 재해 복구 관리: 또한 Azure Business Continuity Center 를 사용하여 백업 구성, 보호 정책 설정, 작업 모니터링 및 다양한 환경에서 구성 검토를 위한 통합 웹 인터페이스를 통해 백업 및 재해 복구 관리를 간소화할 수 있습니다.
관련 링크
성능 효율성 체크리스트
전체 권장 사항 집합을 참조하세요.