ãã®è¨äºã¯ãMerpay & Mercoin Advent Calendar 2024 ã®è¨äºã§ãã
ã¯ããã«
ããã«ã¡ã¯ãã¡ã«ãã¤ã§Backend Engineerããã¦ãã@hibagonã§ãã2024å¹´4æã«æ°åã¨ãã¦å
¥ç¤¾ãã¾ããã
ãã®è¨äºã§ã¯ãã¡ã«ã«ãªæ°å1å¹´ç®ã®ã¨ã³ã¸ãã¢ãã©ã®ãããªãã¨ããã¦ããã®ãã«ã¤ãã¦ãç´¹ä»ã§ããã°ã¨æãã¾ããç¹ã«ã¤ã³ã¿ã¼ã³ãæ°åã¨ãã¦ã¡ã«ã«ãªã§åããã¨ã«èå³ã®ããæ¹ã®åèã«ãªãã°å¬ããã§ãï¼
ããã§ã¯æ©éLetâs Go!
4æð¸
4æã¯DevDojo(â»1)ãã¯ããã¨ããæ°åç ä¿®ã«å¤§åã®æéãè²»ããã¾ããDevDojoã§ã¯ãGoè¨èªãªã©ã®ã¡ã«ã«ãªã§ä½¿ç¨ããã¦ããæè¡ãä¸å¿ã«ããã¾ãã¾ãªåéã«ã¤ãã¦æ¨ªæçã«å¦ã³ã¾ãã
ç ä¿®ã®åéã®æéã§ã¯ãç§ã®ãã¼ã ã§ã®æ¥åã«ç¨ãããã¡ã¤ã³ç¥èãéçºã«é¢ããç¥èã®ãã£ããã¢ãããè¡ãã¾ããããã ããã®æç¹ã§ã¯ããªã³ãã¼ãã£ã³ã°è³æããã¾ãæ´åããã¦ããªãã¨ããåé¡ãããã¾ãããç§ã®ãã¼ã ã¯æ¯è¼çå¤ãã®ã¤ã³ã¿ã¼ã³çãåãå
¥ãã¦ããã¨ãããã¨ããããä»å¾ã®ããã«ãããã£ããã¢ããå
容ã®ã¢ã¦ããããã¨ãã¦ãªã³ãã¼ãã£ã³ã°è³æãå·çãããã¨ã«ãã¾ããã
â»1 æè¡ãã¬ã¼ãã³ã°DevDojoã§å®éã«ä½¿ç¨ããã¦ããå¦ç¿ã³ã³ãã³ããå ¬éãã¦ãã¾ãããã¡ãããåç §ãã ããã

5æð¿
ã´ã¼ã«ãã³ã¦ã£ã¼ã¯æãããã¯ãããããæ¬æ ¼çã«é
å±å
ã®ãã¼ã ã«åæµãã¦æ¥åãéå§ãã¾ããã
æåã«åãçµãã ã®ã¯ããªãªã¼ã¹ããã¼ã®æ¹åã§ãããç§ã®ãã¼ã ã§ã¯git flowãæ¡ç¨ãã¦ãããæ¯é±æ±ºã¾ã£ãæ¥ã«ãªãªã¼ã¹ãã©ã³ãã¨ãªãªã¼ã¹ç¨ã®Pull Requestãä½æããéç¨ãªã®ã§ãããå½æã¯ãããæåã§è¡ã£ã¦ãã¾ããããããGitHubActionsãç¨ãã¦èªååãã¾ãããä¸è¦å¤§ããªã¤ã³ãã¯ããç¡ãããã«æããããããã¾ããããé±ã«30åç¨åº¦ã®å®ææ¥åãå®å
¨ã«èªååã§ãããã¨ã«ãããæ¬è¨äºãå·çãã¦ããç¾å¨ã¾ã§ã®7ã¶æéã§ç´2人æ¥åã®å·¥æ°åæ¸ãéæã§ãããã¨ã«ãªãã¾ãã
ãã®ä»ãå°ããªã¿ã¹ã¯ãæ¾ãã¤ã¤ãæ¥åã«å¿
è¦ãªç¥èã®ã¤ã³ããããä¸å¿ã«è¡ãã¾ãããããã¦5ææ«æç¹ã§ã4æããç¶ç¶çã«æ¸ãé²ãã¦ãããªã³ãã¼ãã£ã³ã°è³æã®Ver.1ãæ¸ãä¸ãã¾ããð¤
6æâ
6æããã¯ãæ¥åå
容ãå¾ã
ã«æ¬æ ¼åãã¦ããã¾ããã
ã¡ã«ãã¤ã«ã¯Merpay APIã¨ããBFF (Backend for Frontend) ãããã®ã§ããããªãªã¼ã¹ããæãçµã¤ã«ã¤ãMerpay APIã巨大åãã責åãææ§ã«ãªã£ã¦ãã¦ããã¨ããåé¡ãçºçãã¦ãã¾ãã ãããåããMerpay APIãæã¤å
¨ã¦ã®APIã«å¯¾ãã¦ãã²ã¨ã¤ãã¤APIã«è²¬ä»»ãæã¤ãã¼ã ãæ確ã«ããMerpay APIãè¤æ°ã®BFFã«åå²ãããã¨ã§ç®¡çãããã¨ãç®æããMerpay API Rearchitectureã¨ããããã¸ã§ã¯ããé²è¡ãã¦ãã¾ã(â»2)ã

