성능 효율성의 절충
워크로드를 설계할 때 성능 효율성과 비용 최적화, 운영 우수성, 안정성 및 보안과 같은 디자인의 다른 측면 간의 절충을 고려합니다.
성능 효율성 및 비용 최적화
성능 향상의 결과로 비용이 증가할 수 있습니다. 성능을 최적화할 때 비용을 관리하려면 다음 요소를 고려하세요.
일관되게 높은 사용률로 워크로드 비용을 예측하지 않습니다. 일관된 컴퓨팅 및 데이터 흐름을 얻기 위해 최대치를 평준화합니다. 소비 기반 가격 책정은 동일한 프로비저닝된 가격 책정보다 더 비쌉니다. 수동 크기 조정 및 자동 크기 조정을 사용하여 적절한 균형을 찾는 것이 가장 좋습니다. 스케일 업은 일반적으로 스케일 아웃보다 더 비쌉니다.
지역 수에 따라 비용이 직접 증가합니다. 더 저렴한 지역에서 리소스를 찾는 것은 네트워크 수신 및 송신 비용을 무효화하거나 대기 시간 증가로 인해 애플리케이션 성능이 저하되지 않습니다.
페이로드의 모든 렌더링 주기는 컴퓨팅과 메모리를 모두 사용합니다. 캐싱을 사용하여 서버의 부하를 줄이고 미리 검색된 스토리지 및 대역폭 비용으로 저장할 수 있습니다. 특히, 정적 콘텐츠 서비스의 경우 비용을 크게 절감할 수 있습니다.
캐싱은 비용을 줄일 수 있지만 일부 성능 절충이 있습니다. 예를 들어 Azure Traffic Manager 가격 책정은 서비스에 도달하는 DNS(Domain Name Service) 쿼리 수를 기반으로 합니다. 캐싱을 통해 해당 수를 줄이고 캐시를 새로 고치는 빈도를 구성할 수 있습니다. 그러나 자주 업데이트되지 않는 캐시를 사용하면 엔드포인트를 사용할 수 없는 경우 사용자 장애 조치(failover) 시간이 길어집니다.
전용 리소스를 사용하여 장기 실행 작업을 일괄 처리하면 비용이 증가합니다. Azure Spot Virtual Machines 프로비전하여 비용을 절감할 수 있지만 Azure가 VM(가상 머신)을 제거할 때마다 작업이 중단될 수 있도록 준비할 수 있습니다.
다른 비용 고려 사항은 비용 최적화 핵심을 참조하세요.
성능 효율성 대 운영 우수성
사용자가 효율적인 방식으로 워크로드에 대한 요구를 충족하도록 워크로드를 설계하는 방법을 결정할 때 작업을 고려합니다. 운영 프로세스는 애플리케이션을 프로덕션 환경에서 계속 실행합니다. 이러한 프로세스를 통해 운영 우수성을 달성하려면 다음 지침을 사용합니다.
- 배포가 안정적이고 예측 가능한 상태로 유지되도록 합니다.
- 사용자 오류 발생 가능성을 줄이기 위해 배포를 자동화합니다.
- 배포 프로세스를 빠르고 일상적으로 수행하여 새 기능 또는 버그 수정의 릴리스 속도를 늦추지 않도록 합니다.
- 업데이트에 문제가 있는 경우 신속하게 롤백하거나 롤백할 수 있습니다.
기타 운영 고려 사항은 운영 우수성 핵심을 참조하세요.
성능 테스트 자동화
자동화된 성능 테스트 는 성능 문제를 조기에 식별하는 데 도움이 될 수 있는 운영 프로세스입니다. 심각한 성능 문제는 코드의 버그만큼 심각한 배포에 영향을 미칠 수 있습니다. 자동화된 기능 테스트는 애플리케이션 버그를 방지할 수 있지만 성능 문제를 감지하지 못할 수 있습니다.
대기 시간, 로드 시간, 리소스 사용량과 같은 메트릭에 허용되는 성능 목표를 정의합니다. 릴리스 파이프라인에서 자동화된 성능 테스트를 포함하여 애플리케이션이 해당 목표를 충족하도록 합니다.
빠른 빌드 수행
또 다른 운영 우수성 프로세스는 제품이 빠른 빌드 프로세스를 통해 배포 가능한 상태인지 확인하는 것입니다. 빌드는 애플리케이션의 상태 대한 중요한 정보를 제공합니다.
다음 사례는 더 빠른 빌드를 촉진합니다.
- 적절한 크기의 VM을 선택합니다.
- 빌드 서버를 원본 및 대상 위치 근처에 배치하여 빌드 기간을 상당히 줄여야 합니다.
- 빌드 서버를 스케일 아웃합니다.
- 빌드를 최적화합니다.
자세한 내용은 배포 인프라에 대한 성능 고려 사항을 참조하세요.
성능 모니터링
성능 향상을 고려할 때 애플리케이션이 올바르게 실행되고 있는지 확인하기 위해 모니터링을 수행해야 합니다. 모니터링에는 애플리케이션, 플랫폼, 네트워킹이 포함되어야 합니다. 자세한 내용은 클라우드 애플리케이션의 작업 모니터링을 참조하세요.
성능 효율성 대 안정성
오류가 발생했음을 미리 인정합니다. 실패를 완전히 방지하는 대신 단일 실패 구성 요소의 영향을 최소화하는 것이 목표입니다.
안정적인 애플리케이션은 복원력이 있고 HA(고가용성)를 지닙니다. 복원력을 사용하면 시스템이 오류로부터 정상적으로 복구하고 전체 복구 전에 가동 중지 시간 및 데이터 손실을 최소화하면서 계속 작동할 수 있습니다. HA 시스템은 심각한 가동 중지 시간 없이 정상 상태로 디자인된 대로 실행됩니다. 안정성을 유지하면 성능 효율성을 유지할 수 있습니다.
안정성을 위해 다음 지침을 고려합니다.
회로 차단기 패턴을 사용하여 안정성을 제공하고 시스템이 오류로부터 복구하는 동안 성능 영향을 최소화합니다.
CQRS(명령 쿼리 책임 분리) 패턴을 사용하여 읽기 및 쓰기 인터페이스를 분리하여 솔루션에 필요한 규모와 성능을 달성합니다.
최종 일관성 모델을 채택하여 더 높은 가용성을 달성해 보세요. 올바른 데이터 저장소를 선택하는 방법에 대한 자세한 내용은 데이터에 가장 적합한 데이터 저장소 사용을 참조하세요.
애플리케이션에 현재 구독에서 사용할 수 있는 것보다 더 많은 스토리지 계정이 필요한 경우 더 많은 스토리지 계정을 사용하여 새 구독을 만듭니다. 자세한 내용은 스케일링 성능 및 성능 목표를 참조하세요.
스케일 업 및 다운을 방지합니다. 그 대신에 일반적인 부하에서 성능 요구 사항에 맞는 계층 및 인스턴스 크기를 선택한 다음 규모 확장하여 트래픽 분량의 변화를 처리합니다. 스케일 업 또는 다운하면 애플리케이션 다시 시작이 트리거될 수 있습니다.
로그와 애플리케이션 데이터에 동일한 스토리지 계정을 사용하지 마세요. 로그에 대한 별도의 스토리지 계정을 만들어 로깅이 애플리케이션 성능을 저하시키는 것을 방지합니다.
성능을 모니터링합니다. Application Insights 또는 New Relic과 같은 성능 모니터링 서비스를 사용하여 부하 상태에서 애플리케이션 성능 및 동작을 모니터링합니다. 성능 모니터링은 애플리케이션에 대한 실시간 인사이트를 제공하고 문제를 진단하고 근본 원인 오류 분석을 수행하는 데 도움이 됩니다.
복원력, 가용성, 안정성 고려 사항은 안정성 핵심 요소를 참조하세요.
성능 효율성 대 보안
성능이 너무 나빠서 데이터를 사용할 수 없는 경우 데이터에 액세스할 수 없는 것으로 간주할 수 있습니다. 서비스가 최적의 가동 시간과 성능을 갖도록 보안 관점에서 할 수 있는 모든 작업을 수행해야 합니다.
가용성 및 성능을 향상시키기 위한 인기 있고 효과적인 방법은 부하 분산입니다. 부하 분산은 서비스에 포함된 서버 간에 네트워크 트래픽을 분산하는 방법입니다. 부하 분산은 서비스 요청에 대한 프로세서, 네트워크 및 메모리 오버헤드가 부하 분산된 모든 서버에 분산되기 때문에 성능을 향상시킵니다. 가능한 한 서비스에 적합한 부하 분산을 사용합니다. 부하 분산 시나리오에 대한 자세한 내용은 가동 시간 및 성능 최적화를 참조하세요.
다음 보안 조치가 성능에 미치는 영향을 고려합니다.
성능을 최적화하고 가용성을 최대화하려면 애플리케이션 코드는 먼저 ID 공급자 로부터 토큰을 획득하기 전에 캐시에서 자동으로 OAuth 액세스 토큰을 가져와야 합니다. OAuth는 암호를 노출하지 않고도 서비스 간에 정보를 안전하게 공유할 수 있는 기술 표준입니다.
값이 낮은 대량 데이터를 도입하지 않고 중요한 보안 경고 및 로그를 SIEM(보안 정보 및 이벤트 관리) 시스템에 통합해야 합니다. 값이 낮은 데이터는 SIEM 비용과 가양성 비용을 증가시키고 성능을 저하할 수 있습니다. 자세한 내용은 Azure 서비스를 사용한 보안 로그 및 경고를 참조하세요.
Azure Active Directory Connect(Azure AD Connect)를 사용하여 온-프레미스 디렉터리를 클라우드 디렉터리와 동기화합니다. 다양한 요소는 Azure AD Connect의 성능에 영향을 줍니다. 성능이 떨어지는 시스템 때문에 보안과 생산성이 저하되는 일이 없도록 Azure AD Connect의 용량을 충분히 확보해야 합니다.
100,000개 이상의 개체를 프로비전하는 대규모 또는 복잡한 조직은 권장 사항을 따라 Azure AD Connect 구현을 최적화해야 합니다. 자세한 내용은 Azure Active Directory를 사용하는 하이브리드 ID란?을 참조하세요.
패킷 수준에서 실시간 성능 정보에 액세스하려면 패킷 캡처 를 사용하여 경고를 설정합니다.
다른 보안 고려 사항은 보안 핵심 요소를 참조하세요.