Share via


운영 작업 최적화를 위한 권장 사항

이 Azure Well-Architected Framework 성능 효율성 검사 목록 권장 사항에 적용됩니다.

PE:10 운영 작업을 최적화합니다. 소프트웨어 개발 수명 주기 및 기타 일상적인 작업이 워크로드 성능에 미치는 영향을 모니터링하고 최소화합니다. 이러한 작업에는 바이러스 검사, 비밀 회전, 백업, 데이터베이스 다시 인덱싱 및 배포가 포함됩니다.

이 가이드에서는 운영 작업을 최적화하기 위한 권장 사항을 설명합니다. 운영 작업 최적화는 라우팅 워크로드 작업의 일부로 수행하는 작업의 영향을 최소화하는 프로세스입니다. 작업 활동은 워크로드 자체와 동일한 컴퓨팅 리소스를 사용합니다. 작업 작업의 영향을 고려하지 않으면 워크로드가 성능 목표를 놓칠 수 있습니다. 또한 고객의 워크로드 성능에 부정적인 영향을 줄 수 있습니다.

정의

용어 정의
청록색 배포 두 개의 동일한 환경을 사용하고 새 배포로의 트래픽 방향(녹색 배포)을 제어하는 배포 전략입니다.
데이터베이스 인덱스 다시 작성 인덱스를 삭제하고 다시 만드는 유지 관리 작업입니다.
데이터베이스 인덱스 재구성 현재 데이터베이스 인덱스를 최적화하는 유지 관리 작업입니다.
데이터베이스 스키마 데이터베이스의 일반적인 구조와 다른 데이터와의 관계입니다.
배포 슬롯 자체 호스트 이름으로 라이브 앱을 배포할 수 있는 Azure App Service 기능입니다.
현재 위치 업그레이드 구성 요소를 교체하거나 새 환경으로 마이그레이션하지 않고 구성 요소 또는 애플리케이션을 업그레이드하는 프로세스입니다.
IaC(Infrastructure as Code) 네트워크, 가상 머신, 부하 분산 장치 및 연결 토폴로지 등 인프라를 정의하고 배포하기 위한 설명이 포함된 모델입니다.

주요 디자인 전략

소프트웨어 개발 수명 주기 및 기타 일상적인 작업이 워크로드 성능에 미치는 영향을 줄이기 위한 조치를 취해야 합니다. 목표는 바이러스 검사, 비밀 회전, 백업, 인덱스 최적화(재구성 또는 다시 빌드) 및 배포와 같은 일상적인 작업이 워크로드의 성능을 크게 저하하지 않도록 하는 것입니다.

운영 작업 계정

성능 목표를 설정할 때 운영 작업을 고려하는 것이 중요합니다. 루틴, 일반 및 임시 작업을 성능 목표에 통합하면 워크로드가 효율적으로 작동하도록 할 수 있습니다. 성능 목표의 운영 작업을 설명하기 위해 고려해야 할 몇 가지 핵심 사항은 다음과 같습니다.

  • 운영 작업을 식별합니다. 성능 목표에 관련 운영 작업을 식별하고 포함합니다. 일상적인 작업의 예로는 바이러스 검사, 데이터베이스 인덱스 재구성, 데이터베이스 인덱스 다시 작성, 디스크 또는 데이터베이스 백업, 인증서 회전, 운영 체제 패치, 암호 회전, API 키 회전, 침투 테스트 및 프로덕션의 감사 검토가 포함될 수 있습니다.

  • 성능 목표를 평가합니다. 현재 성능 목표를 평가하고 워크로드와 관련된 운영 작업을 고려하도록 조정합니다. 이렇게 하면 성능 대상이 워크로드의 운영 요구 사항에 맞게 조정됩니다.

배포 최적화

