
[ã€ãã³ãé§ååã¢ãŒããã¯ãã£] Salesforce ã®æäŸããã€ãã³ãæ©èœ
ååããéããããŠããŸããŸãããç¶ãã§ããä»åã¯ãã€ãã³ãé§åã®å®éã®æ§æããSalesforce ã§æäŸããã€ãã³ãæ©èœã«ã€ããŠèª¬æããŸãã
ååã®å 容ã¯ãã¡ãã
Heroku ã§å®çŸããåæãšéåæã®ã¢ãŒããã¯ãã£
åŒç€Ÿ PaaS ã§ãã "Heroku" ã䜿ã£ããåæã»éåæã®æ§æãµã³ãã«ã玹ä»ããŸãã
ãã¡ãã®æ§æã¯ã倧éã®ã¢ã¯ã»ã¹ãæãããã®èãæ¹ãšããŠã®äžã€ã® Heroku ã§å®çŸãããµã³ãã«æ§æã§ãããã®åœ¢åŒãå šãŠã§ã¯ãªããä»ã®æ§æãã¿ãŒã³ããããŸãã
åæåŠçãšéåæåŠçã®å®è£ æ¹æ³
åæåã¢ãŒããã¯ãã£ã§ã¯é«éã¹ãã¬ãŒãžã掻çšããŠãäžã€äžã€ã®åŠçãé«éåããŠå¯ŸåŠããŸããéåæåã¢ãŒããã¯ãã£ã§ã¯ãã€ãã³ããã¹ãšãªã "Apache Kafka" ãäžå¿ã«æ®ããã€ãã³ãããåäœãšããŠååŠçãžäŒéããä»çµã¿ã«ãªã£ãŠããŸãã

