성능 효율성 절충

오버프로비전하지 않고 성능 목표를 충족하는 워크로드가 효율적입니다. 성능 효율성의 목표는 항상 수요를 처리할 수 있는 충분한 공급을 제공하는 것입니다. 성능 효율성을 위한 주요 전략에는 코드 최적화, 디자인 패턴, 용량 계획 및 크기 조정의 적절한 사용이 포함됩니다. 명확한 성능 목표 및 테스트는 이 핵심 요소를 뒷받침합니다.

성능 목표를 협상하고 성능 효율성을 위해 워크로드를 디자인할 때 성능 효율성 디자인 원칙 에 따른 의사 결정과 성능 효율성에 대한 디자인 검토 검사 목록 의 권장 사항이 다른 핵심 요소의 목표 및 최적화에 영향을 줄 수 있는 방법을 고려합니다. 일부 성능 효율성 결정은 하나의 핵심 요소에 도움이 되지만 다른 요소에 대한 장단점이 됩니다. 이 문서에서는 성능 효율성을 위해 워크로드 아키텍처 및 작업을 디자인할 때 워크로드 팀이 발생할 수 있는 절충 사례에 대해 설명합니다.

성능 효율성과 안정성의 절충

절충: 복제 감소 및 밀도 증가. 안정성의 초석은 복제를 사용하고 오작동의 폭발 반경을 제한하여 복원력을 보장하는 것입니다.

  • 마지막 책임 있는 순간까지 크기 조정을 지연하여 효율성을 달성하는 워크로드는 수요를 밀접하게 충족하지만 예기치 않은 노드 오류 및 크기 조정 지연에 취약합니다.

  • 워크로드 리소스를 통합하면 초과 용량을 사용하고 효율성을 향상시킬 수 있습니다. 그러나 공동 배치된 구성 요소 또는 애플리케이션 플랫폼에서 오작동의 폭발 반경을 증가합니다.

  • 잉여 용량을 최소화하기 위해 스케일 인 또는 스케일 다운하면 사용량 급증 시 워크로드의 프로비전이 미달될 수 있으며, 이로 인해 공급 부족으로 인해 서비스 중단이 발생할 수 있습니다.

절충: 복잡성 증가. 안정성은 단순성을 우선합니다.

  • 자동 크기 조정을 사용하여 수요와 워크로드 공급의 균형을 맞추면 워크로드 토폴로지의 가변성이 도입되고 시스템이 안정적이 되도록 올바르게 작동해야 하는 구성 요소가 추가됩니다. 자동 크기 조정은 시작 및 중지와 같은 더 많은 애플리케이션 수명 주기 이벤트를 트리거하도록 합니다.

  • 데이터 분할 및 분할은 대규모 또는 자주 액세스하는 데이터 세트의 성능 문제를 방지하는 데 도움이 되지만 추가 리소스 간에 일관성을 유지해야 하므로 복잡성이 증가합니다.

  • 최적화된 액세스 패턴에 대한 데이터를 비정규화하면 성능이 향상될 수 있지만 데이터의 여러 표현을 동기화해야 하기 때문에 복잡성이 발생합니다.

  • 성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 구성 요소를 사용하면 워크로드의 노출 영역이 증가합니다. 그런 다음 전체 워크로드를 안정적으로 유지하기 위해 구성 요소 자체를 안정적으로 만들어야 합니다. 예를 들면 다음과 같습니다.

    • 중요한 상태 저장 구성 요소를 도입하는 부하 평준화를 위한 메시지 버스입니다.
    • 자동 크기 조정된 복제본을 위한 부하 분산 장치는 신뢰할 수 있는 운영과 복제본의 등록을 필요로 합니다.
    • 데이터를 캐시로 오프로드하는 경우 신뢰할 수 있는 캐시 무효화 방법이 필요합니다.

절충: 활성 환경에 대한 테스트 및 관찰. 프로덕션 시스템의 불필요한 사용을 방지하는 것은 안정성을 위한 자체 보존 및 위험 회피 접근 방식입니다.

  • 가상 트랜잭션 사용과 같은 활성 환경에서의 성능 테스트는 테스트 작업 또는 구성으로 인해 오작동을 일으킬 위험이 있습니다.

  • 워크로드는 팀이 활성 환경에서 학습할 수 있도록 하는 APM(애플리케이션 성능 모니터링) 시스템으로 계측되어야 합니다. APM 도구는 애플리케이션 코드 또는 호스팅 환경에 설치 및 구성됩니다. 도구의 부적절한 사용, 제한 초과 또는 잘못된 구성으로 인해 해당 기능과 유지 관리가 손상되어 안정성이 저하될 수 있습니다.

