Salesforce 데이터를 위한 타임머신 구축, 쉬운 방법

22274 단어 herokudevops
따라서 Salesforce 개체의 데이터에 대한 모든 변경 사항을 영원히 저장하고 싶습니까?



즉시 사용 가능한 도구와 약간의 코딩을 사용하여 타임머신을 구축한 방법과 몇 달 동안 테스트 데이터에서 실행한 후의 모습을 살펴보겠습니다.

먼저 테스트 데이터 환경에 대해: 임의로 생성된 계정 및 해당 계정과 연결된 기회가 있는 테스트 조직을 사용하고 있습니다. 또한 계정의 소규모 무작위 하위 집합을 변경하기 위해 몇 분마다 실행되는 서비스도 있습니다.

첫 번째 단계는 수집기 앱을 설정하는 것이었습니다. 이 앱은 모든 변경 사항을 메시지로 Kafka에 내보냅니다.
  • 비공개 공간에서 Heroku 앱 설정
  • Add a Heroku Private Postgres Database
  • 추가 Heroku Connect
  • Heroku Connect에서 동기화할 개체 선택 및 구성

  • 그런 다음 어딘가에 변경 사항을 스트리밍해야 했습니다.
  • 앱에 Heroku Private Kakfa 클러스터 추가
  • Heroku Connect 테이블
  • 을 가리키도록 Streaming Data Connector을 구성합니다.

    그런 다음 Salesforce 데이터를 Heroku Postgres로 미러링하고 데이터에서 CDC를 수행하고 변경 사항을 Kafka로 스트리밍했습니다.

    Node를 사용하여 Kakfa에서 이벤트 스트림을 수신하고 업데이트를 받아 Postgres의 테이블에 삽입하기로 결정했습니다.
  • 비공개 공간에서 또 다른 Heroku 앱 생성
  • 새 앱과 Kafka 추가 기능 공유
  • Heroku 개인 Postgres 데이터베이스 추가
  • Postgres 데이터베이스에 테이블을 생성하여 유효성 검사가 External_id__csfid 필드와 같은 항목에서 중복 값을 허용하도록 합니다.
  • Kafka에서 이벤트를 수신하는 코드를 작성하고 이벤트를 TARDIS ..um.. Postgres에 새 레코드로 삽입합니다.



  • 단일 Salesforce 조직의 많은 개체로 확장할 수 있을 뿐만 아니라 Work.com, Service Cloud 및 SalesCloud를 비롯한 많은 Salesforce 조직으로 확장할 수도 있습니다. 조직 전체에 대한 가시성을 쉽게 제공할 수 있을 뿐만 아니라 모든 변경 사항을 캡처하고 시간이 지남에 따라 레코드가 어떻게 진화했는지, 다른 조직에서 레코드가 서로 어떻게 관련되어 있는지 보고할 수 있습니다.

    이 모든 데이터 흐름이 있는 결과는 무엇입니까?

    컬렉터 앱을 보고 있습니다. 우리는 총 50,000개 이상의 계정을 보유하고 있으며 350MB의 데이터만 사용하고 있습니다. 임의로 계정을 선택하면 Postgres에서 해당 계정에 대한 최신 정보가 있음을 알 수 있습니다.

    ~  heroku pg:psql --app ggn-pg2k-test 
    
    --> Connecting to postgresql-rigid-10449
    psql (12.4)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    ggn-pg2k-test::DATABASE=> SELECT pg_size_pretty(pg_total_relation_size('"salesforce"."account"'));
     pg_size_pretty 
    ----------------
     349 MB
    (1 row)
    
    ggn-pg2k-test::DATABASE=> select count(*) from salesforce.account;
     count  
    --------
     501646
    (1 row)
    
    ggn-pg2k-test::DATABASE=> select name, sfid, score__c from salesforce.account 
    where External_id __c = '7f4acaad-6c77-4342-a533-83bb580aaf681586878813' ORDER BY score__ c;
    
               name | sfid | score__c 
    --------------------------+--------------------+----------
     Borer, Braun and Gutmann | 001f400001MDeYzAAL | 2
    (1 row)
    
    


    타임머신 앱으로 전환하면 동일한 데이터 소스에 총 88,577,70개의 레코드가 있으므로 저장된 레코드당 평균 160개 이상의 변경 사항이 있습니다. 단일 계정을 자세히 살펴보면 총 21개의 변경 사항을 볼 수 있습니다.

    모든 레코드 및 변경 사항에 대한 총 데이터 저장 공간은 4GB가 조금 넘었습니다.

    ~  heroku pg:psql --app pg2k-gregs-drain
    
    --> Connecting to postgresql-rugged-63570
    psql (12.4, server 12.3 (Ubuntu 12.3-1.pgdg16.04+1))
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    pg2k-gregs-drain::DATABASE=> SELECT pg_size_pretty(pg_total_relation_size('"account"'));
     pg_size_pretty 
    ----------------
     4274 MB
    (1 row)
    
    pg2k-gregs-drain::DATABASE=> select count(*) from account;
      count  
    ---------
     8857770
    (1 row)
    
    pg2k-gregs-drain::DATABASE=> select name, sfid, score__c, id from account 
    where External_id__c = '7f4acaad-6c77-4342-a533-83bb580aaf681586878813' ORDER BY id;
    
               name | phone | score__c | sfid | id    
    --------------------------+---------------------+----------+--------------------+---------
     Borer, Braun and Gutmann | 5555551212 | 1 | 001f400001MDeYzAAL | 33351
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 34165
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 34699
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 35523
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 376946
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 971802
     Borer, Braun and Gutmann | 967-160-7974 x6487 | 15 | 001f400001MDeYzAAL | 1041819
     Borer, Braun and Gutmann | 5555551212 | 15 | 001f400001MDeYzAAL | 3006621
     Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006628
     Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006634
     Borer, Braun and Gutmann | 1-151-183-4668 x379 | 5 | 001f400001MDeYzAAL | 3006648
     Borer, Braun and Gutmann | 5555551212 | 5 | 001f400001MDeYzAAL | 5140095
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140108
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140114
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5140120
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5390250
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 5620956
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7002900
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7031300
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7788503
     Borer, Braun and Gutmann | 504.976.9652 x047 | 2 | 001f400001MDeYzAAL | 7906202
    (21 rows)
    
    


    이 패턴은 Heroku Connect 또는 Heroku Postgres에 있는 테이블을 통해 Salesforce 개체에 사용할 수 있습니다. 보시다시피 설정하기가 매우 쉽습니다. 코딩만 하면 모든 업데이트를 가져와 대상 데이터베이스에 저장할 리스너를 만드는 것뿐입니다.

    이것이 바로 Heroku 플랫폼의 힘입니다. Heroku 플랫폼의 도구를 사용하여 데이터 및 기존 앱에서 강력한 작업을 수행하는 데 필요한 작업량을 줄입니다.

    좋은 웹페이지 즐겨찾기