배포 최적화는 원활한 성능과 최소한의 중단을 보장하기 위해 리소스 및 코드를 릴리스하는 프로세스를 구체화하는 것을 의미합니다. 여기에는 라이브 환경에 도입되기 전에 IaC(Infrastructure-as-code)와 애플리케이션 코드의 계획, 효과적인 리소스 배포 및 철저한 테스트가 포함됩니다. 배포가 부적절하면 워크로드의 속도와 효율성이 저하되고, 리소스 제약 조건이 발생할 수 있으며, 운영 설정에서 사용자 환경이 손상될 수 있습니다. 배포를 최적화하려면 다음 전략을 고려합니다.

허용되는 가동 중지 시간을 평가합니다. 가동 중지 시간이 허용되는 경우 속도와 효율성의 우선 순위를 지정하는 배포 전략을 구현할 수 있습니다. 그러나 이러한 결정을 내리기 전에 가동 중지 시간이 비즈니스 요구 사항에 미치는 영향을 신중하게 평가하는 것이 중요합니다. 반면 가동 중지 시간이 허용되지 않는 경우 워크로드의 지속적인 가용성을 보장하는 배포 전략을 구현해야 합니다. 문제를 모니터링하는 동안 새 버전의 워크로드를 점진적으로 롤아웃하는 파란색-녹색 배포 또는 카나리아 배포와 같은 기술을 사용하는 것이 좋습니다. 이러한 전략은 가동 중지 시간의 영향을 최소화하고 원활한 사용자 환경을 보장하는 데 도움이 됩니다.

현재 instance 개수에 배포합니다. 또한 즉각적인 크기 조정 작업을 유발하는 배포를 피해야 합니다. instance 수가 너무 낮아서 시스템에서 즉시 크기 조정 작업을 수행하도록 리소스를 라이브 시스템에 배포해서는 안 됩니다. 예를 들어 IaC(Infrastructure-as-code) 템플릿이 배포 시 필요한 인스턴스 수와 일치하지 않을 수 있습니다. 현재 배포된 환경에서 8개의 인스턴스를 실행하고 있더라도 instance 개수는 2개일 수 있습니다. 배포는 6개의 인스턴스를 제거하고 성능에 부정적인 영향을 줍니다.