보안과의 성능 효율성 절충

절충: 보안 제어의 감소. 보안 제어는 심층 방어를 제공하기 위해 여러 계층에 걸쳐 설정되며, 때로는 중복적으로 설정됩니다.

한 가지 성능 최적화 전략은 처리 시간이 정당화되지 않을 때 흐름을 지연시키는 구성 요소 또는 프로세스를 제거하거나 우회하는 것입니다. 이 전략은 보안을 손상시킬 수 있으며 철저한 위험 분석이 필요합니다. 다음 예를 살펴 보십시오.

  • 전송 속도 향상을 위해 전송 중 또는 미사용 암호화를 제거하면 데이터가 잠재적 무결성 또는 기밀성 위반에 노출됩니다.

  • 보안 검색 또는 검사 도구를 제거하거나 줄여 처리 시간을 줄이면 해당 도구가 보호하는 기밀성, 무결성 또는 가용성이 손상될 수 있습니다.

  • 성능 영향을 제한하기 위해 보안 패치의 빈도를 줄이면 워크로드가 새로운 위협에 더 취약해질 수 있습니다.

  • 네트워크 대기 시간을 개선하기 위해 네트워크 흐름에서 방화벽 규칙을 제거하면 원치 않는 통신을 허용할 수 있습니다.

  • 더 빠른 데이터 처리를 위해 데이터 유효성 검사 또는 콘텐츠 안전 검사를 최소화하면 특히 입력이 악의적인 경우 데이터 무결성이 손상될 수 있습니다.

  • 예를 들어 IV(초기화 벡터)에서 암호화 또는 해시 알고리즘에 덜 엔트로피를 사용하는 것이 더 효율적이지만 암호화를 더 쉽게 해독할 수 있습니다.

절충: 워크로드 노출 영역이 증가했습니다. 보안은 공격 벡터를 최소화하고 보안 제어의 관리를 줄이기 위해 축소되고 포함된 노출 영역의 우선 순위를 지정합니다.

성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 구성 요소는 워크로드의 노출 영역을 증가합니다. 시스템에서 아직 사용되지 않는 방식으로 새 구성 요소를 보호해야 하며 종종 규정 준수 범위를 늘려야 합니다. 일반적으로 추가되는 구성 요소는 다음과 같습니다.

  • 부하 평준화를 위한 메시지 버스

  • 자동 크기 조정된 복제본에 대한 부하 분산 장치

  • 캐시, 애플리케이션 배달 네트워크 또는 콘텐츠 배달 네트워크에 데이터 오프로드

  • 처리 작업을 백그라운드 작업이나 클라이언트 컴퓨팅으로 오프로드하기

절충: 구분 제거. 보안 기둥은 세분화된 보안 제어를 가능하게 하고 폭발 반경을 줄이기 위해 강력한 세분화의 우선 순위를 지정합니다.

밀도 향상을 통해 리소스를 공유하는 것은 효율성을 개선하기 위한 접근 방식입니다. 예를 들어 다중 테넌트 시나리오 또는 공통 애플리케이션 플랫폼의 아키텍처에서 서로 다른 애플리케이션을 결합하는 것이 있습니다. 밀도가 높아질수록 다음과 같은 보안 문제가 발생할 수 있습니다.

  • 한 테넌트에서 다른 테넌트로 무단 횡적 이동의 위험이 증가했습니다.

  • 최소 권한 원칙을 위반하고 액세스 로그의 개별 감사 내역을 모호하게 하는 공유 워크로드 ID입니다.

  • 경계 보안 컨트롤(예: 네트워크 규칙)은 모든 공동 배치 구성 요소를 포함하도록 축소되어 개별 구성 요소에 필요한 것보다 더 많은 액세스 권한을 부여합니다.

  • 더 큰 폭발 반경으로 인해 애플리케이션 플랫폼 호스트 또는 개별 구성 요소의 손상입니다. 이러한 증가는 공동 배치된 구성 요소에 더 쉽게 액세스할 수 있기 때문에 발생합니다.

  • 서로 다른 구성 요소를 공동 배치하면 공유 호스트로 인해 규정 준수 범위에서 더 많은 구성 요소가 생성됩니다.

