가용성 및 성능 패턴
잘 설계된 신뢰성 → 고가용성 아키텍처에 대해 자세히 알아보기
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 비즈니스 영향 분석 | ✅ 비즈니스 성능별로 정의된 SLO(예: “기회 마감 플로: 기술 구성 요소별이 아닌 99.9% 가용성, p95 대기 시간이 2초 미만”) |
| 사용자 플로 문서 | ✅ 각 중요 사용자 플로에는 실제 사용자 환경과 연결된 가용성, 대기 시간, 처리량, 오류 비율, 복구 시간이 포함된 측정 가능한 SLO가 있습니다. |
| 아키텍처 결정 레코드 | ✅ 문서화된 근거가 있는 비즈니스 가동 중지 시간 영향 분석을 기반으로 하는 가용성 목표(예: 내부 배치 보고 99% 및 매출 크리티컬 주문 처리 99.95%) |
| SLO 사양 | ✅ 아키텍처 복잡성을 고려하여 현실적인 목표(99% = 표준 플랫폼 기능, 99.5% = 기본 중복 및 활성 모니터링, 99.9% = 다중 지역 인식 및 자동 페일오버, 99.95% = 활성-활성 패턴 및 혼란 테스트, 99.99% = 멀티 조직 아키텍처) |
| 플랫폼 문서 | ✅ 플랫폼 SLA보다 덜 엄격한 솔루션 SLO(예: 플랫폼 99.9% SLA → 솔루션 99.5% SLO) - 응용 프로그램 계층 실패에 대한 오류 예산 제공 |
| 모니터링 구성 | ✅ 플랫폼 도구를 통해 객관적으로 측정할 수 있는 SLI(서비스 수준 지표): Trust.salesforce.com 가동 시간, Experience Cloud 분석, 이벤트 모니터링 API 응답 시간, AsyncApexJob 완료 |
| 사용자 환경 메트릭 | ✅ SLO는 개별 API 가동 시간이 아닌 전체 사용자 여정(예: “사례 제출 플로: p95 사용자의 경우 5단계 모두가 8초 이내에 완료됨”)을 반영합니다. |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 아키텍처 문서 | ⚡️ “시스템이 빠르고 신뢰할 수 있어야 함”(측정할 수 없으며 아키텍처 결정을 내리지 않음) |
| SLO 사양 | ⚡️ “모든 작업에 99.999% 가동 시간이 필요합니다”(매출 운영과 내부 관리자 도구 간 비즈니스 크리티컬리티 차이를 무시하는 부적절한 비용) |
| 모니터링 전략 | ⚡️ 인프라스트럭처 CPU 모니터링(기본 SLI)(플랫폼 메트릭 설계자가 조치를 취할 수 없으며 사용자 대면 환경을 반영하지 않음) |
| 플랫폼 수용력 계획 | ⚡️ 솔루션 SLO는 99.9%의 플랫폼 SLA와 정확하게 일치합니다(응용 프로그램 계층 문제, 통합 실패 또는 계획된 서비스 점검에 대한 오류 예산 없음) |
| SLO 문서 | ⚡️ 사용자 대면 비즈니스 성능이 아닌 기술 구성 요소별로 정의된 SLO(구성 요소 가용성 필요하지만 사용자 환경 신뢰성에 충분하지 않음) |
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 지역 배포 전략 | ✅ 플랫폼이 관리하는 Hyperforce 이중화(다중 가용성 영역, 자동 인프라 페일오버)를 통한 단일 지역 배포는 대부분의 솔루션에 99.9%의 SLO를 제공합니다. |
| 다중 조직 아키텍처 | ✅ 비즈니스에 플랫폼 기능 이상의 보증 RPO/RTO, 규제 지리적 데이터 격리 또는 완전한 지역 독립(활성-패시브 또는 데이터 동기화 포함 활성-활성)가 필요한 경우에만 멀티 조직 패턴 |
| 데이터 복제 | ✅ 중요 데이터에 대한 변경 데이터 수집(직접 실시간 RPO, 분), 거의 실시간 비즈니스 이벤트에 대한 플랫폼 이벤트, 참조 데이터를 위한 예약 대량 API 2.0 추출(24시간 RPO) |
| 플랫폼 상태 모니터링 | ✅ Trust.salesforce.com 상태 알림 및 인스턴스별 상태 API를 구독하여 사고, 서비스 점검 기간 및 성능 영향에 대해 사전 예방적 대응 |
| 동적 로드 관리 | ✅ 솔루션은 성능 저하 시 비중요한 배치 처리를 줄이고 서비스 점검 기간 동안 백그라운드 작업을 지연하여 플랫폼 상태에 대응합니다. |
| 스케일 센터 사용 | ✅ 주간 스케일 센터 검토에서 비례하지 않은 리소스를 소비하는 장기 실행 트랜잭션 및 작업을 식별하여 사용자에게 영향을 미치기 전에 아키텍처를 수정할 수 있습니다. |
| 실패 감지 레이어 | ✅ 다단계 감지: 상태 API를 통한 플랫폼 실패, 시간 초과 모니터링을 통한 통합 실패, 예외 로깅을 통한 응용 프로그램 실패, 대기 시간 백분율을 통한 성능 저하, Proactive Monitoring 통한 수용력 경고 |
| 경고 임계값 | ✅ 오류 비율 패턴(예: 60초에 5개의 API 시간 초과) 또는 지속적인 저하, 분산 시스템에서 정상인 고립 실패가 아닌 경고 트리거 |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 다중 조직 설계 | 데이터 동기화, 사용자 프로비저닝, 배포 조정에 대한 운영 복잡성을 정당화하는 문서화된 비즈니스 요구 사항 없이 “대상에 맞게” 구현된 다중 조직 아키텍처 |
| 플랫폼 상태 모니터링 | ⚡️ Trust.salesforce.com 상태 알림을 무시하고, 사용자가 실패를 보고할 때 유지 보수 창을 검색합니다(예방적 대응 대신 반응) |
| 실패 감지 | ⚡️ 속도에 관계없이 모든 개별 오류에 대해 경고(중요한 신호를 숨기는 경고 피로 생성), 단일 API 시간 제한이 페이지 아웃 트리거(정상 분산 시스템 동작에 대한 과반응) |
| 데이터 복제 | ⚡️ 통합별 모니터링 없음, 사용자가 차단된 작업을 보고하는 경우(외부 시스템 상태에 대한 가시성 누락) 통합 실패만 발견 |
| 중복 전략 | 시간 초과 또는 대체가 없는 외부 보강 서비스에 대한 동기식 콜아웃(외부 서비스가 느리거나 사용할 수 없을 때 사용자가 차단됨) |
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 실제 사용자 모니터링(RUM) | ✅ 실제 네트워크 조건, 장치 성능, 지리적 분포를 반영하는 Experience Cloud 분석 또는 사용자 정의 계측을 통해 측정된 실제 사용자 대기 시간 |
| 합성 모니터링 | ✅ 사용자가 문제를 보고하기 전에 가용성 및 성능을 확인하는 여러 위치의 자동 트랜잭션(예: 3개 지역에서 15분 간격으로 주문 제출) |
| 트랜잭션 추적 | ✅ 지체 지점을 식별하는 단계당 타이밍이 표시된 다단계 작업(예: 총 대기 시간의 70%에 해당하는 3단계 주소 확인 콜아웃) |
| 쿼리 최적화 | ✅ 색인화된 필터를 사용하는 선택적 쿼리, 반올림 쿼리를 줄이는 관계 쿼리, 프로덕션 규모 데이터 볼륨을 사용하는 쿼리 최적화 프로그램 고려(10만 개 이상의 레코드에서 동작이 크게 변경됨) |
| 플랫폼 캐시 사용량 | ✅ 자주 액세스하는 참조 데이터를 제공하는 세션 또는 조직 캐시 파티션, 실시간 API를 사용할 수 없는 경우 사용되지 않지만 사용 가능한 데이터를 제공하는 성공적인 작업 중 미리 채워진 |
| 시간 초과 구성 | ✅ 사용자 대면 동기식 콜아웃 5-10초(응답형 UI), 백그라운드 비동기식 콜아웃 30-60초(변수 외부 성능), 배치 처리 120초(사용자 대기 없음), 트랜잭션당 여러 콜아웃 전반의 예산 합계 |
| 통합 대기 시간 모니터링 | ✅ SLO 및 끝점별 통합당 p50/p95/p99 지연 백분율, 지연 변칙(응답 시간이 위로 드리프트됨)은 완전한 실패 전에 수용력 채우기를 나타냅니다. |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 모니터링 전략 | ⚡️ 사용자 대면 플로 측정 없이 인프라 메트릭(서버 CPU, 네트워크 대역폭)만 모니터링(메트릭은 실제 사용자 환경을 반영하지 않음) |
| 캐시 전략 | ⚡️ 자주 액세스하는 참조 데이터에 대한 플랫폼 캐시 사용 없음(같은 데이터에 대한 쿼리 반복으로 대기 시간이 증가하고 SOQL 제한 사용) |
| 시간 초과 구성 | ⚡️ 사용자가 2분 동안 스피너를 로드하는 동안 눈을 돌리게 하는 120초 시간 제한이 있는 동기식 플로 콜아웃(대체와 함께 5-10초 시간 제한 사용해야 함) |
| 성능 테스트 | 최소 데이터 용량을 사용하는 소규모 테스트(소규모 결과가 잘못되게 만드는 10만 개 이상의 레코드에서 쿼리 최적화 프로그램 동작이 급격하게 변경됨) |
| 통합 설계 | ⚡️ 다단계 워크플로의 트랜잭션 수준 추적 없음(집계 메트릭에 표시되지 않는 병목 끝 단계) |
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 가로 크기 조정 패턴 | ✅ 여러 자원에 작업 부하 분포: 대량 처리 - 트랜잭션당 여러 레코드를 처리하고 비동기 처리 - 시간에 따른 작업 분포, 데이터 분할 - 경계에 걸친 부하 분포 |
| 배치 처리 구성 | ✅ 최적의 배치 크기 균형 처리량 및 총괄자 제한(배치 Apex 실행당 레코드 2,000개, 트리거 호출당 레코드 200개, 복합 API 호출당 25개의 요청) |
| API 요율 관리 | ✅ 통합 배치 및 캐싱은 API 소비를 줄이고, Edition별로 24시간 API 할당을 모니터링하며, 수용력 계획은 사용 중지 전에 라이센스를 추가하거나 증가를 제한합니다. |
| 동시 실행 | ✅ 분할된 데이터에 대한 병렬 배치 작업(동시에 실행되는 지역 롤업 배치 5개), 플랫폼 이벤트 구독자가 동시에 스트림을 처리합니다. |
| 대기열 깊이 모니터링 | ✅ 비동기 통합의 경우 대기열 깊이 추세는 수용력 증가 또는 처리량 최적화가 필요한 프로덕션 비율의 처리를 나타냅니다. |
| 볼륨 변칙 감지 | ✅ 예상 패턴보다 상당히 높거나 낮은 트랜잭션 볼륨은 조사 및 조절이 필요한 런어웨이 프로세스를 나타낼 수 있습니다. |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 배치 처리 | ⚡️ 데이터 용량에 분할된 병렬 실행이 필요한 경우 모든 레코드를 순차적으로 처리합니다(날짜 기반, 레코드 유형 기반 또는 소유자 기반 분할은 동시 처리를 활성화함). |
| API 사용 | ⚡️ 수용력 계획 없이 25% API 소비를 추가하는 통합 패턴(사용자에게 “API 제한 초과” 오류가 발생함) |
| 대기열 모니터링 | ⚡️ 비동기 통합 대기열 깊이 모니터링 안 함(가시성이 없으면 프로덕션 비율이 낮아짐) |
| 총괄자 제한 관리 | ⚡️ 힙 크기 또는 CPU 시간 제한에 도달하는 대용량 처리 동기 작업(전용 제한이 있는 비동기 처리로 전환해야 함) |
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 기능 중요성 계층 | ✅ 정의된 계층: 중요(매출/규정 준수, 성능 저하 없음), 중요(핵심 워크플로, 주요 사고 중에만 성능 저하), 지원(고급 경험, 통합 실패 시 비활성화), 옵션(유용하지 않음, 고부하 경우 비활성화) |
| 회로 차단기 구현 | ✅ 회로 상태(마감됨 = 정상, 열림 = 임계값 직후 실패, 반 열림 = 복구 프로브), 플랫폼 캐시 저장 상태, 플랫폼 이벤트 브로드캐스트 변경 사항, 연속 실패 후 열기(예: 실패 10개) |
| 재시도 논리 | ✅ 임시 실패(1s, 2s, 4s, 8s, 30~60s)에 대한 기하급수 백오프, 백오프를 사용하여 네트워크 시간 초과 및 5xx 오류 재시도, 재시도 후 머리글 후 429 속도 제한 재시도, 동일한 트랜잭션에서 클라이언트 4xx 오류 또는 총괄자 제한 오류를 다시 시도하지 마십시오. |
| 대체 전략 | ✅ 대체 데이터 소스(실시간 API를 사용할 수 없는 경우 플랫폼 캐시), 기본 동작(개인화 서비스가 중단된 경우 표준 규칙), 수동 프로세스(고정 트랜잭션을 위한 관리자 인터페이스), 재시도 대기열(72시간 재생되는 플랫폼 이벤트) |
| 오류 처리 아키텍처 | ✅ 빠르게 실패(입력 유효성 검사 시), 정상적으로 실패(확인에 실패한 레코드 3개 중 200개 중 197개 프로세스), 정보에 따른 실패(트랜잭션 ID, 사용자 컨텍스트, 스택 추적 포함 로그), 안전하게 실패(일부 트랜잭션 롤백, 사용자에게 내부 정보를 노출하지 않음) |
| 복구 자동화 | ✅ 플랫폼 모니터링은 자동 복구를 트리거합니다. 비동기식 재시도 메커니즘, 실패한 처리를 위한 사전 처리 대기열, 수동 개입 없이 신속한 복구를 지원하는 자체 복구 워크플로 |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 통합 종속성 | ⚡️ 외부 주소 확인 서비스가 다운되었을 때 주문 제출이 완전히 실패합니다(지원 기능으로 중요한 플로가 차단되었으므로 수동 검토 시 정상적으로 성능이 저하되어야 함) |
| 회로 차단기 전략 | ⚡️ 외부 콜아웃에 회로 차단기가 없으므로 외부 시스템이 다운되면 모든 트랜잭션이 시간 초과에 대해 120초를 기다립니다(일부 통합 실패로 인한 모든 사용자 영향) |
| 재시도 논리 | ⚡️ 동일한 트랜잭션 컨텍스트에서 즉시 Apex CPU 제한을 초과한 오류를 다시 시도합니다(다시 실패; 전용 제한이 있는 비동기 작업으로 다시 대기열 지정해야 함) |
| 재시도 논리 | 성공할 때까지 무기한 재시도(무제한 루프 위험, 트랜잭션이 완료되지 않음, 최대 재시도 횟수 제한) |
| 오류 처리 | ⚡️ 시험 포착 블록은 로깅 없이 예외를 삼키며(진단 및 치료를 방지하는 연산자에게 표시되지 않는 실패) |
| 오류 처리 | ⚡️ Lightning 페이지에서 최종 사용자에게 스택 추적 표시(보안 위험이 구현 세부 사항을 드러내고 사용자 경험이 부족함) |
| 대체 전략 | ⚡️ 세금 계산 서비스가 모든 주문 제출을 차단하지 못함(대체 기능 없음, 수동 처리를 위해 대기열에 지정하거나 기본 비율을 사용해야 함) |
패턴
| 찾을 위치 | 유사성 |
|---|---|
| 건강 모델링 | ✅ 집계 건강 상태: 서비스 건전성(트랜잭션 성공률 >99.5% 녹색, 98-99.5% 노란색, <98% 빨간색), 통합 건전성(전체 응답 녹색, 저하된 노란색, 회로 차단기가 빨간색 열림), 데이터 건전성(동기화 전류 녹색, 노란색 뒤, 오래된/실패한 빨간색), 수용력 건전성(<70% 녹색, 70-85% 노란색, >85% 빨간색) |
| 이벤트 모니터링 | ✅ EventLogFile 객체는 24시간/1시간 전달을 외부 SIEM으로 라우팅하여 네이티브 보존 한도를 넘어 보존합니다. API 호출, 페이지 보기, 보고서 내보내기, 로그인 활동, Apex 실행을 캡처합니다. |
| Proactive Monitoring 경고 | ✅ 지속적인 평가 영역 API 요청 제한 증가(75% 임계값 트리거 조사), 동시 Apex 실행 실패, SOQL 행 제한 문제, 스토리지 사용 추세 |
| 통합 상태 대시보드 | ✅ 통합별 메트릭: 오류 비율(<1% 대상), 지연 시간 p50/p95/p99 및 SLO, 시간 초과 비율(<0.1% 대상), 회로 차단기 상태, 비동기 대기열 깊이, 요청 ID, 끝점, 응답 코드, 기간이 포함된 구조화된 로그 |
| 실천 가능한 경고 설계 | ✅ 모든 경고는 응답자, 확인자, 수정 방법을 정의합니다. 임계값 크로스, 현재 값, 최근 추세, 대시보드 링크, 실행북 링크, 긴급성과 일치하는 심각도(사용자 영향에 대한 중요 페이지 호출, 추세 문제에 대한 경고 이메일)를 포함합니다. |
| 변칙 감지 | ✅ 볼륨 변칙(일반적인 로드의 300%), 오류 비율 변칙(5% 임계값 미만인 경우에도 일반적으로 2% vs. 0.5%), 지연 드리프트(단계적으로 증가하는 추세), 동작 변칙(일반적이지 않은 로그인 패턴, 일정 외 배치 작업), 즉시 에스컬레이션을 트리거하지 않는 조사 지침에 사용됨 |
안티 패턴
| 찾을 위치 | 불만 사항 |
|---|---|
| 이벤트 모니터링 | ⚡️ 이벤트 모니터링이 활성화되었지만 내보내지 않았습니다(트렌드 분석을 위해 네이티브 보존이 부족하고 내역 데이터가 손실됨) |
| 경고 설계 | 컨텍스트, 임계값 또는 응답 작업이 없는 “오류 발생” 경고 메시지(경고 피로 발생, 연산자가 효율적으로 정렬할 수 없음) |
| 경고 심각도 | ⚡️ 모든 변칙을 중요 경고로 처리합니다(높은 위양성 비율로 인해 경고 피로가 발생하여 중요 경고가 누락됨) |
| 건강 모니터링 | ⚡️ 집계 상태 모델 없음, 개별 기술 메트릭으로 압도된 연산자의 교차 시스템 패턴 누락 |
| 통합 모니터링 | ⚡️ 통합별 오류 비율, 대기 시간 또는 차단기 상태 추적 없음(사용자 보고서를 통해 대응적으로 발견된 통합 실패) |
| 수용력 모니터링 | Proactive Monitoring 또는 Scale Center 검토 없음(자원 집약 거래의 신뢰성 위험은 생산에 영향을 미치기 전까지 감지되지 않음) |
인라인 예제 및 자세한 지침은 신뢰도 기둥을 참조하거나 Patterns 및 Anti-Patterns 탐색기를 탐색하십시오.