ç§ã®ãã¼ã ã§ã¯ãOwnershipãæã£ã¦ãããµã¼ãã¹ä¸ã§ã¯æ¯è¼çå°è¦æ¨¡ãª3D Secureã«é¢ããAPIãã移è¡ãããã¨ã決ãããã®ããã¸ã§ã¯ãã®æ
å½ã¨ãã¦ç§ãã¢ãµã¤ã³ããã¾ãããããã«éããæ¨æ¥ã®ã¢ããã³ãã«ã¬ã³ãã¼ã§ã解説ããã¦ããgRPC Federationã¨ããæè¡ãç¨ãã¾ããã
ããã«ã7æä¸æ¬éå§ã®ã¡ã«ã«ã¼ãã®ãã£ã³ãã¼ã³ã«åããéçºãè¡ãããã®ç¥èã®ãã£ããã¢ãããè¡ãã¾ããããã£ããã¢ãããè¡ãä¸ã§ããã£ã³ãã¼ã³ãè¡ãããã®éçºã«é¢ãã¦ã課é¡ããããã¨ãç解ãã¾ãããå
·ä½çã«ã¯ããã£ã³ãã¼ã³ã®ãã³ã«ä¸å®è¦æ¨¡ã®éçºãçºçãã¦ãããã¨ãBFFã§ããMerpay APIã«ãã¸ãã¹ãã¸ãã¯ãæµåºãã¦ãããã¨ãªã©ã®åé¡ãããã¾ããããã¡ãã®èª²é¡ãæ´çãã¦ã社å
Tech Talkã§çºè¡¨ãã¾ãããç¾å¨ã¯æ¹åããã¤ã¤ããã¾ãã
ã¾ããã®é ããããªã³ã³ã¼ã«ã®ã·ããã«ãå ããã¾ããããªã³ã³ã¼ã«ã¨ã¯ããµã¼ãã¹ã®ããã©ã¼ãã³ã¹ãæªåããããåæ¢ãçããããããå ´åã«åãã¦æ
å½è
ã常æ対å¿ã§ããããã«ãã¦ããä»çµã¿ãã§ããã¡ã«ã«ãªã°ã«ã¼ãã§ã¯PagerDutyã使ç¨ãã¦ãªã³ã³ã¼ã«ã·ããã管çãã¦ãããPagerDutyã«ç´ã¥ããããç¹å®ã®Datadog Monitorãé¾å¤ãè¶
ããå ´åãèªåã§æ
å½è
ãå¼ã³åºãä»çµã¿ã«ãªã£ã¦ãã¾ãã
â»2 詳ãã㯠ãæ¸ãèµ·ãããgRPC Federation ãå©ç¨ãã巨大ãªBFFã«å¯¾ãããªã¢ã¼ããã¯ãã£ã®è©¦ã¿ â goccyãMerpay & Mercoin Tech Fest 2023ã ããåç
§ãã ããã
7æð
7æååã¯ã7æä¸æ¬éå§ã®ã¡ã«ã«ã¼ãã®ãã£ã³ãã¼ã³ã«åããéçºãæ¥ãããã§é²ãã¦ãã¾ãããéçºèªä½ãï¼æåã«åãçµãã¡ããã¨ããããã¸ã§ã¯ãã¨ãã¦ã¯ï¼å¤§å¤ã§ã¯ãã£ãã®ã§ããããã以ä¸ã«ä»ãã¼ã ã¨é£æºããã®ã大å¤ã§ããããã£ã³ãã¼ã³éå§ãé ãããªãããã«ãã¨ã³ã¸ãã¢ã¨ãããã¸ã·ã§ã³ã«é¢ãããç©æ¥µçã«é²æ確èªãããã課é¡ãæ´çãããªã©ã®ç«ã¡åããæèãã¦è¡ããã®ã¯è¯ãã£ããã¤ã³ãããªã¨æã£ã¦ãã¾ããQAä¸ã«ãä¸å ·åãªã©æ§ã ãªåé¡ãçºçãã¦ããã®ãµãã¼ããä¸ã 大å¤ã§ããããçµæã¨ãã¦ã¯ãã£ã³ãã¼ã³ã¯äºå®éãéå§ãããã®ã§ããã£ãã§ãã