절충: 부실 보안 상태입니다. 보안 핵심 요소에는 시스템의 현재 상태를 반영하기 위한 권한 부여, 콘텐츠 및 신뢰 결정이 필요합니다.

캐싱 및 에지 배포는 복사본의 응답을 다시 검사하지 않고 제공하여 성능을 향상시킵니다. 복사본의 사용 시간이 길어지고 무효화 컨트롤이 약할수록 더 이상 보유하지 않는 보안 상태를 반영할 가능성이 높습니다. 사전 계산 결과는 비슷한 위험을 수반하지만 캐시와 달리 일반적으로 기본 제공 TTL 또는 무효화 메커니즘이 없으며 다음 계산 트리거가 실행될 때까지 부실 상태로 유지됩니다.

  • 캐시된 인증 토큰, 권한 부여 결정 또는 세션 데이터는 사용자가 비활성화되거나, 역할이 해지되거나, 토큰이 회전되거나, 클레임 또는 권한이 변경되었거나, 조건부 액세스 정책이 업데이트된 후 액세스를 허용할 수 있습니다. 해지와 캐시 만료 사이의 창은 무단 액세스 창입니다.

  • CDN, API 게이트웨이 캐시 또는 브라우저 캐시에서 배달된 콘텐츠는 원본에서 철회되거나 재분류된 데이터를 계속 제공할 수 있습니다. 법적 이유로 수정된 데이터는 원본에서 패치된 후에도 캐시된 응답에서 유지될 수 있습니다. 이 지속성은 데이터 처리, 보존 또는 개인 정보 요구 사항을 위반할 수 있습니다.

비용 최적화와 성능 효율성 간의 절충案

절충: 수요에 대한 공급이 너무 많습니다. 비용 최적화와 성능 효율성은 모두 수요를 제공하기에 충분한 공급을 우선 순위로 갖습니다.

  • 오버프로비전은 팀이 워크로드의 성능 문제를 완화하려고 할 때 위험합니다. 과잉 프로비전의 몇 가지 일반적인 원인은 다음과 같습니다.

    • 팀이 최대 부하 예측에만 초점을 맞추고 워크로드 디자인에서 최고 부드러움을 위한 전략을 무시했기 때문에 초기 용량 계획이 잘못 판단되었습니다.
    • 인시던트 대응의 문제 해결 단계에서 리소스를 확장 또는 축소합니다.
  • 자동 크기 조정을 잘못 구성할 수 있습니다. 잘못 구성된 자동 크기 조정의 몇 가지 예는 다음과 같습니다.

    • 최소한의 수요 변경 또는 연장된 쿨다운 기간으로 확장하면 수요에 필요한 것보다 더 많은 비용이 발생할 수 있습니다.
    • 설정된 상한 없이 자동 크기 조정을 사용하면 시스템 오작동 또는 남용으로 인해 제어되지 않는 증가가 발생할 수 있으며 예상 워크로드 요구 사항을 초과할 수 있습니다.
  • 여러 지역으로 확장하면 워크로드를 사용자에게 더 가깝게 만들어 성능을 향상시킬 수 있으며 임시 리소스 용량 제약 조건을 방지할 수 있습니다. 그러나 이 토폴로지에서는 복잡성과 리소스 중복도 추가됩니다.

절충: 더 많은 구성 요소. 한 가지 비용 최적화 기술은 밀도를 높이고 중복을 제거하고 기능을 공동 배치하여 적은 수의 리소스와 통합하는 것입니다.

  • 성능 중심 클라우드 디자인 패턴은 경우에 따라 추가 구성 요소를 도입해야 하는 경우가 있습니다. 이러한 추가 구성 요소는 일반적으로 워크로드에 대한 전반적인 비용 증가로 이어지고 있습니다. 예를 들어 응답 시간을 개선하기 위해 애플리케이션 또는 콘텐츠 배달 네트워크에 부하 평준화 또는 오프로드 작업을 위한 메시지 버스를 포함할 수 있습니다.

  • 리소스 구분을 사용하면 워크로드의 여러 부분이 고유한 성능 특성을 가질 수 있으므로 각 세그먼트에 대해 독립적인 튜닝이 가능합니다. 그러나 일반화된 단일 구성 요소가 아닌 여러 개의 최적화된 세그먼트가 필요하기 때문에 총 소유권 비용이 증가할 수 있습니다.

