성능 효율성 절충
오버프로비전하지 않고 성능 목표를 충족하는 워크로드가 효율적입니다. 성능 효율성의 목표는 항상 수요를 처리할 수 있는 충분한 공급을 제공하는 것입니다. 성능 효율성을 위한 주요 전략에는 코드 최적화, 디자인 패턴, 용량 계획 및 크기 조정의 적절한 사용이 포함됩니다. 명확한 성능 목표 및 테스트는 이 핵심 요소를 뒷받침합니다.
워크로드의 성능 목표를 협상하고 성능 효율성을 위해 워크로드를 설계하는 과정에서 성능 효율성 디자인 원칙과 성능 효율성에 대한 디자인 검토 검사 목록의 권장 사항이 다른 핵심 요소의 최적화 목표에 어떤 영향을 줄 수 있는지 알고 있어야 합니다. 특정 성능 효율성 결정은 일부 핵심 요소에 도움이 되지만 다른 요소에 대한 장단점이 될 수 있습니다. 이 문서에서는 성능 효율성을 위해 워크로드 아키텍처 및 작업을 디자인할 때 워크로드 팀이 발생할 수 있는 절충 예제를 나열합니다.
안정성과 성능 효율성의 절충
절충: 복제 감소 및 밀도 증가. 안정성의 초석은 복제를 사용하고 오작동의 폭발 반경을 제한하여 복원력을 보장하는 것입니다.
마지막 책임 있는 순간까지 크기 조정을 지연하여 효율성을 달성하는 워크로드는 수요를 밀접하게 충족하지만 예기치 않은 노드 오류 및 크기 조정 지연에 취약합니다.
워크로드 리소스를 통합하면 초과 용량을 사용하고 효율성을 향상시킬 수 있습니다. 그러나 공동 배치된 구성 요소 또는 애플리케이션 플랫폼에서 오작동의 폭발 반경을 증가합니다.
잉여 용량을 최소화하기 위해 스케일 인 또는 스케일 다운하면 사용량 급증 시 워크로드의 프로비전이 미달될 수 있으며, 이로 인해 공급 부족으로 인해 서비스 중단이 발생할 수 있습니다.
절충: 복잡성 증가. 안정성은 단순성을 우선합니다.
자동 크기 조정을 사용하여 수요와 워크로드 공급의 균형을 맞추면 워크로드 토폴로지의 가변성이 도입되고 시스템이 안정적이 되도록 올바르게 작동해야 하는 구성 요소가 추가됩니다. 자동 크기 조정은 시작 및 중지와 같은 더 많은 애플리케이션 수명 주기 이벤트를 트리거하도록 합니다.
데이터 분할 및 분할은 대규모 또는 자주 액세스되는 데이터 세트의 성능 문제를 방지하는 데 도움이 됩니다. 그러나 이러한 패턴의 구현은 (최종) 일관성을 추가 리소스 간에 유지 관리해야 하기 때문에 복잡성을 증가합니다.
최적화된 액세스 패턴에 대한 데이터를 비정규화하면 성능이 향상될 수 있지만 데이터의 여러 표현을 동기화해야 하기 때문에 복잡성이 발생합니다.
성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 구성 요소를 사용하면 워크로드의 노출 영역이 증가합니다. 그런 다음 전체 워크로드를 안정적으로 유지하기 위해 구성 요소 자체를 안정적으로 만들어야 합니다. 예를 들면 다음과 같습니다.
- 중요한 상태 저장 구성 요소를 도입하는 부하 평준화를 위한 메시지 버스입니다.
- 신뢰할 수 있는 작업 및 복제본의 인리스트먼트가 필요한 자동 크기 조정된 복제본에 대한 부하 분산 장치입니다.
- 데이터를 캐시로 오프로드하는 경우 신뢰할 수 있는 캐시 무효화 방법이 필요합니다.
절충: 활성 환경에 대한 테스트 및 관찰. 프로덕션 시스템의 불필요한 사용을 방지하는 것은 안정성을 위한 자체 보존 및 위험 회피 접근 방식입니다.
가상 트랜잭션 사용과 같은 활성 환경에서의 성능 테스트는 테스트 작업 또는 구성으로 인해 오작동을 일으킬 위험이 있습니다.
워크로드는 팀이 활성 환경에서 학습할 수 있도록 하는 APM(애플리케이션 성능 모니터링) 시스템으로 계측되어야 합니다. APM 도구는 애플리케이션 코드 또는 호스팅 환경에 설치 및 구성됩니다. 도구의 부적절한 사용, 제한 초과 또는 잘못된 구성으로 인해 해당 기능과 유지 관리가 손상되어 안정성이 저하될 수 있습니다.
보안과의 성능 효율성 절충
절충: 보안 제어의 감소. 보안 제어는 심층 방어를 제공하기 위해 여러 계층에 걸쳐 설정되며, 때로는 중복적으로 설정됩니다.
한 가지 성능 최적화 전략은 특히 처리 시간이 정당화되지 않는 경우 흐름의 지연에 영향을 주는 구성 요소 또는 프로세스를 제거하거나 우회하는 것입니다. 그러나 이 전략은 보안을 손상시킬 수 있으며 철저한 위험 분석을 수반해야 합니다. 다음 예를 살펴 보십시오.
전송 속도 향상을 위해 전송 중 또는 미사용 암호화를 제거하면 데이터가 잠재적 무결성 또는 기밀성 위반에 노출됩니다.
보안 검색 또는 검사 도구를 제거하거나 줄여 처리 시간을 줄이면 해당 도구가 보호하는 기밀성, 무결성 또는 가용성이 손상될 수 있습니다.
성능 영향을 제한하기 위해 보안 패치의 빈도를 줄이면 워크로드가 새로운 위협에 더 취약해질 수 있습니다.
네트워크 대기 시간을 개선하기 위해 네트워크 흐름에서 방화벽 규칙을 제거하면 원치 않는 통신을 허용할 수 있습니다.
더 빠른 데이터 처리를 위해 데이터 유효성 검사 또는 콘텐츠 안전 검사를 최소화하면 특히 입력이 악의적인 경우 데이터 무결성이 손상될 수 있습니다.
예를 들어 IV(초기화 벡터)에서 암호화 또는 해시 알고리즘에 덜 엔트로피를 사용하는 것이 더 효율적이지만 암호화를 더 쉽게 해독할 수 있습니다.
절충: 워크로드 노출 영역이 증가했습니다. 보안은 공격 벡터를 최소화하고 보안 제어의 관리를 줄이기 위해 축소되고 포함된 노출 영역의 우선 순위를 지정합니다.
성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 구성 요소는 워크로드의 노출 영역을 증가합니다. 시스템에서 아직 사용되지 않는 방식으로 새 구성 요소를 보호해야 하며 종종 규정 준수 범위를 늘려야 합니다. 일반적으로 추가되는 구성 요소는 다음과 같습니다.
부하 평준화를 위한 메시지 버스
자동 크기 조정된 복제본에 대한 부하 분산 장치
캐시, 애플리케이션 배달 네트워크 또는 콘텐츠 배달 네트워크에 데이터 오프로드
백그라운드 작업 또는 클라이언트 컴퓨팅으로 처리 오프로드
절충: 구분 제거. 보안 기둥은 세분화된 보안 제어를 가능하게 하고 폭발 반경을 줄이기 위해 강력한 세분화의 우선 순위를 지정합니다.
밀도 향상을 통해 리소스를 공유하는 것은 효율성을 개선하기 위한 접근 방식입니다. 예를 들어 다중 테넌트 시나리오 또는 공통 애플리케이션 플랫폼의 아키텍처에서 서로 다른 애플리케이션을 결합하는 것이 있습니다. 밀도가 높아질수록 다음과 같은 보안 문제가 발생할 수 있습니다.
한 테넌트에서 다른 테넌트로 무단 횡적 이동의 위험이 증가했습니다.
최소 권한 원칙을 위반하고 액세스 로그의 개별 감사 내역을 모호하게 하는 공유 워크로드 ID입니다.
경계 보안 컨트롤(예: 네트워크 규칙)은 모든 공동 배치 구성 요소를 포함하도록 축소되어 개별 구성 요소에 필요한 것보다 더 많은 액세스 권한을 부여합니다.
더 큰 폭발 반경으로 인해 애플리케이션 플랫폼 호스트 또는 개별 구성 요소의 손상입니다. 이러한 증가는 공동 배치된 구성 요소에 더 쉽게 액세스할 수 있기 때문에 발생합니다.
서로 다른 구성 요소를 공동 배치하면 공유 호스트로 인해 규정 준수 범위에서 더 많은 구성 요소가 생성됩니다.
비용 최적화를 사용하여 성능 효율성 절충
절충: 수요에 대한 공급이 너무 많습니다. 비용 최적화와 성능 효율성은 모두 수요를 제공하기에 충분한 공급을 우선 순위로 갖습니다.
오버프로비전은 팀이 워크로드의 성능 문제를 완화하려고 할 때 위험합니다. 과잉 프로비전의 몇 가지 일반적인 원인은 다음과 같습니다.
- 팀이 최대 부하 예측에만 초점을 맞추고 워크로드 디자인에서 최고 부드러움을 위한 전략을 무시했기 때문에 초기 용량 계획이 잘못 판단되었습니다.
- 인시던트 대응의 문제 해결 단계에서 리소스를 확장 또는 축소합니다.
자동 크기 조정을 잘못 구성할 수 있습니다. 잘못 구성된 자동 크기 조정의 몇 가지 예는 다음과 같습니다.
- 최소한의 수요 변경 또는 연장된 쿨다운 기간으로 확장하면 수요에 필요한 것보다 더 많은 비용이 발생할 수 있습니다.
- 설정된 상한 없이 자동 크기 조정을 사용하면 시스템 오작동 또는 남용으로 인해 제어되지 않는 증가가 발생할 수 있으며 예상 워크로드 요구 사항을 초과할 수 있습니다.
여러 지역으로 확장하면 워크로드를 사용자에게 더 가깝게 만들어 성능을 향상시킬 수 있으며 임시 리소스 용량 제약 조건을 방지할 수 있습니다. 그러나 이 토폴로지에서는 복잡성과 리소스 중복도 추가됩니다.
절충: 더 많은 구성 요소. 한 가지 비용 최적화 기술은 밀도를 높이고 중복을 제거하고 기능을 공동 배치하여 적은 수의 리소스와 통합하는 것입니다.
성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 추가 구성 요소는 일반적으로 워크로드에 대한 전반적인 비용 증가로 이어지고 있습니다. 예를 들어 응답 시간을 개선하기 위해 애플리케이션 또는 콘텐츠 배달 네트워크에 부하 평준화 또는 오프로드 작업을 위한 메시지 버스를 포함할 수 있습니다.
리소스 구분을 사용하면 워크로드의 여러 부분이 고유한 성능 특성을 가질 수 있으므로 각 세그먼트에 대해 독립적인 튜닝이 가능합니다. 그러나 일반화된 단일 구성 요소가 아닌 여러 개의 최적화된 세그먼트가 필요하기 때문에 총 소유권 비용이 증가할 수 있습니다.
절충: 기능 요구 사항에 맞지 않는 항목에 대한 투자 증가. 비용 최적화에 대한 한 가지 방법은 배포된 솔루션에서 제공하는 값을 평가하는 것입니다.
프리미엄 서비스 및 SKU는 워크로드가 성능 목표를 충족하는 데 도움이 될 수 있습니다. 이러한 서비스는 일반적으로 더 많은 비용이 들며 추가 기능을 제공할 수 있습니다. 많은 프리미엄 기능이 성능 목표를 충족하는 데 특별히 사용되지 않는 경우 사용이 미달될 수 있습니다.
성능 워크로드에는 전송 및 저장해야 하는 관찰성을 위해 원격 분석 데이터가 필요합니다. 수집되는 성능 원격 분석의 증가는 원격 분석 데이터 전송 및 스토리지 비용을 증가시킬 수 있습니다.
성능 테스트 활동은 프로덕션 시스템의 값과 관련되지 않은 비용을 추가합니다. 성능 테스트 비용의 예는 다음과 같습니다.
- 성능 중심 테스트 전용 환경을 인스턴스화합니다.
- 특수한 성능 도구를 사용합니다.
- 테스트를 실행하는 데 시간을 할애합니다.
특수한 성능 최적화 작업을 위해 팀 구성원을 교육하거나 성능 튜닝 서비스에 대한 비용을 지불하면 워크로드 비용이 추가됩니다.
운영 우수성과 성능 효율성 절충
절충: 관찰 가능성 감소. 워크로드에 의미 있는 경고를 제공하고 성공적인 인시던트 대응을 보장하려면 가시성이 필요합니다.
다른 작업 대신 원격 분석 수집에 소요되는 처리 시간을 줄이기 위해 로그 및 메트릭 볼륨을 줄이면 시스템의 전반적인 관찰 가능성이 줄어듭니다. 결과 감소된 관찰 가능성의 몇 가지 예는 다음과 같습니다.
- 의미 있는 경고를 작성하는 데 사용되는 데이터 요소를 제한합니다.
- 인시던트 대응 활동에 대한 적용 범위의 간격으로 이어집니다.
- 보안에 민감하거나 규정 준수에 민감한 상호 작용 및 경계에서 관찰 가능성을 제한합니다.
성능 디자인 패턴이 구현되면 워크로드의 복잡성이 증가하는 경우가 많습니다. 구성 요소는 중요한 흐름에 추가됩니다. 워크로드 모니터링 전략 및 성능 모니터링에는 이러한 구성 요소가 포함되어야 합니다. 흐름이 여러 구성 요소 또는 애플리케이션 경계에 걸쳐 있는 경우 해당 흐름의 성능을 모니터링하는 복잡성이 증가합니다. 흐름 성능은 상호 연결된 모든 구성 요소 간에 상호 연결되어야 합니다.
절충: 작업의 복잡성이 증가합니다. 복잡한 환경에는 더 복잡한 상호 작용과 루틴, 임시 및 응급 작업으로 인한 부정적인 영향이 발생할 가능성이 높습니다.
밀도를 높여 성능 효율성을 향상하면 운영 작업의 위험이 높아집니다. 단일 프로세스의 오류는 큰 폭발 반경을 가질 수 있습니다.
성능 디자인 패턴이 구현되면 백업, 키 회전 및 복구 전략과 같은 운영 절차에 영향을 줍니다. 예를 들어 데이터 분할 및 분할은 팀이 이러한 작업이 데이터 일관성에 영향을 주지 않도록 하려고 할 때 일상적인 작업을 복잡하게 만들 수 있습니다.
절충: 문화 스트레스. 운영 우수성은 흠없음, 존중 및 지속적인 개선의 문화에 뿌리를 두고 있습니다.
성능 문제의 근본 원인 분석을 수행하면 수정이 필요한 프로세스 또는 구현의 결함이 식별됩니다. 팀은 연습을 학습 기회로 고려해야 합니다. 팀 구성원이 문제에 대한 비난을 받는 경우 사기에 영향을 미칠 수 있습니다.
루틴 및 임시 프로세스는 워크로드 성능에 영향을 줄 수 있습니다. 사용량이 적은 시간에 이러한 활동을 수행하는 것이 바람직하다고 여겨지는 경우가 많습니다. 그러나 사용량이 많은 시간은 이러한 작업을 담당하거나 숙련된 팀 구성원에게 불편하거나 정규 시간 외일 수 있습니다.
관련 링크
다른 핵심 요소에 대한 절충을 살펴봅니다.