7æå¾åããã¯ãã¤ã³ã¿ã¼ã³çã®ã¡ã³ã¿ã¼ãåãã¦æ
å½ããã¦ããã ãã¾ãããç§èªèº«ãå
¥ç¤¾ãã¦ãã3ã¶æç¨åº¦ããçµã£ã¦ãããä¸æ¹ã®ä¸å®ã¯ããã¾ãããããã以ä¸ã«ã¯ã¯ã¯ã¯ããã¦ãã¾ããã
7æä¸ã®ç®æ¨ã¨ãã¦ã¯ããã¼ã ãªããã¡ã«ã«ãªã¨ããä¼ç¤¾ã«é¦´æãã§ãããã¨ãããã¨ãæåªå
ã«èãã¦ãã¾ããããã®ãããç©æ¥µçã«ã飯ä¼ãä¼ç»ãããã社å
é¨æ´»ã«ä¸ç·ã«åå ããããã¾ãããã¾ãããã®æã®ããã«æ¸©ãã¦ãããªã³ãã¼ãã£ã³ã°è³æãç¨ãã¦ãã£ããã¢ãããé²ãã¦ããããå¿
è¦ã«å¿ãã¦å çä¿®æ£ãä¾é ¼ãã¾ããããªã³ãã¼ãã£ã³ã°è³æã¯ããã®ããã«ãã¦æ°ã¡ã³ãã¼ãå ãã£ãéã«èªãã§ããããªãããææ°ã®æ
å ±ã«ã¢ãããã¼ããã¦ããéç¨ãè¯ãã¨æã£ã¦ãã¾ãã
8æðï¸
8æã¯ãã¡ã³ã¿ã¼æ¥åãå¼ãç¶ãè¡ããªããã主ã«2ã¤ã®ã¿ã¹ã¯ãè¡ã£ã¦ãã¾ããã
1ã¤ç®ã¯ãå
ç¨è¿°ã¹ãã¡ã«ã«ã¼ãã®ãã£ã³ãã¼ã³ã®æ¬¡ã«è¡ããã£ã³ãã¼ã³ã«åããéçºãè¡ãã¾ããã7æã¯åãã¦ã¨ãããã¨ããããç§ã®ãã¼ã ã®ã¡ã³ãã¼ã«ä¼´èµ°ãã¦ããããªããé²ãã¦ãã¾ãããã8æã®ãã£ã³ãã¼ã³ã§ã¯ãèªèµ°ã§ããããã«ãªããã¨ãæèãã¦ãã¾ããã
2ã¤ç®ã¯ãMerpay APIã«ãã3D Secureã«é¢ããAPIã®ç§»è¡ãgRPC Federationãç¨ãã¦é²ãã¾ãããããã¯6æã«çæãã¦ããã®ã§ããã7æã¯å¥ã®ã¿ã¹ã¯ãåªå
ãã¦ãããããå¾åãã«ãªã£ã¦ãã¾ããããã®é ãããMerpay API Rearchitectureããã¸ã§ã¯ãã«é¢ãã¦ã¯ããã¼ã ã§ã®ã«ã¦ã³ã¿ã¼ãã¼ãã¨ãã¦ãç§ãæ
å ±åéãéçºã®ä¸»å°ããã¦ãããã¨ã«ãªãã¾ãããé²æã¨ãã¦ã¯ã8æä¸ã«ã¯ãããã3D Secureã®APIã®ç§»è¡æºåèªä½ã¯å®äºãã¾ããããã ä»ããã¸ã§ã¯ãã¨ã®å
¼ãåãããããããã«æ¬çªé©ç¨ã¯ãã¦ãã¾ããã
ã¾ããã®é ã«ãæ°å2å¹´ç®ä»¥å
ã®ç¤¾å¡ã¨ã¤ã³ã¿ã¼ã³çã主ä½ã¨ãªã£ã¦è¡ãã¢ã¤ãã£ã¢ã½ã³ã§ãããæªç¾ä¼è°ãã¨ããã¤ãã³ãã®éå¶ã«ãå ãããè¨ç»ãé²ãã¦ããã¾ããã
9æð
9æã¯ãã¡ã³ã¿ã¼ããã¦ããã¤ã³ã¿ã¼ã³çã®ã¤ã³ã¿ã¼ã³æéãçµäºããã®ã§ãããã«é¢é£ãããµãã¼ãæ¥åãã¡ã¤ã³ã§ãããå
·ä½çã«ã¯ãã¤ã³ã¿ã¼ã³çãããªã®è¯ãã¨ããã¾ã§éçºãå®äºã§ããããã«ãµãã¼ãããããã¤ã³ã¿ã¼ã³å¾ã«éå§ãããã¨ã«ãªã£ãQAã®ãµãã¼ããç§ãè¡ããããã«ããããã«ãå¼ãç¶ãããã¦ããã£ãããã¾ããã
åãã¦ã®ã¡ã³ã¿ã¼ãçµããã®ã§ãããã§æ¯ãè¿ãããã¦ããã¾ãã
ã¡ã³ã¿ã¼ã¨ãã¦å¿æãã¦ããã®ã¯ããã©ã³ã¯ã«è©±ããé¢ä¿ãä½ããä½ã§ã質åããããé°å²æ°ãä½ããã¨ã§ããããã®ããã«ã¯ãåæçãªã³ãã¥ãã±ã¼ã·ã§ã³ã®æ©ä¼ãéè¦ã ã¨èããæ¯æ¥30åãã1æéã»ã©1on1ã®æéãåãã¾ãããããã§ã¯ãæ¥åãé²ãã¦ããããã®ã¤ã³ãããã質å対å¿ã ãã§ãªããä»äºä»¥å¤ã®éè«ã交ããããã«ãã¦ãã¾ãããã¾ãã1on1ã®æéã§ãããã¤ã§ãã¡ã³ã·ã§ã³é£ã°ããããã¹ãããã®1on1ã»ããã£ã³ã°ãã¦ãããããï¼ã¨ãã強調ãæèçã«è¡ãã¾ãããçµæã¨ãã¦ã¤ã³ã¿ã¼ã³çãé«ãããã©ã¼ãã³ã¹ãçºæ®ãã¦ãã ãããæ°åå
å®ã®ãªãã¡ã¼ããããã¾ã§è³ã£ãã®ã¯ã¡ã³ã¿ã¼ã¨ãã¦ã¨ã¦ãå¬ããæãã¾ããã
ä½è«ã§ãããã¤ã³ã¿ã¼ã³ãç²ãæ§ä¼ã§ãã¬ã¼ãå
¥ããã¶ã¼ãããµãã©ã¤ãºã§é ¼ãã§ãããããã¤ã³ã¿ã¼ã³çããããã¼ã ã¡ã³ãã¼ãããã¨ã¦ã好è©ã§å¬ããã£ãã§ãã
ãã®ä»ã«ã¯ãå¼ãç¶ããã£ã³ãã¼ã³ã®ããã®éçºæ¥åãè¡ã£ã¦ãã¾ããããã®é ã«ã¯ãã»ã¼èªèµ°ã§ããããã«ãªã£ã¦ãã¾ããã
ã¨ããã§ã9æä¸æ¬ã®ã¡ã³ã¿ã¼æ¥åãçµäºããã¿ã¤ãã³ã°ã§å°ãé·ãã®ä¼æããããããªã¼ã¹ãã©ãªã¢ð¦ðºã«æ è¡ã«è¡ãã¾ãããã·ããã¼æ¸¯ã¯ãä¸çä¸å¤§ç¾æ¸¯ã«æ°ããããã ããã£ã¦ãã¨ã¦ãç¾ããã£ãã§ããã¾ããã³ã¢ã©ãã¯ã¸ã©ãªã©ã®æ§ã ãªçãç©ã«è§¦ãåã£ãããç æ¼ ãã¦ã¼ã«ãªã®æ£®ãªã©ã®åºå¤§ãªèªç¶ãä½æãã¦ãã¨ã¦ããªãã¬ãã·ã¥ã§ãã¾ããã