절충: 기능 요구 사항에 맞지 않는 항목에 대한 투자 증가. 비용 최적화에 대한 한 가지 방법은 배포된 솔루션에서 제공하는 값을 평가하는 것입니다.

  • 프리미엄 서비스 및 SKU는 워크로드가 성능 목표를 충족하는 데 도움이 될 수 있습니다. 이러한 서비스는 일반적으로 더 많은 비용이 들며 추가 기능을 제공할 수 있습니다. 많은 프리미엄 기능이 성능 목표를 충족하는 데 특별히 사용되지 않는 경우 사용이 미달될 수 있습니다.

  • 성능 워크로드에는 전송 및 저장해야 하는 관찰성을 위해 원격 분석 데이터가 필요합니다. 수집되는 성능 원격 분석의 증가는 원격 분석 데이터 전송 및 스토리지 비용을 증가시킬 수 있습니다.

  • 성능 테스트 활동은 프로덕션 시스템의 값과 관련되지 않은 비용을 추가합니다. 성능 테스트 비용의 예는 다음과 같습니다.

    • 성능 중심 테스트 전용 환경을 인스턴스화합니다.
    • 특수한 성능 도구를 사용합니다.
    • 테스트를 실행하는 데 시간을 할애합니다.
  • 특수한 성능 최적화 작업을 위해 팀 구성원을 교육하거나 성능 튜닝 서비스에 대한 비용을 지불하면 워크로드 비용이 추가됩니다.

운영 우수성과 성능 효율성 절충

절충: 관찰 가능성 감소. 워크로드에 의미 있는 경고를 제공하고 성공적인 인시던트 대응을 보장하려면 가시성이 필요합니다.

  • 원격 분석 수집에 대한 처리 시간을 줄이도록 로그 및 메트릭 볼륨을 줄이면 전반적인 관찰 가능성이 줄어듭니다. 예를 들면 다음과 같습니다.

    • 의미 있는 경고를 작성하기 위한 데이터 요소 수가 줄어듭니다.
    • 인시던트 대응 활동의 적용 부족.
    • 보안에 민감하거나 규정 준수에 민감한 상호 작용 및 경계에서 제한된 관찰 가능성
  • 성능 디자인 패턴은 중요한 흐름에 구성 요소를 도입하여 복잡성을 더하는 경우가 많습니다. 워크로드 모니터링 전략에는 이러한 구성 요소가 포함되어야 합니다. 흐름이 여러 구성 요소 또는 애플리케이션 경계에 걸쳐 있는 경우 성능은 모든 구성 요소 간에 상호 연결되어야 합니다.

절충: 작업의 복잡성이 증가합니다. 복잡한 환경에는 더 복잡한 상호 작용과 루틴, 임시 및 응급 작업으로 인한 부정적인 영향이 발생할 가능성이 높습니다.

  • 밀도를 높여 성능 효율성을 향상하면 운영 작업의 위험이 높아집니다. 단일 프로세스의 오류는 큰 폭발 반경을 가질 수 있습니다.

  • 성능 디자인 패턴이 구현되면 백업, 키 회전 및 복구 전략과 같은 운영 절차에 영향을 줍니다. 예를 들어 데이터 분할 및 분할은 팀이 이러한 작업이 데이터 일관성에 영향을 주지 않도록 하려고 할 때 일상적인 작업을 복잡하게 만들 수 있습니다.

절충: 문화 스트레스. 운영 우수성은 흠없음, 존중 및 지속적인 개선의 문화에 뿌리를 두고 있습니다.

  • 성능 문제의 근본 원인 분석을 수행하면 수정이 필요한 프로세스 또는 구현의 결함이 식별됩니다. 팀은 연습을 학습 기회로 고려해야 합니다. 팀 구성원이 문제에 대한 비난을 받는 경우 사기에 영향을 미칠 수 있습니다.

  • 루틴 및 임시 프로세스는 워크로드 성능에 영향을 줄 수 있습니다. 비혼잡 시간에 이러한 활동을 수행하는 것이 바람직하다고 자주 간주됩니다. 그러나 비혼잡 시간은 이러한 작업을 담당하거나 숙련된 팀 구성원에게는 불편하거나 비정규 시간일 수 있습니다.

다른 기둥에 대한 절충안을 살펴봅니다.