과도한 프로비저닝 없이 성능 목표를 충족하는 워크로드는 효율적입니다. 성능 효율성을 위한 핵심 전략에는 코드 최적화, 디자인 패턴, 용량 계획을 적절히 활용하는 것이 포함됩니다. 명확한 성과 목표와 테스트가 이러한 기둥을 뒷받침합니다.
작업 부하의 설계 단계에서는 성능 효율성 설계 원칙 과 성능 효율성을 위한 설계 검토 체크리스트 의 권장 사항에 따른 결정이 다른 기둥의 목표와 최적화 노력에 어떤 영향을 미칠 수 있는지 고려하는 것이 중요합니다. 어떤 결정은 일부 기둥에는 이로울 수 있지만, 다른 기둥에는 상충을 초래할 수 있습니다. 이 문서에서는 성능 효율성을 위해 워크로드 아키텍처와 운영을 설계할 때 워크로드 팀이 직면할 수 있는 예시적인 상충 관계를 나열합니다.
성능 효율성과 신뢰성의 균형
트레이드오프: 복제 감소 및 밀도 증가. 신뢰성의 초석은 복제를 사용하고 오작동의 폭발 반경을 제한하여 복원력을 보장하는 것입니다.
- 작업 부하 리소스를 통합하면 여유 용량을 활용하고 효율성을 높일 수 있습니다. 그러나 이로 인해 함께 배치된 구성 요소나 애플리케이션 플랫폼의 오류로 인한 폭발 반경이 증가합니다.
상충 관계: 복잡성 증가. 신뢰성은 단순성을 우선시합니다.
데이터 분할 및 샤딩은 대규모 또는 자주 액세스되는 데이터 세트에서 성능 문제를 방지하는 데 도움이 됩니다. 그러나 이러한 패턴을 구현하면 추가적인 리소스에서 (최종) 일관성을 유지해야 하므로 복잡성이 증가합니다.
최적화된 액세스 패턴에 맞게 데이터를 비정규화하면 성능을 향상시킬 수 있지만, 여러 데이터 표현을 동기화해야 하므로 복잡성이 발생합니다.
성능 중심의 클라우드 설계 패턴은 때때로 추가 구성 요소의 도입을 필요로 합니다. 이러한 구성요소를 사용하면 작업물의 표면적이 늘어납니다. 그러면 전체 작업 부하를 안정적으로 유지하기 위해 구성 요소 자체도 안정적으로 만들어야 합니다.
트레이드오프: 활성 환경에서 테스트하고 관찰합니다. 불필요한 프로덕션 시스템 사용을 피하는 것은 신뢰성을 위한 자체 보존 접근 방식입니다.
활성 환경에서 성능 테스트를 실시하면 테스트 작업이나 구성으로 인해 오작동이 발생할 위험이 있습니다.
팀이 활성 환경에서 학습할 수 있도록 하는 애플리케이션 성능 모니터링(APM) 시스템을 워크로드에 적용해야 합니다. APM 툴링은 애플리케이션 코드나 호스팅 환경에 설치되고 구성됩니다. 도구를 부적절하게 사용하거나, 제한을 초과하거나, 잘못 구성하면 도구의 기능과 유지 관리가 손상될 수 있으며, 잠재적으로 신뢰성이 훼손될 수 있습니다.
보안과 관련된 성능 효율성의 균형
상충 관계: 보안 제어 감소. 보안 제어는 심층적인 방어를 제공하기 위해 여러 계층에 걸쳐, 때로는 중복적으로 구축됩니다.
성능 최적화 전략 중 하나는 흐름 지연에 기여하는 구성 요소나 프로세스를 제거하거나 우회하는 것입니다. 특히 처리 시간이 정당화되지 않는 경우 더욱 그렇습니다. 그러나 이러한 전략은 보안을 손상시킬 수 있으므로 철저한 위험 분석이 수반되어야 합니다. 다음 예를 살펴 보십시오.
전송 속도를 높이기 위해 전송 중이나 저장 중에 암호화를 제거하면 데이터가 잠재적으로 무결성이나 기밀성 위반에 노출될 수 있습니다.
처리 시간을 줄이기 위해 보안 스캐닝이나 검사 도구를 제거하거나 줄이면 해당 도구가 보호하는 기밀성, 무결성 또는 가용성이 손상될 수 있습니다.
네트워크 지연 시간을 개선하기 위해 네트워크 흐름에서 방화벽 규칙을 제거하면 원치 않는 통신이 허용될 수 있습니다.
더 빠른 데이터 처리를 위해 데이터 검증을 최소화하면, 특히 입력 내용이 악성인 경우 데이터 무결성이 손상될 수 있습니다.
트레이드오프: 작업 표면적 증가. 보안은 공격 벡터를 최소화하고 보안 제어 관리를 줄이기 위해 작업 표면적을 줄이고 제한하는 것을 우선시합니다.
성능 중심의 클라우드 설계 패턴은 때때로 추가 구성 요소의 도입을 필요로 합니다. 이러한 구성요소는 작업 부하의 표면적을 증가시킵니다. 새로운 구성 요소는 시스템에서 이미 사용되지 않는 방식으로 보안이 필요하며, 규정 준수 범위가 늘어나는 경우가 많습니다. 일반적으로 추가되는 다음과 같은 구성 요소를 고려해 보세요.
각 작업의 성능 요구 사항에 따라 클라우드 흐름 및 로우코드 플러그인과 같은 비즈니스 로직을 처리하는 여러 가지 방법을 소개합니다.
백그라운드 작업이나 클라이언트 컴퓨팅에 처리 작업을 오프로드합니다.
트레이드오프: 세분화 제거. 보안 기둥은 세분화된 보안 제어를 활성화하고 폭발 반경을 줄이기 위해 강력한 세분화를 우선시합니다.
자원을 공유하는 것은 효율성을 개선하는 접근 방식입니다. 밀도를 높여 용량 사용을 최적화합니다. 예를 들어, 여러 캔버스 앱과 클라우드 흐름에서 로우코드 플러그인을 재사용합니다. 밀도가 증가하면 다음과 같은 보안 문제가 발생할 수 있습니다.
최소 권한의 원칙을 위반하고 액세스 로그에서 개별 감사 추적을 흐리게 만드는 공유 워크로드 ID입니다.
예를 들어, 네트워크 규칙과 같은 경계 보안 제어는 모든 공동 배치 구성 요소를 포괄하도록 축소되어 개별 구성 요소에 필요 이상으로 액세스 권한을 부여합니다.
운영 우수성과 성과 효율성의 균형
트레이드오프: 관찰성 감소 모니터링은 작업 부하에 의미 있는 경고를 제공하고 성공적인 사고 대응을 보장하는 데 필요합니다.
원격 측정 데이터를 수집하는 데 소요되는 처리 시간을 줄이기 위해 로그와 메트릭 볼륨을 줄이면 시스템의 전반적인 관찰성이 감소합니다. 관찰성이 감소한 결과로 인한 몇 가지 예는 다음과 같습니다.
- 의미 있는 알림을 구축하는 데 사용되는 데이터 포인트가 제한됩니다.
- 이로 인해 사고 대응 활동의 적용 범위에 차이가 발생합니다.
- 보안이나 규정 준수에 민감한 상호작용과 경계의 관찰성을 제한합니다.
성능 설계 패턴을 구현하면 작업 부하의 복잡성이 증가하는 경우가 많습니다. 구성 요소는 중요한 흐름에 추가됩니다. 작업 부하 모니터링 전략과 성능 모니터링에는 해당 구성 요소가 포함되어야 합니다. 흐름이 여러 구성 요소나 애플리케이션 경계에 걸쳐 있는 경우 해당 흐름의 성능을 모니터링하는 복잡성이 증가합니다. 흐름 성능은 상호 연결된 모든 구성 요소에서 상관관계가 있어야 합니다.
상충 관계: 운영의 복잡성 증가. 복잡한 환경에서는 상호작용이 더 복잡해지고 일상적, 임시적, 비상 운영으로 인해 부정적인 영향을 받을 가능성이 더 높습니다.
밀도를 높여 성과 효율성을 개선하면 운영 작업의 위험도 높아집니다. 단일 프로세스에서 발생한 오류는 큰 파장을 일으킬 수 있습니다.
성능 설계 패턴이 구현되면 백업, 키 로테이션, 복구 전략과 같은 운영 절차에 영향을 미칩니다. 예를 들어, 팀이 해당 작업이 데이터 일관성에 영향을 미치지 않도록 보장하려고 할 때 데이터 분할 및 샤딩은 일상적인 작업을 복잡하게 만들 수 있습니다.
균형: 문화적 스트레스. 운영적 우수성은 비난 없음, 존중, 지속적인 개선의 문화에 뿌리를 두고 있습니다.
성과 문제에 대한 근본 원인 분석을 실시하면 수정이 필요한 프로세스나 구현의 결함을 파악할 수 있습니다. 팀은 이 연습을 학습의 기회로 생각해야 합니다. 팀원들이 문제에 대한 비난을 받으면 사기가 저하될 수 있습니다.
일상적이고 임시적인 프로세스는 작업 성능에 영향을 미칠 수 있습니다. 이런 활동은 주로 비수요시간대에 하는 것이 더 좋다고 여겨진다. 그러나 비수요 시간대는 이런 업무를 담당하거나 이에 능숙한 팀원들에게 불편하거나 정규 근무 시간에서 벗어나는 경우가 될 수 있습니다.
경험 최적화를 통한 성능 효율성 균형
트레이드오프: 사용자 참여 감소. 경험 최적화 기둥은 보다 매력적인 사용자 경험을 우선시합니다.
성능 최적화는 사용자 정의보다 플랫폼 기능 사용을 우선시하는 반면, 사용자 정의 구성 요소는 더욱 매력적인 사용자 경험을 제공할 수 있으므로 우선순위가 낮습니다.
성능을 최적화하면 복잡성을 최소화하는 데 너무 집중하게 되어, 사용자 정의 구성 요소 및 통합과 같은 더욱 매력적인 사용자 경험을 위한 기능의 우선순위가 낮아질 수 있습니다.
사용자 인터페이스 개발은 종종 더 빠른 반복과 출시 주기로 이루어지므로 지속적으로 성능을 향상하는 것이 어려울 수 있습니다.