ã¯ã¸ã©ã®ã¸ã£ã³ãï¼ããªã¼ãï¼

ã·ããã¼ã®å¤æ¯
10æð
10æã¯ããªãã¨æ©ãã2人ç®ã®ã¤ã³ã¿ã¼ã³çã®ã¡ã³ã¿ã¼ãè¡ããã¨ã«ãªãã¾ãããããã¯ä»ãã¼ã ã®é½åãããæ¥é½æ±ºã¾ã£ãã®ã§ãããã¡ã³ã¿ã¼èªä½ã¯åãã¦ã§ã¯ãªãã£ãã®ã§ãããç¨ä¸å®ã¯ããã¾ããã§ããã
ä¾ã«ãã£ã¦10æååã¯ããã¼ã ãã¡ã«ã«ãªã¨ããä¼ç¤¾ã«é¦´æãã§ãããã¨ãããã¨ãæèãã¦ãã¾ãããã¾ãããªã³ãã¼ãã£ã³ã°è³æãç¨ãã¦ãã£ããã¢ãããé²ãã¦ãããã¤ã¤ãå çä¿®æ£ãå ãã¦ãããã¾ããããªã³ãã¼ãã£ã³ã°è³æã®æ¹åãµã¤ã¯ã«ãè¯ãæãã«åã£ã¦ããã®ã§ããã®æµããæ¢ãããã¨ã®ãªãããã«ãããã¨æãã¾ãã
ã¡ã³ã¿ã¼æ¥å以å¤ã§ã¯ã10æä¸ã«éå§ãããã£ã³ãã¼ã³ã®QAãµãã¼ãã¨ã3D Secureã«ç¶ãã¦ã¡ã«ãã¤ã®iDããã¼ãã£ã«ã«ã¼ãã«é¢ããAPIã®ç§»è¡ãé²ãã¦è¡ãã¾ããã
ããã«ãå¥ã®å°ããã®ããã¸ã§ã¯ãã§ã¯ãSpecä½æããéçºã¾ã§ãåãæã¤ãã¨ã«ãªãã¾ãããå°è¦æ¨¡ã§ã¯ããã¾ããããããã¾ã§ã¯ã¡ããã¨ããSpecãæ¸ãããã¨ããªãã£ããããã¨ã¦ãè¯ãçµé¨ã«ãªãã¾ããã
ã¾ããã®é ããããæªç¾ä¼è°ãã«é¢ããã¿ã¹ã¯ãå°ããã¤å¢ãã¦ãã¾ããã
11æð
11æã¯ãå
容ã¯ä¼ãã¾ãã大çã®éçºæ¡ä»¶ããã£ãããããã¼ã ä¸ä¸¸ã¨ãªã£ã¦All for Oneã§ããã®éçºãé²ãã¦ãã¾ãããããããããã¨ã«ãã¤ã³ã¿ã¼ã³çãã¨ã¦ãæ´»èºãã¦ããã¾ããã
ä»ã¾ã§è¿°ã¹ã¦ããéããç§ã¯ãã¼ã å
ã§ã¯gRPC Federationã®ç¥è¦ãä¸çªãããããgRPC Federationãç¨ããBFFç¨æ°è¦ãã¤ã¯ããµã¼ãã¹ã®æ§ç¯ãæ
å½ãã¾ããã
æ°è¦ãã¤ã¯ããµã¼ãã¹ã1ããä½æããã¨ããçµé¨ã¯ãã¾ãåºæ¥ãªãã®ã§ã¨ã¦ãé¢ç½ããç¥è¦ãæ·±ãããã¾ãããç¹ã«ãµã¼ãã¹ã®ãªã½ã¼ã¹è¨å®ãã¢ãã¿ãªã³ã°è¨å®ããªã³ã³ã¼ã«ã®è¨å®ãæ¬çªç°å¢ã§æ°è¦ãã¤ã¯ããµã¼ãã¹ãåããããã«å¿
è¦ãªãã§ãã¯ããã»ã¹ãªã©ãéãã¦ãæ®æ®µç§ã®ãã¼ã ãæã£ã¦ãããã¤ã¯ããµã¼ãã¹ã«é¢ãã解å度ãé«ã¾ãã¾ããã
ã¾ãã11æã¯ãæªç¾ä¼è°ãã®ã¢ã¤ãã£ã¢åéæéã¨ãããã¨ããããã¢ãã¦ã³ã¹ãLunch & Learnã®éå¬ãªã©ãã¤ãã³ãçãä¸ãã®ããã®ã¿ã¹ã¯ã«ããéå¶ãã¼ã ã¨ãã¦All for Oneã§åãçµã¿ã¾ããã