파란색-녹색 배포 전략을 사용합니다. 배포로 인해 서비스 중단 및 가동 중지 시간이 발생할 수 있습니다. 이러한 문제를 완화하려면 파란색-녹색 배포와 같이 성능 영향을 최소화하는 배포 전략을 선택합니다. 이러한 접근 방식을 사용하면 환경 간의 원활한 전환을 허용하고 서비스 중단 위험을 줄일 수 있습니다. 파란색-녹색 배포 방법을 사용하는 경우 파란색 및 녹색 환경이라는 두 개의 별도 환경이 있습니다. 녹색 환경에서 문제 또는 성능 저하가 감지되면 안정적인 파란색 환경으로 쉽게 롤백할 수 있습니다. 이 전략을 사용하면 가동 중지 시간을 최소화하고 워크로드에 대해 높은 수준의 성능을 유지할 수 있습니다. 파란색-녹색 접근 방식을 사용하여 배포하려면 다음 일반적인 단계를 수행합니다.

  • 새 환경을 배포합니다. 애플리케이션의 업데이트된 버전과 함께 기존 환경(파란색)과 함께 새 환경(녹색)을 설정합니다.

  • 새 환경의 유효성을 검사합니다. 배포는 대기 시간을 도입하고 응답 시간을 늘릴 수 있습니다. 컷오버 전에 인스턴스를 미리 준비해 보세요. 사전 준비에는 프로덕션과 유사한 트래픽 및 워크로드를 시뮬레이션하여 환경이 예상 부하를 처리할 준비가 되었는지 확인하여 새 환경을 준비하는 작업이 포함됩니다. 대기 시간 및 응답 시간에 미치는 영향을 최소화하는 데 도움이 됩니다. 새 환경을 철저히 테스트하고 유효성을 검사하여 제대로 작동하고 성능 기대치를 충족하는지 확인합니다. 테스트는 캐시를 준비하고, 데이터베이스 연결 설정하고, 환경이 예상 부하를 처리할 준비가 되었는지 확인하는 데 도움이 됩니다.

  • 트래픽을 점진적으로 이동합니다. 새 환경이 미리 빌드되고 유효성을 검사한 후 프로덕션 트래픽을 이전 환경(파란색)에서 새 환경(녹색)으로 점진적으로 이동합니다. 처음에는 트래픽의 적은 비율을 녹색 환경으로 전달하고 안정성 및 예상 애플리케이션 상태를 확인한 후 점진적으로 증가합니다. 전역 부하 분산 장치 또는 트래픽 관리 메커니즘을 사용할 수 있습니다. 제어된 트래픽 이동을 통해 성능 문제를 조기에 식별하고 워크로드를 새 환경으로 완전히 전환하기 전에 수정 작업을 수행할 수 있습니다.

  • 모니터링 및 최적화. 배포는 공유 컴퓨팅 리소스를 사용할 수 있습니다. 트래픽을 이동한 후 새 환경의 성능과 상태를 지속적으로 모니터링합니다. 필요한 최적화 또는 조정을 수행하여 원하는 성능과 사용자 환경을 보장합니다.

  • 이전 환경을 제거합니다. 모든 트래픽을 녹색 환경으로 성공적으로 전환한 후 기존 연결에서 파란색 환경을 제거합니다. 이 단계는 이전 환경을 유지하는 비용을 최적화하고 새 환경에 구성 드리프트가 없도록 하는 데 도움이 됩니다.

  • 프로세스를 반복합니다. 향후 배포의 경우 파란색 및 녹색 환경의 역할을 역방향으로 적용합니다. 새 파란색 환경에 변경 내용을 배포하고, 유효성을 검사하고, 트래픽 전환을 오케스트레이션하고, 이전 녹색 환경을 해제합니다.

여러 빌드를 사용합니다. 다양한 유형의 빌드는 빌드 시간을 최적화하고 배포 품질을 보장하는 데 도움이 될 수 있습니다. 예를 들어 모든 코드 커밋으로 트리거되는 CI(연속 통합) 빌드를 사용할 수 있습니다. 자동화된 테스트를 정기적으로 실행하는 야간 빌드와 프로덕션에 배포하는 데 사용되는 빌드를 릴리스할 수 있습니다. 각 빌드 유형에는 연속 통합, 자동화된 테스트 또는 프로덕션 배포와 같은 특정 목적이 있어야 합니다. 배포 전에 워크로드를 테스트하고 유효성을 검사하면 개발 프로세스 초기에 문제 또는 버그를 식별하고 해결하는 데 도움이 됩니다.

기능 플래그를 고려합니다. 기능 플래그는 소프트웨어 개발에서 애플리케이션의 특정 기능의 표시 유형 및 동작을 제어하는 데 사용됩니다. 개발자는 기능 플래그를 사용하여 애플리케이션을 다시 배포할 필요 없이 특정 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다. 기능 플래그는 기능을 사용하도록 설정하거나 사용하지 않도록 설정해야 하는지 여부를 결정하는 코드에 조건부 논리를 도입하여 작동합니다. 이 논리는 사용자 역할, 사용자 기본 설정 또는 개발 팀에서 정의한 특정 조건과 같은 다양한 요소를 기반으로 할 수 있습니다. 개발자는 기능 플래그를 사용하여 사용자 하위 집합에 새 기능을 점진적으로 롤아웃하거나 특정 그룹의 테스트를 위한 기능(카나리아 테스트)을 사용하도록 설정할 수 있습니다.

업그레이드 최적화

