이 텍스트는 Salesforce의 자동 번역 시스템을 사용하여 번역되었습니다. 이 콘텐츠에 대한 피드백을 제공하고 다음에 원하는 내용을 알려주려면 저희의 설문 조사을 참조하십시오.

Salesforce Customer 360 플랫폼은 각각의 Salesforce 테넌트 인스턴스("org")에 강력한 다중 테넌트 메타데이터 기반 아키텍처를 제공합니다. 이 아키텍처 기본 사항 문서는 Salesforce Platform의 기본 아키텍처가 플랫폼에 구축된 솔루션 아키텍처에 대한 주요 고려 사항을 만드는 영역에 대한 개요를 제공합니다.

Salesforce Platform에서 아키텍처를 설계할 때 이해해야 할 세 가지 필수 영역이 있습니다.

Salesforce Platform에서 코드 실행 및/또는 데이터베이스 작업을 통해 트랜잭션을 인스턴스화할 수 있습니다. Salesforce의 아키텍처를 위한 기본적인 역량은 플랫폼이 테넌트에 대한 트랜잭션을 정의하고 제어하는 방식을 이해하는 것입니다. 모든 테넌트에 대한 리소스를 유지하기 위해 Salesforce는 모든 테넌트에 트랜잭션별 및 조직별로 계산되는 제한을 적용합니다.

트랜잭션 수준에서 Salesforce는 코드 실행의 개별 인스턴스와 데이터베이스 트랜잭션이 공유 컴퓨팅 리소스를 독점하지 않도록 관리자 및 실행 제한을 설정합니다. 조직 전체 수준에서 Salesforce는 판매 및 기능 유형을 기반으로 제한을 설정합니다. 조직 전체 제한에는 API 제한이 적용되는 조직의 모든 트랜잭션에서 API 사용량이 순차적으로 계산됩니다.

Salesforce Platform에서 트랜잭션의 두 가지 핵심 부분인 실행 컨텍스트 및 데이터베이스 조작을 자세히 살펴보겠습니다.

Salesforce는 실행 컨텍스트의 개념을 기반으로 트랜잭션 제한을 계산합니다. Salesforce 응용 프로그램의 경우 단일 Salesforce 조직 내에서 사용자 정의 코드 실행에만 해당하는 것은 아닙니다. 실행 컨텍스트는 플랫폼 런타임 엔진을 기반으로 하며 특정 테넌트의 런타임 엔진에서 사용할 수 있는 모든 코드를 기반으로 합니다. 즉, 테넌트 조직 내에 정의된 사용자 정의 코드, 해당 조직과 함께 설치된 패키지의 코드, Salesforce Platform 서비스 내에 포함된 코드 모두 트랜잭션을 인스턴스화할 수 있습니다. 플랫폼은 다양한 종류의 Apex 코드를 구분하고 이러한 구분을 기반으로 총괄자 제한을 계산합니다.

Apex 트랜잭션 제한에 대한 자세한 내용은 Apex 개발자 가이드를 참조하십시오.

트랜잭션에 데이터베이스 조작이 포함된 경우 내장된 실행 순서에 따라 조직 구성 및 코드의 다른 부분이 어떻게 작동하는지 명시됩니다. Salesforce 응용 프로그램에서 실행 순서를 올바르게 사용하는 방법을 이해하는 핵심은 이 동작이 Salesforce 응용 프로그램에 제공하는 강력한 데이터 무결성을 이해하는 것입니다.

Salesforce Order of Execution Diagram

플랫폼은 데이터베이스 작업 상태에 대한 컨텍스트 변수를 트리거 컨텍스트 변수 형태로 노출합니다. 이러한 트리거 컨텍스트 변수는 Salesforce 조직에서 사용자 정의 Apex 트리거가 정의되었는지 여부와 관계없이 모든 데이터베이스 트랜잭션의 런타임 상태를 설명한다는 점을 이해하는 것이 중요합니다. Salesforce 플로와 같은 선언적 도구에 사용할 수 있습니다.

Salesforce에서는 실행 순서에 설명된 트리거 동작이 완료될 때까지 데이터가 커밋되지 않으며 데이터 트랜잭션도 완료되지 않습니다. 즉, 데이터 트랜잭션 중 컨텍스트 이전 또는 컨텍스트 이후에서 발생하는 모든 치명적인 오류 또는 비활성화 동작은 플랫폼이 트랜잭션 내의 모든 데이터 작업을 롤백하게 할 수 있습니다. 레코드 데이터에 대한 요청된 변경 사항은 데이터베이스에 적용되지 않으며 커밋 후 논리가 실행되지 않습니다. (Apex는 저장점 및 롤백 동작을 보다 세분화할 수 있도록 데이터베이스 방법을 공개합니다.)