12æ以éð
ãã®è¨äºãæ¸ãã¦ãã12æ以éã¯ã次ã«æ§ãã¦ãã大çã®éçºæ¡ä»¶ããMerpay API Rearchitectureã®ç¶ç¶é²è¡ããæªç¾ä¼è°ãã®ã¤ãã³ãæåãªã©ã«åãã¦å°½åãã¦ããããã¨æãã¾ãï¼
ã¾ããå¹´æããã3人ç®ã®ã¤ã³ã¿ã¼ã³çã®ã¡ã³ã¿ã¼ãããã¦ããã ããã¨ã«ãªã£ãã®ã§ãå¼ãç¶ãã¡ã³ã¿ã¼æ¥åã®æ¹ãé å¼µã£ã¦ãããã¨æãã¾ãðª
ã¨ããã§ãä»å¹´ã®å¹´æ«å¹´å§ã¯æä¼ã使ããªãã¦ã9é£ä¼ããã¨ãããã¨ã§ãé常ã«æ¥½ãã¿ã§ããï¼ç¹ã«ä»å¹´ã¯ã¹ãã¼ãã¼ãã»ãããä¸å¼æããã®ã§ãããããæ»ãã«ããããã¨æã£ã¦ãã¾ãð
ã¾ã¨ã
æ¬è¨äºã§ã¯ãã¡ã«ãã¤æ°å1å¹´ç®ã®ã¨ã³ã¸ãã¢ãã©ã®ãããªãã¨ããã¦ããã®ãã«ã¤ãã¦ãç§èªèº«ã®æ¯ãè¿ãã®æå³ãè¾¼ããã§ããã ã詳細ã«æ¸ãã¦ã¿ã¾ãããã¡ã«ã«ãªã¯ãæ°å1å¹´ç®ãã1人ã®ããã¨ãã¦æ±ãããã¨ã¦ããã£ã¬ã³ã¸ã³ã°ãªãã¨ãä»»ãã¦ããããç°å¢ã§ãããã®è¨äºãããããªã¡ã«ã«ãªã§ã¤ã³ã¿ã¼ã³ãæ°åã¨ãã¦åããã¨ã«èå³ã®ããæ¹ã«å¯¾ãã¦ãå ·ä½çãªã¤ã¡ã¼ã¸ãåºããå©ãã«ãªãã°å¬ããã§ããã¤ã³ã¿ã¼ã³ãæ°åæ¡ç¨ã«é¢ãã¦ã¯ããã¡ãããåç §ãã ããï¼
次ã®è¨äºã¯@timoããã§ããå¼ãç¶ãã楽ãã¿ãã ããã