현재 위치 업그레이드는 기존 리소스 또는 애플리케이션으로의 업그레이드입니다. 현재 위치 업그레이드는 일시적으로 워크로드를 늦추거나 중단할 수 있습니다. 업그레이드가 워크로드와 호환되도록 하는 것이 중요합니다. 업그레이드를 적용하기 전에 별도의 환경에서 테스트하여 잠재적인 문제를 식별하는 것이 좋습니다. 업그레이드 프로세스 중에 문제가 발생하는 경우 롤백 계획을 제공합니다. 업그레이드를 적용하기 전에 중요한 데이터 및 구성의 전체 백업을 수행하는 것이 중요합니다. 업그레이드 후 업그레이드된 시스템을 면밀히 모니터링하여 모든 것이 예상대로 작동하는지 확인합니다. 백업을 사용하면 필요한 경우 좋은 상태로 복원할 수 있습니다. 사용량이 많은 시간 동안 업그레이드 예약의 우선 순위를 지정하여 사용자 및 워크로드 성능에 미치는 영향을 최소화해야 합니다. 예상 가동 중지 시간 및 수행해야 하는 필요한 작업을 포함하여 계획된 업그레이드에 대해 사용자에게 미리 알립니다.

절충: 사용량이 적은 시간 동안 작업 작업을 수행하기를 기다리면 운영 효율성에 영향을 줄 수 있습니다. 사용량이 적은 시간에 적절한 기술을 가진 직원이 작업하도록 하는 것이 덜 편리할 수 있습니다.

도구 최적화

파일 무결성 모니터링, 바이러스 검사, 침입 검색 및 기타 운영 작업을 위한 필수 도구는 워크로드 성능에 영향을 줄 수 있습니다. 컴퓨팅 리소스를 사용하며 대기 시간 및 성능 오버헤드를 추가할 수 있습니다. 도구가 워크로드 성능에 미치는 영향을 테스트하고 이해해야 합니다. 테스트 결과에 따라 도구 구성을 미세 조정하고, 스캔 빈도를 조정하고, 컴퓨팅 리소스를 다시 할당해야 합니다. 바이러스 검사의 경우 관련 제외 목록을 만들어 검사 기간을 최소화할 수 있습니다.

데이터베이스 작업 최적화

데이터베이스 작업 최적화는 최대 효율성과 최소한의 리소스 사용률을 보장하기 위해 데이터베이스 작업을 구체화하고 미세 조정하는 프로세스를 의미합니다. 이러한 작업에는 백업, 스키마 변경, 성능 튜닝 및 모니터링과 같은 작업이 포함됩니다. 효율적인 데이터베이스 작업으로 인해 쿼리 응답이 빨라지고 시스템 오버헤드가 감소하며 전반적인 사용자 환경이 더 원활해집니다.

스키마 변경에는 테이블, 열 또는 인덱스 추가 또는 변경과 같은 데이터베이스 구조 수정이 포함됩니다. 이러한 변경에는 배포 프로세스 중에 추가 처리 및 리소스 사용률이 필요할 수 있으며, 이는 워크로드의 전반적인 성능에 영향을 미칠 수 있습니다. 스키마 변경으로 인해 활성 쿼리, 인덱스 또는 트랜잭션의 성능이 저하되거나 데이터를 사용할 수 없게 될 수 있습니다.

이러한 효과를 최소화하려면 비프로덕션 환경에서 스키마 변경을 계획하고 테스트해야 합니다. 다양한 배포 기술을 사용하여 스키마 업데이트를 구현할 수 있습니다. 또한 사용 가능한 스키마 변경 도구를 사용하여 프로세스를 최적화해야 합니다. 데이터 보관 및 분할은 스키마 변경의 영향을 줄이는 데 도움이 될 수 있습니다.

백업 최적화