Salesforce 아키텍처에서 피해야 할 핵심 안티 패턴은 플랫폼의 내장된 실행 순서를 줄이거나 대체하려는 것입니다.

이러한 내장형 데이터 무결성 동작의 논리에 대해 자세히 알아보려면 내부 및 외부를 참조하십시오. Salesforce Engineering 블로그의 트랜잭션

Salesforce 조직 내에서 사용자 정의 및 확장 방법을 선택할 때 Salesforce Platform의 관점에서 데이터로 간주되는 항목과 메타데이터로 간주되는 항목을 이해하는 것이 중요합니다. 이 데이터/메타데이터 구분의 기본 아키텍처에 대해 자세히 알아보려면 플랫폼 멀티테넌트 아키텍처 기본 문서에서

이 차별화는 애플리케이션의 개발 수명 주기의 여러 측면에 영향을 미칩니다. 예를 들어, 아티팩트가 샌드박스 개발 환경으로 복제되는지 여부, 다른 환경으로 마이그레이션되는지 여부, 패키지의 일부가 될 수 있는지 여부입니다.

아래 표는 응용 프로그램 수명 주기의 주요 부분과 관련된 데이터 성능과 메타데이터의 성능을 빠르게 비교합니다.

동작 데이터 메타데이터
프로덕션에서 Sandbox 환경으로 복사됨 아니요*
메타데이터 API로 마이그레이션 아니요 예**
데이터 로드별 마이그레이션 아니요
패키지에 포함할 수 있음 아니요 예**
데이터 저장소 제한에 포함됩니다. 아니요
*전체 사본 및 부분 사본 Sandbox는 프로덕션에서 데이터를 복제할 수 있습니다.
** 일부 메타데이터 유형은 메타데이터 API 및/또는 패키지와 함께 사용할 수 없습니다. 예외는 메타데이터 적용 범위 보고서에서 확인할 수 있습니다.

이러한 차이점은 간혹 명확합니다. 예를 들어 Salesforce 조직의 개별 레코드는 데이터입니다. 조직의 다양한 개체는 메타데이터입니다.

조직 구성 기능에 대한 차별은 더욱 복잡할 수 있습니다. 주요 예는 사용자 정의 설정사용자 정의 메타데이터 유형입니다. 두 기능 모두 조직에서 정보를 구성하여 런타임 시 쉽게 사용할 수 있으며 데이터베이스 레코드와 유사한 방식으로 조작하고 관리할 수 있습니다. 두 기능 모두 코드 및 자동화에서 유연하게 결합된 고유한 디자인 패턴을 허용하도록 고안되었습니다. 그러나 사용자 정의 설정은 조직에 데이터로 저장되고 사용자 정의 메타데이터 유형은 메타데이터로 저장됩니다.

메타데이터 적용 범위 보고서에 표시되는지 확인하여 해당 항목이 메타데이터인지 확인할 수 있습니다. 이 보고서에서는 특정 유형의 메타데이터에 대한 주요 개발 및 배포 동작도 설명합니다.

많은 Salesforce Platform API가 있습니다. Salesforce Platform API는 다양한 데이터 형식 및 프로토콜, 다양한 작업 유형 및 타이밍을 지원합니다. 일부 API를 사용하면 Salesforce 조직의 데이터와 상호 작용할 수 있으며, 다른 API는 지정된 조직의 메타데이터와 상호 작용을 지원합니다. 일부 API는 대규모 트랜잭션 볼륨을 처리하기 위해 특별히 구축되지만, 다른 API는 그렇지 않습니다. Salesforce는 릴리스마다 모든 Salesforce Platform API에 대한 버전 번호를 업데이트합니다.

솔루션 애플리케이션 아키텍처의 핵심 부분은 애플리케이션 개발자가 지정된 사용 사례에 대해 올바른 API를 사용하는 것입니다. Salesforce 조직의 내장된 API 제한을 고려해야 합니다. 이러한 제한은 많은 경우 버전 및 기능 활성화에 따라 결정됩니다. Salesforce Platform API는 뒤로 호환되는 사용을 지원합니다. 즉, 새 API 버전이 릴리스되는 경우에도 특정 버전의 구현을 안정적이고 일관적으로 수행해야 합니다. 새 API 버전에서 신규 또는 변경된 기능을 통합하려는 경우 새 API 버전에 대한 참조를 업그레이드하기 전에 앱을 리팩터링해야 할 수 있습니다.

Salesforce API 버전의 속도와 함께 다양한 Salesforce Platform API는 Salesforce API를 사용하는 응용 프로그램의 수명 주기에 상당한 복잡성을 추가합니다. 응용 프로그램에서 Salesforce Platform API 참조를 정기적으로 평가할 계획을 세우고 계획된 API 서비스 점검 주기의 우선 순위를 지정하여 응용 프로그램이 예측 가능하고 올바르게 실행되도록 유지해야 합니다.