éåæåŠçã®ãµã³ãã«ã§ã¯ãããã³ãåŽãã€ãã³ãã®çºçåšãšãªã£ãŠããŸããWebã·ã¹ãã ãšããŠãäŸãã°ãã«ãŒããžå ¥ããããæ³šæããããªã©ã®ãã¿ã³ãªã©ãæŒãããã³ãããã€ãã³ãããšããŠæ±ããŸããããã³ãã®Webã·ã¹ãã ã¯ããšã³ããŠãŒã¶ã®è¡åãåãä»ããŠãåŸç¶ã®ä»çµã¿ã«å¯ŸããŠãã€ãã³ãããçºè¡ãããšãã代æ¿ãããããŠããŸããåŠçã®ãã£ããããã€ãã³ããããå§ããéåæåã¢ãŒããã¯ãã£ããã€ãã³ãé§ååã¢ãŒããã¯ãã£ããšåŒã³ãŸãã
ã€ãã³ãé§ååã¢ãŒããã¯ãã£ãšã¯
ã€ãã³ããšã¯
ããã§äžåºŠãã€ãã³ããã«ã€ããŠããããã§ãã
"ã€ãã³ã" ãšã¯âŠ
ã·ã¹ãã ãŸãã¯ãã®ç°å¢ã®ç¶æ ã«ãããé倧ãªå€åã®ããš
(a significant change in the state of a system or its environment.)
ãšå®çŸ©ãããŠããŸããæ¥æ¬èªã«ãããšåããã«ããã§ãããäœãæäœãè¡ãããšãç¶æ ã®å€åã ãšçè§£ããŠããã£ãŠåé¡ãªãã§ããããã¿ã³ãæŒããããªã©ã¯ããŸãã«ãã®ãå€åããããç¶æ ãã§ãã
ãŸããã€ãã³ãã¯æ¬¡ã®ãããªæ å ±ãå«ã¿ãŸãã
ç¶æ³ (context)
ãã®ã€ãã³ããçæãããç¶æ³è³æº (resource)
ãã®ã€ãã³ãã«ãã£ãŠãã©ã®ãªãœãŒã¹ã察象ãšãªãã®ãæäœ (operation)
ã©ã®ãããªæäœã«ãã£ãŠãã€ãã³ããçºçããã®ã
äŸãã°ã"ããã£ãã" ã "2023-02-10 12:59:38(JST)" ã« "ECãµã€ã" ã§ã(context)ãã"Â¥3,800" ã® "Perfume ã® CD" "åçª prfm-092012230215" ãã(resource) ã"ã«ãŒããžå ¥ãã"ã(operation) ãšãããã®ããã€ãã³ããã§ãã
ã€ãã³ãé§ååã®ãã¢ã¯ãéåæããšãPub/Subã
ã€ãã³ãé§ååã¢ãŒããã¯ãã£ã§ã¯ããéåæããããéèŠãªåŠçã¢ãããŒããšãªããŸããäžå¿ã«ããã€ãã³ããã¹ãã€ãã³ããåãä»ãããšããããåŸç¶ã®ååŠçãžãšäŸé Œããåã ã®ããã»ã¹ã§éåæã«åŠçããŸãã
ãã®ããã«ãããã³ãåŽãåŸç¶ã®åŠçãæå®ããŠãç¹å®ã®ã¡ãã»ãŒãžãã¥ãŒãžã¡ãã»ãŒãžãç»é²ããŠå®è¡ãäŸé Œããä»çµã¿ããã¡ãã»ãŒãžãã¥ãŒã€ã³ã°æ¹åŒãšåŒã³ãŸããããã³ãåŽããå®è¡ããŠãããããåŠçãæå®ããŠãç¹å®ã®ãã¥ãŒãžã¡ãã»ãŒãžãå ¥ããä»çµã¿ãšãªããŸããåŸã£ãŠãå®äœãšããŠã¯ããã³ãããããšãªã£ãŠãåŸç¶ã®åŠçãæ±ºããæ¹æ³ãšãªããããã³ããããžãã¹ããã»ã¹ã確å®ã¥ããŠããŸãã飿ºæ¹æ³ãšããŠã¯ççµåã§ãããããã»ã¹ã¯å¯çµåãšãèšããŸãã
ããã§ã"Apache Kafka" ãã¯ãããšãããå€ãã®ã€ãã³ããã¹ã§ãšãããŠããæ¹æ³ã¯ãããç¹åŸŽçãªPub/Subãšããæ¹åŒãå®è£
ããŠããŸããPub/Sub ãšã¯ã€ãã³ããç»é²ããåŽã "Publisher(åºçè
)" ãåŸç¶ã§åŠçãåŸ
ã¡åããŠããããã»ã¹ã "Subscriber(賌èªè
)" ãšåŒã¶æ¹åŒã«ã¡ãªãã§ããŸã(åŒã³æ¹èªäœã¯ã¡ãã»ãŒãžãã¥ãŒã€ã³ã°ã§ãåãã ã£ããã¯ãããã©)ãæ¥æ¬ã®äžéšçéã§ã¯"åºç賌èªå"ãšãåŒãã§ããŸãã
"Publisher" ã¯ãã€ãã³ããã¹ãžã€ãã³ããç»é²ããŸããåŸç¶ã§åŠçãåŸ
ã¡åããŠãã "Subscriber" ãã¡ã¯ãã€ãã³ããã¹ã«ç»é²ãããã€ãã³ãããèªåãå®è¡ãã¹ããã©ããã倿ããŠåŠçãè¡ããŸãã"Subscriber" ã¯å
šãŠã®ã€ãã³ãã賌èªããããã«ããããªãã®ã§ã"Apache Kafka" ã§ã¯ããããã¯ããªã©ã§ã€ãã³ãã®åœ¹å²ãåé¡ããŠåæšéžæããŸãã
ãã®ããã«ããŠã"Subscriber" åŽãåŠçãè¡ãããã®ã€ãã³ããéžå¥ã§ããæ¹åŒã®ããã"1察å€" ã®ãããªã€ãã³ãã®ãããšãããããŒã¿ã®äŒéãããããæ°ããåŠçãæ¬çªçšŒåäžã§ããããã«æ¥ç¶ããŠå©çšå¯èœã§ãã
ãã®ããã« "Apache Kafka" ã¯ãPub/Sub ã¢ãã«ãå®è£ ããŠããããšã«ããã飿ºã ãã§ã¯ãªããããžãã¹ããã»ã¹ã®ççµååãå®çŸã§ããŸãããŸãã"Apache Kafka" ã¯äžè¬çãªDBã®ãã㪠Active-Standby åã® HA(High-Availability[é«å¯çšæ§])æ§æã§ã¯ãªããã¯ã©ã¹ã¿ãŒåã§ã¹ã±ãŒã«ã¢ãŠãå¯èœãªæ§æãçµãããšãå¯èœã§ããã§ããããã€ãã³ããã¹ãžè² è·ãéäžãããããªã±ãŒã¹ã§ãããããèŠè¶ããŠã¹ã±ãŒã«ã¢ãŠãã®æ§æãæºåã§ããŸãããã®ããã倧éã®ã¢ã¯ã»ã¹äžã«ãããŠãè² è·åæ£ãå®çŸããŠãè² è·ã«åŒ·ãããã€ããã©ãŒãã³ã¹ãªæ§æãå®çŸã§ããŸãã
ãã®ããã«ãéåæåãšããã "Apache Kafka" ã§æ§æããããã€ãã³ãé§ååã¢ãŒããã¯ãã£ã«ãããŠã¯ã忣ãããããšã§åŠçäžéãçªç Žããããããšããç¹åŸŽããããŸãã