백업은 처리 능력, 네트워크 대역폭 및 디스크 I/O와 같은 워크로드 리소스를 사용합니다. 이러한 효과를 최소화하는 백업 전략을 테스트하고 선택해야 합니다. 사용량이 많은 시간에 백업을 수행할 수 있는 경우 백업을 수행해야 합니다. 전략에는 매번 전체 백업 대신 증분 백업이 포함되어야 합니다. 스냅샷은 백업보다 리소스 집약적일 수 있습니다. 사용자 지정 솔루션을 빌드하는 대신 기본 제공 플랫폼 백업 및 복원 기능을 고려해야 합니다. 이러한 옵션을 테스트하고 워크로드에 최상의 성능을 제공하는 조합을 사용해야 합니다.

모니터링 및 디버깅 최적화

과도하거나 잘못 구현된 로깅, 원격 분석, 계측 및 분산 추적 캡처 및 수집은 성능에 영향을 줄 수 있습니다. 마찬가지로 원격 디버깅과 같은 편리한 기능도 성능에 영향을 줄 수 있습니다. 환경에 미치는 성능 영향을 측정하고 알아야 합니다. 이러한 프로세스가 성능을 저하하지 않도록 합니다. 성능 효과가 이점보다 큰 프로세스를 구성하거나 사용하지 않도록 설정해야 합니다.

Azure 촉진

운영 작업 고려: Azure DevOps 는 팀이 소프트웨어를 효율적으로 계획, 개발, 테스트 및 제공할 수 있는 개발 도구 및 서비스 세트입니다. 여기에는 버전 제어, 지속적인 통합 및 배달, 프로젝트 관리 등의 기능이 포함됩니다.

Azure는 많은 운영 작업의 영향을 최소화하는 서비스 대 서비스 통합을 제공합니다. 예를 들어 Azure Key Vault 통합되는 서비스는 성능에 미치는 영향을 최소화하는 원활한 인증서 회전 또는 비밀 회전을 지원하는 경우가 많습니다.

배포 최적화: App Service 배포 슬롯을 제공합니다. 배포 슬롯을 사용하여 비프로덕션 환경에 코드를 배포할 수 있습니다. 두 배포 슬롯 간에 앱 콘텐츠와 구성 요소를 교환할 수 있습니다. 예를 들어 앱 콘텐츠를 비프로덕션 슬롯에서 프로덕션 슬롯으로 전환할 수 있습니다.

Azure Front Door 및 Azure Traffic Manager를 사용하면 파란색-녹색 배포 전략을 구현할 수 있습니다. 일부 Azure 컴퓨팅 서비스는 청록색 배포와 같은 고급 배포 전략도 지원합니다. 이러한 서비스를 트래픽 이동 또는 instance 온난화 전략과 결합하여 배포의 성능 영향을 완화할 수 있습니다.

데이터베이스 작업 최적화: Azure SQL 데이터베이스는 자동으로 전체 백업, 차등 백업 및 트랜잭션 로그 백업을 수행합니다. Azure Cosmos DB 는 정기적으로 데이터의 백업을 자동으로 수행합니다. 자동 백업은 데이터베이스 작업의 성능 또는 가용성에 영향을 주지 않고 수행됩니다. Azure Cosmos DB는 별도의 스토리지 서비스에 백업을 저장합니다.

백업 최적화: 일부 Azure 데이터 서비스는 특정 시점 복구 및 인덱싱에 대한 성능 저하 영향을 지원합니다. Azure Backup 데이터 및 애플리케이션을 보호할 수 있는 안정적이고 확장 가능한 클라우드 기반 백업 솔루션입니다. 증분 백업, 압축 및 암호화와 같은 기능을 제공하여 백업 작업 중 성능에 미치는 영향을 최소화합니다. Azure Site Recovery 애플리케이션을 보조 위치로 복제하여 보호할 수 있습니다. 백업 및 재해 복구 작업 중 가동 중지 시간 및 성능 영향을 최소화하기 위해 연속 복제 및 자동화된 장애 조치 기능을 제공합니다.

성능 효율성 검사 목록

전체 권장 사항 집합을 참조하세요.