브라이트코브와 함께 세일즈포스 벌크 API 및 에이펙스 코드 사용

JESS R의 사진
JESS R
블로그 플레이스홀더 이미지

브라이트코브에서는 고객 정보를 관리하기 위해 Salesforce를 사용합니다. 영업, 계정 관리, 지원 및 재무 팀에서도 영업 리드에게 연락하고, 지원 사례를 추적하고, 사용 보고서를 생성하는 등 다양한 활동에 Salesforce를 사용합니다. 고객 데이터를 적시에 안정적으로 Salesforce에 계속 푸시하는 것이 비즈니스에 중요합니다.

저희 제품의 데이터 모델은 사용자와 계정 간의 다대다 관계를 지원합니다. 계정 개체는 대규모 조직 내의 조직 또는 부서를 나타내며, 사용자 개체는 하나 또는 여러 조직에서 근무하는 개인을 나타냅니다. Salesforce에서는 기본 제공 연락처 개체를 사용자 지정하여 Brightcove 서비스의 각 사용자를 나타내며, 계정을 나타내는 사용자 지정 개체인 BCAccount를 정의합니다(그림 1 참조).

그림 1

그림 1. 브라이트코브 서비스 및 Salesforce의 데이터 모델

몇 년 전에 Salesforce SOAP API와 쿼츠를 사용하여 데이터 동기화 기능을 구축했는데, 이 구현에서 몇 가지 문제점을 발견했습니다. 크게 두 가지 어려움이 있었습니다:

  • 채팅이 너무 많아서 속도가 느립니다. 시간당 700개의 개체만 Salesforce에 동기화할 수 있습니다.
  • 데이터 모델을 변경하려면 많은 노력이 필요합니다. 개체에 새 필드를 추가하려면 Salesforce에서 새 WSDL 파일을 내보내고 WSDL 파일에서 Java 클래스를 생성해야 합니다.

이러한 어려움을 고려하여 Salesforce 벌크 API와 Apex 코드를 사용하여 새로운 동기화 시스템을 구축하기로 결정했습니다. 새로운 구현은 RedLine이라는 데이터 푸시 엔진과 RedLine에서 푸시된 대량 데이터를 처리하기 위한 일련의 Salesforce Apex 클래스로 구성됩니다.

그림 2

그림 2. 새로운 데이터 동기화

RedLine은 경량 루비 웹 서버인 Sinatra를 사용하여 다른 브라이트코브 서비스와는 독립적인 독립형 서비스로 구축되었습니다. RedLine은 루퍼스 스케줄러를 사용하여 RESTful API를 통해 Brightcove에서 생성, 업데이트, 삭제된 개체를 주기적으로 쿼리합니다. 그런 다음 RedLine은 JSON 응답을 CSV로 변환하여 Salesforce에 일괄 요청으로 보냅니다. Salesforce는 대량 요청당 10,000개의 개체로 제한되어 있는데, 저희의 사용량에는 충분했습니다. 대량 요청은 Salesforce에서 비동기적으로 처리되기 때문에, 브라이트코브 서비스나 RedLine 모두 데이터를 Salesforce로 전송한 후 기다릴 필요가 없습니다.

사용자 및 계정 개체를 Salesforce 개체에 맞게 조정하는 등 대량 요청을 처리하기 위해 몇 가지 Apex 클래스를 작성한 다음, Apex 클래스를 Salesforce에 배포하고 데이터가 대량 요청으로 도착하면 이러한 클래스를 실행하도록 Apex 배치 작업을 예약했습니다. 이러한 방식으로, Brightcove 서비스에는 Salesforce 데이터 모델에 대한 코드가 존재하지 않으며, Salesforce Apex 코드만 Salesforce 데이터 모델을 처리하면 됩니다. Salesforce는 대량 요청과 Apex 배치 작업 모두를 위한 모니터링 도구 세트를 제공합니다.

대량 요청을 처리하는 동안 오류가 발생하면 Salesforce 웹 UI에서 쉽게 확인할 수 있습니다. 또한 대량 요청이 예상된 주기로 도착하는지 확인하기 위해 주기적으로 실행되고, 요청이 한동안 도착하지 않으면 알림을 보내는 Apex 클래스를 배포했습니다.

새로운 동기화 시스템에서 사용자 또는 계정 개체의 새 필드를 변경하려면 Salesforce 사용자 지정 개체에 새 필드를 추가한 다음 Brightcove 서비스 API의 JSON 응답에 새 필드를 노출하기만 하면 됩니다. RedLine은 일괄 요청 시 JSON의 새 필드를 CSV의 새 열로 변환할 수 있을 만큼 스마트하기 때문에 개체 형식 변경을 위해 RedLine을 변경하거나 다시 시작할 필요가 없습니다.

계정 개체에는 네 가지 변경 사항이 있었고 사용자 개체에는 한 가지 변경 사항이 있었는데, 이러한 변경 사항으로 인해 RedLine 코드를 한 줄도 변경할 필요가 없었습니다. 이전 SOAP API 기반 동기화 시스템의 경우 사용자 또는 계정 개체에 대한 새 필드를 동기화하는 데 1~2주가 걸리곤 했습니다.

이 새로운 동기화 애플리케이션을 8개월 동안 프로덕션 환경에서 실행한 결과, 몇 번의 데이터 버스트 변경을 원활하게 처리하는 것을 확인했습니다. 최근 배포 중에 900개의 계정이 일괄 변경되었는데, 모든 계정이 1분 이내에 Salesforce에 동기화되었습니다(대부분의 시간은 Salesforce에서 실행 중인 Apex 클래스에서 소요됨). 이전 동기화 시스템에서는 같은 양의 개체를 동기화하는 데 1시간 이상 걸리곤 했습니다.

공유 

태그

브라이트코브는 한 진단 장비 제조업체가 수업 시간과 비용을 줄이면서 성공을 개선할 수 있도록 지원했습니다.
브라이트코브는 가장 유명한 자동차 시장에서 방대한 레거시 비디오 라이브러리를 관리하고 수익을 창출할 수 있도록 지원합니다....
브랜드 무결성을 유지하기 위해 리테일 브랜드는 색상, 글꼴 등을 조정할 수 있는 맞춤형 동영상 플레이어가 필요합니다.

시작할 준비가 되셨나요?

브라이트코브로 영상 마케팅 성과와 ROI를 높이는 방법을 알아보세요. 지금 문의하시면 자세히 상담해드립니다.