ãã ãã¿ãªããŸã®æ³åã«é£ããªãéããéåæåŠçã¯å®è£ ãé£ããæ§æã§ããéåæãšããã©ããã»ãšãã©ã®åŠçããªã¢ã«ã¿ã€ã ã«è¿ã圢ã§åŠçãããŸãããšã¯èšãããªãããã®èŠå ã§é å»¶ããããšããããŸããè€æ°ã®åŠçãå®çµããªããšãããªãã®ã«ããã®ãã¡ã®äžã€ã®åŠçã ãããšã©ãŒãé害ã§åæ¢ããŠããŸã£ãå Žåãªã©ãè€éãªããã»ã¹ã§å®è£ ãå°é£ãªã±ãŒã¹ãèããããŸãããã¹ãŠãéåæã§å®çŸããããšã¯é£ããããšã³ããŠãŒã¶åŽãžã®åœ±é¿ãå«ããŠãé害æã®éçšãªã©ãç¶¿å¯ã«èšç»ãå¿ èŠãããããŸãããçµææŽåæ§ãã©ã®çšåºŠã®æéã§æ ä¿ããããããã®æ§æã®ãã€ã³ãã§ãã
Salesforce ã®æäŸããäºã€ã®ã€ãã³ãæ©èœ
ä»åã®æåŸã¯ Salesforce ãã©ãããã©ãŒã ã®æäŸããäºã€ã®ã€ãã³ããã¹ã«ã€ããŠç޹ä»ããŸãã

Apache Kafka on Heroku
1ã€ã¯æ¢ã«ç޹仿žã¿ã® "Apache Kafka on Heroku" ã§ãããã¡ã㯠"Heroku" ã®ã¢ããªã³ãšããŠæäŸãããæ©èœã§ãã
Heroku ã®ã¢ããªã±ãŒã·ã§ã³éçºã«ããããã€ãã³ãé§åã¢ãŒããã¯ãã£ã®äžå¿ãšãªãã·ã¹ãã ã§ããããã¯ãããŒãžããµãŒãã¹ãšããŠæäŸãããŠããã®ã§ã"Apache Kafka" èªèº«ã®éçšã¯äžèŠã§ãããã¹ãŠ Salesforce ããµãŒãã¹ã®éçšãè¡ã£ãŠããŸãããŸããã¯ãªãã¯äžã€ã§ã€ã³ã¹ããŒã«å¯èœã§ãããã«å©çšã§ãããšèšãããšããããã£ããããŒãžããµãŒãã¹ã®ã¡ãªããã§ãã
"Apache Kafka" ã¯ãéåžžã® Web API (REST/SOAPãªã©) ã§ã¯ãªãå°çšã®ã€ã³ã¿ãã§ã€ã¹ãªã®ã§ãåŸæ¥ã® Web ããã°ã©ãã³ã°ãšã¯ç°ãªããŸãã"Apache Kafka" ã®ããã®åŠç¿ã³ã¹ããããããããå®è£ ãé£ãããããŠããèŠå ã®äžã€ãããããŸããã
ãã©ãããã©ãŒã ã€ãã³ã
ããäžã€ã¯ãSalesforce Platform äžã«æèŒãããŠãã "ãã©ãããã©ãŒã ã€ãã³ã" ã§ãã
ãã¡ãã "Apache Kafka" åæ§ãPub/Sub æ¹åŒããšã£ãŠãã Salesforce Platform ã«ç¹åããã€ãã³ããã¹ã§ããSalesforce å€éšãã㯠REST API ã§ Publish å¯èœã§ãSubscribe 㯠CometD ããã³ gRPC ãå©çšå¯èœã§ãããã¡ãã¯ãããã¢ãã³ãª Web API ãå©çšã§ããŸãã
ãŸããSalesforce ã«ç¹åããæ©èœã®ãšããŠãSalesforce ã®ãããŒãããªã¬ãªã©ã§å©çšå¯èœãªããšãç¹åŸŽã§ãã
Salesforce æ©èœã§ã®ã€ãã³ãã® Publish
Salesforce æ©èœã§ã®ã€ãã³ãã® Subscribe
ãããŒã«ãããã©ãããã©ãŒã ã€ãã³ãã¡ãã»ãŒãžã®ç»é²
ããã»ã¹ã«ãããã©ãããã©ãŒã ã€ãã³ãã¡ãã»ãŒãžã®ç»é²
Apex ããªã¬ã«ãããã©ãããã©ãŒã ã€ãã³ãéç¥ã®ç»é²
Lightning ã³ã³ããŒãã³ãã§ã®ãã©ãããã©ãŒã ã€ãã³ãéç¥ã®ç»é²
ä»åã¯ãããŸã§ã§ããæ¬¡åã¯ãäžã€ããµã³ãã«ã¢ãŒããã¯ãã£ã玹ä»ããŸãã