éçºã»ã¹ããŒãžã³ã°ã»æ¬çªç°å¢ã®ã·ãŒã¯ã¬ãããšèšå®ç®¡ç
APIããŒãSMTPèªèšŒãWebhook眲åã·ãŒã¯ã¬ãããªã©ãæŒæŽ©ããªãããã«ãéçºã»ã¹ããŒãžã³ã°ã»æ¬çªã§ã®ã·ãŒã¯ã¬ãããšèšå®ç®¡çãã·ã³ãã«ãªãã¿ãŒã³ã§åŠã³ãŸãã

ç§ãã¡ã解決ããåé¡
ã·ãŒã¯ã¬ãããšèšå®ç®¡çã¯ãæ©å¯å€ã誀ã£ãŠã³ããŒããã£ãã·ã¥ãå ±æãããå Žæããé€å€ããããšã§ãã
ã·ãŒã¯ã¬ãã㯠API ããŒãããŒã¿ããŒã¹ã®ãã¹ã¯ãŒããSMTP ãã°ã€ã³ãWebhook ã®çœ²åã·ãŒã¯ã¬ãããªã©ãã¢ã¯ã»ã¹ãèš±å¯ãããæ¬äººæ§ã蚌æãããããå€ã§ããéåžžã®**èšå®ïŒconfigïŒ**ã¯ãã£ãŒãã£ãŒãã©ã°åãã¿ã€ã ã¢ãŠããå ¬éãµã€ãã®ããŒã¹ URL ã®ããã«å ¬éãããŠã害ããªãå€ã§ãã
devãstagingãprod ã§ã¯ç®çãç°ãªãããå€ãç°ãªãå¿ èŠããããŸããdev ã¯çŽ æ©ã詊è¡ãšå®å šãªãã¹ãã®ãããstaging ã¯æ¬çªã«äŒŒãã€ã€åé¢ãç¶æãprod ã¯ããã¯ããŠã³ããç£æ»å¯èœã§å®å®ããŠããå¿ èŠããããŸããåãã·ãŒã¯ã¬ããããã¹ãŠã§äœ¿ããšãdev ã®æŒæŽ©ã prod ã®äŸµå®³ã«ã€ãªãããŸãã
ããã«ãã«æŒããããšã¯ãã·ãŒã¯ã¬ãããã³ã³ãã€ã«æžã¿ã®ããã¯ãšã³ããã€ããªãã¢ãã€ã«ã¢ããªãã³ãã«ãããã³ããšã³ããã³ãã«ãªã©ãããã±ãŒãžãããŠå ±æããããã®ã®äžéšã«ãªãããšãæããŸããäžåºŠãã«ãææç©ã«å ¥ããšãå¶åŸ¡ã§ããªãå Žæãžåºããå¯èœæ§ããããŸãã
äºæ çãªæŒæŽ©ã¯éåžžãããã€ãã®äºæž¬å¯èœãªçµè·¯ã§çºçããŸãã
- ãœãŒã¹ã³ãŒãããµã³ãã«ãã³ã¡ã³ãã«ã·ãŒã¯ã¬ãããããŒãã³ãŒããã
- ããŒã«ã«ã®
.envãã¡ã€ã«ãèšå®ã®ãšã¯ã¹ããŒãããªããžããªã«ã³ããããã - ããã³ããšã³ããã¢ãã€ã«ã®ãã«ãã«ã·ãŒã¯ã¬ãããçŒã蟌ã
- ãã°ãã¯ã©ãã·ã¥ã¬ããŒãããã«ãåºåã«ã·ãŒã¯ã¬ãããåºåãã
- ãã¡ãã£ãšã ããã¹ãã®ããã«ãæ¬çªå€ãã¹ããŒãžã³ã°ã«ã³ããŒãã
ç°¡åãªäŸïŒéçºè ããã¡ãŒã«ãåãããããã« SMTP ãã¹ã¯ãŒããèšå®ãã¡ã€ã«ã«æžãããããã³ããããŸãã¯ãªãªãŒã¹ãã«ãã«å«ãŸãããåŸã§ãã¹ã¯ãŒããããŒããŒã·ã§ã³ããŠããå€ããã«ã㯠CI ãã£ãã·ã¥ãã¢ããªã¹ãã¢ã®ã¢ããããŒãã誰ãã®ããŠã³ããŒããã©ã«ãã«æ®ããããããŸããã
ç®æšã¯æå¿«ã§ãïŒã·ãŒã¯ã¬ãããã³ãŒãããã«ãææç©ããå€ããç°å¢ããšã«å®è¡æãå®å šãªãããã€æé ã§æ£ããå€ãæ³šå ¥ããããšã
ã»ãšãã©ã®æŒæŽ©ãé²ãåºæ¬åå
å®å šæ§ã®å€§éšåã¯æ¯åå®ãç¿æ £ããçãŸããŸãã
ã·ãŒã¯ã¬ãããã³ãŒãããã«ãåºåããé ãããã ã³ãŒãã¯åºãããŸããã³ããŒãããã¬ãã¥ãŒããããã°ã«æ®ãããã£ãã·ã¥ãããã¢ããããŒããããŸãããã«ããåæ§ã§ãã¢ãŒãã£ãã¡ã¯ã㯠CI ãã°ãã¢ããªãã³ãã«ãã³ã³ããã¬ãžã¹ããªãå ±æãã©ã«ãã«æ®ãåŸãŸããã³ããããã³ã³ãã€ã«ããããã®ã¯å ¬éç©ãšèŠãªããŠãã ããã
ç°å¢ããšã«è³æ Œæ å ±ãåããïŒæå°æš©éïŒã dev çšããŒã¯ dev ã§ããåäœãããã§ããããšãéå®ããŠãã ãããã©ãããããããã¹ããµãŒãããããŒãæŒããŠã被害ã屿åãããŸããSMTP ãŠãŒã¶ãDB ãã¹ã¯ãŒããWebhook 眲åã·ãŒã¯ã¬ããã«ãåãèãæ¹ãé©çšããŸãã
å転ãåœããåã«ããã ã·ãŒã¯ã¬ããã¯å転ãããšä»®å®ããŠèšèšããŠãã ãããå€ã眮ãæããã®ã«ã³ãŒãç·šéããã¹ãŠã®ã¢ããªåãã«ããäžèŠãªããã«ããŸããå€ãã®ã·ã¹ãã ã§ã¯ã©ã³ã¿ã€ã ã§ã·ãŒã¯ã¬ãããèªã¿ïŒç°å¢å€æ°ãã·ãŒã¯ã¬ããã¹ãã¢ããïŒãç§»è¡äžã«è€æ°ã®æå¹ãªã·ãŒã¯ã¬ããã蚱容ããããšãæå¹ã§ãã
ã¢ã¯ã»ã¹ãå¶éãããã°ãæ®ãã ã·ãŒã¯ã¬ããã¯ãããå¿ èŠãšãããµãŒãã¹ã ããèªã¿åããããã«ããå®è¡ç°å¢ãéå®ããŸãã人çã¢ã¯ã»ã¹ã¯çšã«ãæééå®ã§ãç£æ»å¯èœã«ããŸãã
çãã«ãŒã«ã»ãããšããŠã¯æ¬¡ã®éãã§ãïŒ
- ã·ãŒã¯ã¬ãããã³ãããããããã±ããããã£ãããã¹ã¯ãªãŒã³ã·ã§ããã«è²Œããªã
- devãstagingãprod çšã«å¥ã ã®è³æ Œæ å ±ã䜿ã
- å€ãã€ã¡ãŒãžãã¢ãã€ã«ãã«ãã«çŒã蟌ãããã©ã³ã¿ã€ã èšå®ãåªå ãã
- äºå®è¡šãšé²åºåŸã®å転ãè¡ã
- 誰ãäœãèªããããå¶éããã¢ã¯ã»ã¹ãã°ãåãç¶ãã
ãããã®ååã¯åŸæ¥ã®ã³ãŒãã¹ã¿ãã¯ã§ããAppMaster ã®ãããªããŒã³ãŒããã©ãããã©ãŒã ã§ãåãã§ããå®å šãªéçã¯åæ§ã§ãïŒã·ãŒã¯ã¬ããããã«ãã®å€ã«çœ®ãã䜿çšç®æã«å³å¯ã«éå®ããããšã
ã·ãŒã¯ã¬ãããæãæŒããããå Žæ
ã»ãšãã©ã®æŒæŽ©ã¯ããããã³ã°ãã§ã¯ãªããæ¥åžžäœæ¥ã§èµ·ãããŸãïŒã¡ãã£ãšãããã¹ãã䟿å©ãªã¹ã¯ãªãŒã³ã·ã§ãããåºåãéå°ãªãã«ããªã©ãå§ããã¹ãã¯ãã®ãããªå°ããªç©Žãã©ãã«ããããç¥ãããšã§ãã
ãœãŒã¹ç®¡çã¯å€å žçãªåå ã§ãã誰ãããä»ã ãããš API ããŒãèšå®ãã¡ã€ã«ã«è²Œããã³ãããããããããã©ã³ãããã«ãªã¯ãã³ãŒãã¬ãã¥ãŒã³ã¡ã³ããéããŠåºããããšããããŸããåŸã§åé€ããŠãå±¥æŽããããã®ã³ããŒã«æ®ãç¶ããããšããããŸãã
ãŠãŒã¶ãŒã«é åžãããã®ã倧ããªæŒæŽ©æºã§ããããã³ããšã³ããã³ãã«ãã¢ãã€ã«ãã€ããªã¯è§£æã容æã§ããã·ãŒã¯ã¬ããã JavaScriptãiOS/Android ã¢ããªããããã¯çŒã蟌ãŸããèšå®ã«å«ãŸããŠãããšä»®å®ããŠãã ãããã¯ã©ã€ã¢ã³ãã¢ããªã¯å ¬éèå¥åã¯æãŠãŸãããç§å¯éµã¯æãŠãŸããã
èªååããµããŒãã®ã芪åãªãã€ãºããããæŒããŸããäŸãšããŠãCI ãã°ãç°å¢å€æ°ããšã³ãŒãããSMTP è³æ Œæ
å ±ãå«ããããã°åºåãèšå®ãã¢ãŠãããŠã³ããªã¯ãšã¹ããå«ãã¯ã©ãã·ã¥ã¬ããŒãã.env ã誀ã£ãŠä¿åããã³ã³ããã€ã¡ãŒãžããã«ããã£ãã·ã¥ããã°ãã¹ã¯ãªãŒã³ã·ã§ããããã®ãŸãŸè²Œã£ããµããŒããã±ãããªã©ããããŸãã
ãããããã¿ãŒã³ã¯äžåºŠãã«ããã€ãã©ã€ã³ã«å ¥ã£ãã·ãŒã¯ã¬ãããã³ããŒããåããã³ã³ããã¬ã€ã€ããã£ãã·ã¥ã¢ãŒãã£ãã¡ã¯ãããã°ããã±ãããžãšåºããããšã§ãã察çã¯ã²ãšã€ã®ããŒã«ã ãã§ãªãç¿æ £ã§ãïŒã·ãŒã¯ã¬ãããã³ãŒãããã«ãããã£ããã«è²Œããªãç¿æ £ãã€ããããšã
ããããã·ãŒã¯ã¬ããã®çš®é¡ãšãªã¹ã¯
æ±ã£ãŠããã·ãŒã¯ã¬ããã®çš®é¡ããã®æŒæŽ©æã«äœãã§ããããã©ãã«çµ¶å¯Ÿã«åºããŠã¯ãããªãããç¥ããšå©ãã«ãªããŸãã
API ããŒïŒStripeãå°å³ãè§£æãªã©ïŒã¯ãã°ãã°ããããžã§ã¯ãã¬ãã«ãã®è³æ Œæ å ±ã§ããã¢ããªãèå¥ãã課éãå©çšç¶æ³ã®èªã¿åããªã©ç¹å®ã®æäœãèš±å¯ããŸãããŠãŒã¶ãŒããŒã¯ã³ãšã¯ç°ãªããå€ãã® API ããŒã¯èªåã§æéåãã«ãªããªããããæŒæŽ©ã®ãã¡ãŒãžã倧ãããªããã¡ã§ãã
SMTP è³æ Œæ å ±ã¯éåžžãŠãŒã¶åãšãã¹ã¯ãŒãã§ãããããæŒãããšæ»æè ãèªç€Ÿãã¡ã€ã³ããã¹ãã ãéä¿¡ããé ä¿¡æ§ãæãªãããŸããAPI ããŒã¹ã®ã¡ãŒã«ãããã€ãã¯çã® SMTP ãã¹ã¯ãŒãã®ä»£ããã«ã¹ã³ãŒãããã API ããŒã䜿ããããšãå€ãå®å šæ§ãåäžããŸãããéä¿¡æš©éã®ããããŒã¯äŸç¶ãšããŠãªã¹ã¯ãé«ãã§ãã
Webhook ã·ãŒã¯ã¬ããïŒçœ²åã·ãŒã¯ã¬ãããæ€èšŒããŒïŒã¯åä¿¡ãªã¯ãšã¹ããä¿è·ããŸãã眲åã·ãŒã¯ã¬ãããæŒãããšãæ¯æãæåããããµãã¹ã¯ãªãã·ã§ã³è§£çŽãã€ãã³ããåœé ãããæ¥åããžãã¯ãåœã®ã€ãã³ãã§å®è¡ãããå±éºããããŸãã
ãã®ä»ã®é«åœ±é¿ã·ãŒã¯ã¬ããã«ã¯ããŒã¿ããŒã¹ URLïŒãã¹ã¯ãŒãåã蟌ã¿åïŒããµãŒãã¹ã¢ã«ãŠã³ãè³æ Œæ å ±ãæå·åããŒãªã©ããããŸããããŒã¿ããŒã¹ URL ãæŒãããšããŒã¿å šçé£ã«ã€ãªããããšããããæå·åããŒãæŒãããšéå»ãšå°æ¥ã®ããŒã¿ãèªã¿åãããå¯èœæ§ããããå転ãåä»ã§ãã
圱é¿ã®èãæ¹ã®ç®å®ïŒ
- ééã䜿ã£ããæäœãåŒãèµ·ããããã®ïŒ 決æžããŒã管çè API ããŒãWebhook 眲åã·ãŒã¯ã¬ãã
- ãªãããŸããã§ãããã®ïŒ SMTP ãã¹ã¯ãŒããã¡ãŒã«éä¿¡çšããŒãã¡ãã»ãŒãžã³ã°ãããããŒã¯ã³
- å šããŒã¿ãããããã®ïŒ ããŒã¿ããŒã¹è³æ Œæ å ±ãã¯ã©ãŠããµãŒãã¹ã¢ã«ãŠã³ã
- ãã©ã€ãã·ãŒãæä¹ çã«å£ããã®ïŒ æå·åããŒã眲åããŒ
- å ¬éããŠãæŠãå®å šãªãã®ïŒ ãã©ãŠã¶åãã®å ¬éå¯èœããŒïŒãã¡ã€ã³ïŒã¢ããªå¶éã¯å¿ èŠïŒ
ã¯ã©ã€ã¢ã³ãã¢ããªïŒWebãiOSãAndroidïŒã«ä»¥äžã絶察ã«å ¥ããªãã§ãã ããïŒç§å¯ã® API ããŒãSMTP è³æ Œæ å ±ãããŒã¿ããŒã¹ãã¹ã¯ãŒãããµãŒãã¹ã¢ã«ãŠã³ãããã©ã€ããŒãæå·éµãWebhook 眲åã·ãŒã¯ã¬ãããã¯ã©ã€ã¢ã³ãããµãŒãããŒã㣠API ãåŒã¶å¿ èŠããããªããããã¯ãšã³ãçµç±ã«ããŠã·ãŒã¯ã¬ããã¯ãµãŒãåŽã«çœ®ãã¹ãã§ãã
ãã«ãã«ã·ãŒã¯ã¬ãããå ¥ããã«ä¿åãããã¿ãŒã³
å®å šãªããã©ã«ãã¯ç°¡åã§ãïŒã³ã³ãã€ã«ããšã¯ã¹ããŒããå ±æããããã®ã«ã·ãŒã¯ã¬ãããçŒã蟌ãŸãªãã§ãã ããããã«ãã¯ããŒã å ã§ãå ¬éç©ãšããŠæ±ã£ãŠãã ããã
ç°å¢ããšã«é©åãªä¿ç®¡å ãéžã¶
ããŒã«ã«éçºã§ã¯èšå®ãã¡ã€ã«ã蚱容ãããŸãããããŒãžã§ã³ç®¡çã«å
¥ããå·®ãæ¿ãã容æã§ããããšãéèŠã§ãïŒäŸïŒããŒã«ã«å°çšã® .env ã¹ã¿ã€ã«ãã¡ã€ã«ïŒãã¹ããŒãžã³ã°ãæ¬çªã§ã¯ã¯ã©ãŠããããã€ãã®ã·ãŒã¯ã¬ãããããŒãžã£ãå°çš Vaultããã©ãããã©ãŒã ã®ä¿è·ãããç°å¢èšå®ã䜿ãããšãæšå¥šããŸãã
ç°å¢å€æ°ã¯ã©ã³ã¿ã€ã æ³šå ¥ã容æã§ã³ãŒãããŒã¹ãšåé¢ã§ããããè¯ãããã©ã«ãã§ããéèŠãªã®ã¯ã¿ã€ãã³ã°ïŒãã«ãææ³šå ¥ããã©ã³ã¿ã€ã æ³šå ¥ã®æ¹ãå®å šã§ãã·ãŒã¯ã¬ããããã«ãææç©ã«å ¥ããªãããã§ãã
å€ãã®ããŒã ã§æ©èœããå®çšçãªåãæ¹ïŒ
- ããŒã«ã«éçºïŒ ããŒã«ã«ã® env 倿°ãããŒã«ã«ã®ã·ãŒã¯ã¬ãããã¡ã€ã«ïŒéçºè ãã·ã³ããšã«åºæïŒ
- ã¹ããŒãžã³ã°ïŒ ã¹ããŒãžã³ã°å°çšã«ã¹ã³ãŒãããã·ãŒã¯ã¬ãããããŒãžã£ãä¿è·ãããç°å¢èšå®
- æ¬çªïŒ ç£æ»ãã°ãå³ããã¢ã¯ã»ã¹å¶åŸ¡ãå転ã«ãŒã«ãåããã·ãŒã¯ã¬ãããããŒãžã£
ååä»ããšå¢çãäžè²«ããã
ã¢ããªã®æåãå€ããªãããã«ç°å¢éã§åãããŒåã䜿ã£ãŠãã ããïŒSMTP_HOSTãSMTP_USERãSMTP_PASSãSTRIPE_SECRET_KEYãWEBHOOK_SIGNING_SECRETãå€ã ããå€ãããŸãã
æ¯æããã¡ãŒã«ãWebhook ã®é åã§ç°å¢ãéèŠã«ãªãå Žåã¯ãå¯èœãªãç°å¢ããšã«å¥ãããžã§ã¯ããã¯ã©ãŠãã¢ã«ãŠã³ãã䜿ã£ãŠãã ãããäŸãã° staging çšã® Stripe ããŒã webhook ã·ãŒã¯ã¬ãããã¹ããŒãžã³ã°å°çšã¹ãã¢ã«çœ®ãã°ãã¹ããŒãžã³ã°ã®ãã¹ãæ¬çªã«åœ±é¿ããã®ãé²ããŸãã
AppMaster ã®ãããªãã©ãããã©ãŒã ã§ãããã€ããå Žåã¯ãããã¯ãšã³ããµãŒãã¹ã®ã©ã³ã¿ã€ã ç°å¢èšå®ã䜿ã£ãŠãµãŒããŒåŽã«ã·ãŒã¯ã¬ãããä¿æããçæãããã³ãŒããã¯ã©ã€ã¢ã³ãã¢ããªã«åã蟌ãŸããªãããã«ããã®ãè¯ãã§ãã
devãstagingãprod ã«ãŸãããã¹ããããã€ã¹ãããã®èšå®
誀çšãã«ããããä»çµã¿ãã€ãããŸãããã
-
äœãã©ãã§äœ¿ãããŠããããæ£åžããã API ããŒãSMTP ãŠãŒã¶åã»ãã¹ã¯ãŒããWebhook 眲åã·ãŒã¯ã¬ãããããŒã¿ããŒã¹ãã¹ã¯ãŒããJWT 眲åããŒããµãŒãããŒãã£ããŒã¯ã³ãå«ããŸããåã·ãŒã¯ã¬ããã«ã€ããŠææè ïŒããŒã ããã³ãïŒããããèªãã³ã³ããŒãã³ãïŒããã¯ãšã³ããã¯ãŒã«ãŒãã¢ãã€ã«ãWebïŒãçŸå®çãªåè»¢é »åºŠãèšé²ããŸãã
-
devãstagingãprod çšã«å¥ã ã®å€ãšæš©éãäœãã dev ã·ãŒã¯ã¬ããã¯ã©ããããããããŒã«ã«ã³ã³ããã§äœ¿ã£ãŠãå®å šãªãã®ã«ããŸããstaging ã¯æ¬çªã«äŒŒããŸããæ¬çªã®è³æ Œæ å ±ãã¢ã«ãŠã³ãã¯å ±æããŸãããprod ã¯å®è¡æã®èå¥ïŒruntime identityïŒã ããèªã¿åããããã«ãã人ãããã©ã«ãã§èªããªãããã«ããŸãã
-
ã·ãŒã¯ã¬ããããã«ãæã§ã¯ãªãã©ã³ã¿ã€ã èšå®ãžç§»åããã ãã«ãæã«ã·ãŒã¯ã¬ãããååšãããšããã«ããã°ãDocker ã¬ã€ã€ãã¯ã©ã€ã¢ã³ããã³ãã«ãã¯ã©ãã·ã¥ã¬ããŒãã«æ®ãå¯èœæ§ããããŸããã·ã³ãã«ãªã«ãŒã«ïŒãã«ãææç©ã¯å®å šã«ã³ããŒã§ãããã®ã«ããã·ãŒã¯ã¬ããã¯ã¢ããªèµ·åæã«æ³šå ¥ããŸãã
-
äžè²«ãããããã€ãããŒã䜿ãã ããŒã ããã©ãã«ããé ãããäžæ¡ïŒ
- ç°å¢ããšã«1ã€ã®ã·ãŒã¯ã¬ããã¹ãã¢ïŒãŸãã¯æç¢ºãªåå空éïŒãäœã
- ã¢ããªã®ã©ã³ã¿ã€ã èå¥ã ãã«èªåã®ç°å¢ã®ã·ãŒã¯ã¬ãããèªãæš©éãäžãã
- èµ·åæã«ç°å¢å€æ°ãããŠã³ãããããã¡ã€ã«ã§ã·ãŒã¯ã¬ãããæ³šå ¥ããã€ã¡ãŒãžãããã³ããšã³ããã³ãã«ã«å ¥ããªã
- ãã¹ãŠã®ã·ãŒã¯ã¬ããã«å転ã«ãŒã«ïŒæå¹æéããªãŒããŒããªãã€ã³ããŒïŒã远å ãã
- ã¹ããŒãžã³ã°ãæ¬çªã·ãŒã¯ã¬ãããèªããšå€±æãããããªããŒããã¹ãã远å ãã
ããã¯ããŠã³ã¯äž»ã«èª°ãšäœãã·ãŒã¯ã¬ãããèªããããæžããããšã§ããå ±æã¢ã«ãŠã³ããé¿ããé·æããŒã¯ã³ãå¯èœãªéãé¿ããèªã¿åãæš©éã¯æžã蟌ã¿ããçãããŸãã
AppMaster ã®ãããªããŒã³ãŒããã©ãããã©ãŒã ã䜿ãå Žåãåæ§ã§ãïŒãµãŒãããŒãã£è³æ Œæ å ±ã¯ç°å¢å¥ã®ã©ã³ã¿ã€ã èšå®ã«çœ®ããçæããããã«ãææç©ãããŒã å ã§å ¬éç©ãšæ±ãã°å€ãã®äºæ ãé²ããŸãã
API ããŒãš SMTP è³æ Œæ å ±ã®å®çšçãã¿ãŒã³
å€ãã®æŒæŽ©ã¯ãäœããéãå¿ èŠãããããšãã«èµ·ããŸããæéã®ä¿®æ£ã¯è³æ Œæ å ±ãã¯ã©ã€ã¢ã³ããèšå®ãã¡ã€ã«ã«è²Œãããšã§ããè¯ãããã©ã«ãã«ãŒã«ã¯ç°¡åïŒWeb ãšã¢ãã€ã«ã¯ã©ã€ã¢ã³ãã« SMTP ãŠãŒã¶åãSMTP ãã¹ã¯ãŒããéä¿¡å¯èœãªãããã€ãããŒãçµ¶å¯Ÿã«æãããªãããšã
ã¡ãŒã«ã¯å¯èœãªã SMTP ã®çãã¹ã¯ãŒããããã¡ãŒã«ãããã€ãã® API ããŒã䜿ã£ãŠãã ãããAPI ããŒã¹ã®éä¿¡ã¯éä¿¡ã ãã«æš©éãéå®ãããããå転ãç£èŠã楜ã§ããSMTP ã䜿ããããåŸãªãå Žåã¯ããã¯ãšã³ãã«éå®ããããã¯ãšã³ãã®ã¿ãã¡ãŒã«ãµãŒããšè©±ãå°ç¹ã«ããŸãã
å®å šãä¿ã€å®çšçãªã»ããã¢ããïŒ
- ã¡ãŒã«éä¿¡ã¯ããã¯ãšã³ãã®ãšã³ããã€ã³ãïŒäŸïŒããã¹ã¯ãŒããªã»ãããéãããè«æ±æžãéããïŒã§è¡ã
- API ããŒã SMTP ãã¹ã¯ãŒãã¯ããã¯ãšã³ãã®ç°å¢ã·ãŒã¯ã¬ãããšããŠä¿åãããœãŒã¹ã³ãŒãã UI èšå®ã«å ¥ããªã
- devãstagingãprod ã§å¥ã ã®è³æ Œæ å ±ïŒçæ³çã«ã¯å¥ã¢ã«ãŠã³ããšéä¿¡ãã¡ã€ã³ïŒã䜿ã
- ã¹ããŒãžã³ã°éä¿¡å ãèš±å¯ãªã¹ãã«ããŠæ¿èªæžã¿ã¢ãã¬ã¹ã®ã¿åãåããããã«ãã
- é ä¿¡çµæïŒã¡ãã»ãŒãž IDããããã€ãã®å¿çãåä¿¡ãã¡ã€ã³ïŒã¯ãã°ã«æ®ãããè³æ Œæ å ±ãå šæã¯ãã°ã«åºããªã
ã¹ããŒãžã³ã°ãšæ¬çªãåããããšã¯æã£ãããéèŠã§ããã¹ããŒãžã³ã°ãåãéä¿¡ã«ãŒã«ãéä¿¡å ã䜿ã£ãŠãããšãæ¬çªã®é¡§å®¢ã«èª€ã£ãŠã¹ãã ãéã£ãŠããŸãå¯èœæ§ããããŸããã·ã³ãã«ãªå¯Ÿçã¯ãã¹ããŒãžã³ã°ã§ã¯åä¿¡è ãèš±å¯ãªã¹ã以å€ãããã¯ããããšã§ãïŒäŸïŒããŒã ã®ã¢ãã¬ã¹ã®ã¿èš±å¯ïŒã
äŸïŒAppMaster ã§é¡§å®¢ããŒã¿ã«ãäœã£ããšããŸããã¢ãã€ã«ã¢ããªãããã°ã€ã³ã³ãŒããã¡ãŒã«ã§éã£ãŠããšåŒã¶ãšãã¢ããªã¯ããã¯ãšã³ããå©ããããã¯ãšã³ãã prod ãŸã㯠staging ã®ã¡ãŒã«ã·ãŒã¯ã¬ãããç°å¢ããèªã¿åã£ãŠéä¿¡ããŸãããã¹ã¿ãŒãã¹ããŒãžã³ã°ã䜿ãå Žåã¯èš±å¯ãªã¹ããå®éã®é¡§å®¢å®éä¿¡ãé²ãããã°ã«ã¯éä¿¡æåã®æ å ±ã¯æ®ããããŒã¯é²åºããŸããã
Webhook ã·ãŒã¯ã¬ããïŒçœ²åãæ€èšŒãå転
Webhook ã®ã»ãã¥ãªãã£ã¯äžã€ã®ã«ãŒã«ã«åž°çããŸãïŒããã¯ãšã³ãã«ã ãæ®ãã·ãŒã¯ã¬ããã§å¿ ãåãªã¯ãšã¹ããæ€èšŒããããšãã·ãŒã¯ã¬ããã Web ãã¢ãã€ã«ã¢ããªã«æž¡ããšãããã¯ãã¯ãã·ãŒã¯ã¬ããã§ã¯ãããŸããã
眲åãšæ€èšŒ
Webhook ã¯åä¿¡ã«ãŒã決æžã®ããã«æ±ã£ãŠãã ããïŒæ€èšŒããããŸã§äœãåãä»ããªãããããã€ãã¯ãã€ããŒããšå ±æã·ãŒã¯ã¬ããããèšç®ãã眲åããããéããŸãããµãŒããŒåŽã§æåŸ ããã眲åãåèšç®ããŠæ¯èŒããŸãã
åçŽãªæ€èšŒãããŒïŒ
- åä¿¡ããçã®ãªã¯ãšã¹ãããã£ããã®ãŸãŸèªã¿åãïŒåãã©ãŒãããããªãïŒ
- Webhook ã·ãŒã¯ã¬ããã§æåŸ çœ²åãèšç®ãã
- 宿°æéæ¯èŒã§æ¯èŒãã
- æ¬ èœãŸãã¯ç¡å¹ãªçœ²å㯠401 ã 403 ã§æåŠãã
- ãã®åŸã§ JSON ãè§£æããŠã€ãã³ããåŠçãã
devãstagingãprod ã§å¥ã ã® webhook ãšã³ããã€ã³ããšå¥ã ã®ã·ãŒã¯ã¬ããã䜿ã£ãŠãã ãããããã«ãããã¹ãã·ã¹ãã ãæ¬çªã¢ã¯ã·ã§ã³ãåŒãèµ·ããã®ãé²ããäºæ ã屿åãããããªããŸããAppMaster ã§ã¯éåžžãåãããã€çšã«å¥ã®ç°å¢èšå®ãçšæããWebhook ã·ãŒã¯ã¬ããã¯ãµãŒããŒåŽå€æ°ãšããŠä¿æããŸãã
ãªãã¬ã€é²æ¢ãšå転
眲åã¯æ¹ãããé²ããŸããããªãã¬ã€èªäœãèªåã§é²ãããã§ã¯ãããŸãããåãªã¯ãšã¹ããäžåºŠã ãæå¹ã«ãããçãæéçªã«éå®ãããã§ãã¯ã远å ããŠãã ãããäžè¬çãªææ®µã¯ã¿ã€ã ã¹ã¿ã³ãããããšå³ããæéå¶éããã³ã¹ããŸãã¯éè€åŠçãæåŠããããã® idempotency ããŒã®ä¿åãªã©ã§ãã
å転ã¯å¿ èŠã«ãªãåã«èšç»ããŠãã ãããå®å šãªãã¿ãŒã³ã¯çæéã§äºã€ã®æå¹ãªã·ãŒã¯ã¬ããã蚱容ããããšã§ãïŒãããã€ããæŽæ°ããéã¯ã©ã¡ãã®ã·ãŒã¯ã¬ããã§ãæ€èšŒãåãå ¥ããç§»è¡åŸã«å€ãæ¹ã廿¢ããŸããæç¢ºãªåæ¿æéãèšããå€ã眲åã®ãã©ãã£ãã¯ãç£èŠããŠãã ããã
ãã°ã«ã泚æããŠãã ãããWebhook ãã€ããŒãã«ã¯ã¡ãŒã«ãäœæãæ±ºæžã¡ã¿ããŒã¿ãå«ãŸããããšãããããŸããã€ãã³ã IDãã¿ã€ããæ€èšŒçµæã¯ãã°ã«æ®ããŠãããããããã€ããŒãå šæã¯åºåããªãã§ãã ããã
é¿ããã¹ãäžè¬çãªãã¹ãšçœ
å€ãã®æŒæŽ©ã¯äŸ¿å©ãããæ¥ãç¿æ £ã®ç£ç©ã§ãéçºäžã«äŸ¿å©ã ã£ãããšãã¹ããŒãžã³ã°ãæ¬çªã«ã³ããŒãããŠããŸããŸãã
ããŒã«ã«ã® .env ãæ°žé ã«å®å
šãªå Žæã ãšæã蟌ãã®ã¯ããããèœãšã穎ãã©ãããããã§ã¯åé¡ãªããããããŸãããããªããžããªã«ã³ããŒããããå
±æ ZIP ã«å
¥ã£ãç¬éã«å±éºã«ãªããŸãã.env ã䜿ããªãããŒãžã§ã³ç®¡çã§ç¡èŠããæ¬çªãããã€ã§ã¯ç°å¢èšå®ã«çœ®ãæããŠãã ããã
å šç°å¢ã§åãè³æ Œæ å ±ã䜿ãã®ãé »ç¹ãªåé¡ã§ããdevãstagingãprod ã§åã API ããŒã䜿ããšãdev ã®ãã¹ãæ¬çªã®äºæ ã«ã€ãªãããŸããéµãåããã°å転ã倱å¹ãç£æ»ã楜ã«ãªããŸãã
Web ããã³ããšã³ããã¢ãã€ã«ã¢ããªã§ãã«ãæã«ã·ãŒã¯ã¬ãããæ³šå ¥ããã®ã¯ç¹ã«å±éºã§ããã·ãŒã¯ã¬ãããã³ã³ãã€ã«æžã¿ãã³ãã«ãã¢ããªããã±ãŒãžã«å ¥ããšæœåºå¯èœã ãšä»®å®ããŠãã ãããããã³ããšã³ãã«ã¯å ¬éèšå®ïŒAPI ã®ããŒã¹ URL ãªã©ïŒã ããæž¡ããæ©å¯ã¯ãµãŒããŒã«çœ®ãããšã
ãã°ã¯éããªæŒæŽ©æºã§ããäžæçãªãããã°åºåãäœã¶æãæ®ãç¶ããããšããããŸããå€ã確èªããå¿ èŠããããªããã¹ã¯ãã圢ïŒäŸïŒæ«å°Ÿ4æåã ãïŒã§ãã°ãåããäžèŠã«ãªã£ããããã«åé€ããŠãã ããã
å±éºä¿¡å·ïŒã¬ãããã©ãã°ïŒ
- ã·ãŒã¯ã¬ããã Git å±¥æŽã«æ®ã£ãŠãã
- ãã¹ãŠã®ç°å¢ã§äžã€ã®ããŒã䜿ãã
- ã¢ãã€ã«ã¢ããªã«ãã³ããŒããŒã SMTP ãã¹ã¯ãŒããå«ãŸããŠãã
- ãµããŒããã±ããã«ãããä»ãã®ãªã¯ãšã¹ããã³ãããã
- å€ã base64 ãé ããã£ãŒã«ãã§ãé ãããŠããã
ãšã³ã³ãŒãã¯ä¿è·ã§ã¯ãªããé ããã£ãŒã«ãããŠãŒã¶ãŒã«èŠããããšãå€ãã§ãã
AppMaster ã䜿ã£ãŠãããªããç°å¢ããšã®ã©ã³ã¿ã€ã èšå®ã«æ©å¯å€ã眮ããã¯ã©ã€ã¢ã³ãã¢ããªã«ã¯éæ©å¯èšå®ã ããæž¡ãããã«ããŠãã ãããçŸå®ç¢ºèªã®äžäŸãšããŠããã©ãŠã¶ãèŠããããã®ã¯ãã¹ãŠå ¬éãšèŠãªããã§ãã¯ãããŠãã ããã
åºè·åã®ã¯ã€ãã¯ãã§ãã¯ãªã¹ã
ãäœãæŒãããããæèããæçµç¢ºèªãè¡ã£ãŠãã ãããã»ãšãã©ã®äºæ ã¯äºçްãªãã®ã§ãïŒããŒããã±ããã«è²Œã£ããèšå®ç»é¢ã®ã¹ã¯ãªãŒã³ã·ã§ããããã«ãææç©ã«ã·ãŒã¯ã¬ãããå«ãŸããŠããçã
åºè·åã®åºæ¬ç¢ºèªïŒ
- ã·ãŒã¯ã¬ããããªããžããªå±¥æŽã課é¡ãããã¥ã¡ã³ããã¹ã¯ãªãŒã³ã·ã§ããããã£ãããã°ã«ãªãããšãããäžåºŠã§ã貌ã£ããªãæŒæŽ©ãåæã«å転ããã
- Webã»ã¢ãã€ã«ãã«ãã«ã¯å ¬éèšå®ïŒAPI ããŒã¹ URLããã£ãŒãã£ãŒãã©ã°ïŒã ããå«ãŸããŠããããšãç§å¯éµãSMTP ãã¹ã¯ãŒããWebhook 眲åã·ãŒã¯ã¬ããã¯ãµãŒããŒåŽãç°å¢å¥ã·ãŒã¯ã¬ããã¹ãã¢ã«çœ®ãã
- ã¹ããŒãžã³ã°ã¯æ¬çªãšåé¢ãããŠããããšãå°çšã® API ããŒãSMTP ã¢ã«ãŠã³ãããã¹ãçšæ±ºæžïŒWebhook ãšã³ããã€ã³ãã䜿ããã¹ããŒãžã³ã°ã prod ã®ããŒã¿ããŒã¹ãç§å¯ã¹ãã¢ãèªããªãããã«ããã
- CI ãã°ãã¢ãã¿ãªã³ã°ããšã©ãŒã¬ããŒãã«ææãªå€ãåºåãããªãããšããã«ãåºåãã¯ã©ãã·ã¥ã¬ããŒãããããã°ãã°ã確èªããããŒã¯ã³ã¯ãã¹ã¯ã
Authorizationã®ãããªãããã¯èµ€ååããã - ã³ãŒã倿Žãªãã§çŽ æ©ãå転ã»åãæ¶ãã§ããããšãã·ãŒã¯ã¬ããã¯ãããã€æã«æ³šå ¥ãããïŒç°å¢å€æ°ãã·ãŒã¯ã¬ãããããŒãžã£ïŒããã«ããããŒå€æŽãèšå®æŽæ°ã§æžãããã«ããã
AppMaster ã䜿ã£ãŠããå Žåã¯ãã·ãŒã¯ã¬ãããåç°å¢ã®ãããã€æèšå®ãšããŠæ±ããUI ç»é¢ããšã¯ã¹ããŒããã«ãã«çŒã蟌ãŸãªãããã«ããŠãã ãããæçµãã§ãã¯ãšããŠãã³ã³ãã€ã«æžã¿ææç©ããã°ã§ sk_liveãBearer ãSMTP ãã¹ãåãªã©ã®ãã¿ãŒã³ãæ€çŽ¢ãããšè¯ãã§ãããã
çµ±åããšã«ããã«ã¹ã€ããããæžãåºããŠãããšäŸ¿å©ã§ãïŒã©ãã§ããŒãç¡å¹åãããã誰ã5å以å ã«ã§ããããæç€ºããããšã
äŸïŒæ±ºæžãã¡ãŒã«ãWebhook ã®ã·ããªãª
3人ã®ããŒã ã顧客ããŒã¿ã«ïŒWebïŒãã¢ãã€ã«ã¢ããªãé åæžãéãå°ããªããã¯ã°ã©ãŠã³ããžã§ããéçšããŠãããšããŸããç°å¢ã¯ devïŒã©ãããããïŒãstagingïŒQAïŒãprodïŒæ¬çªïŒãã·ãŒã¯ã¬ãã管çã¯æ¥åžžäœæ¥ãé ãããªãããšãæãŸããŸãã
ããŒã«ã«éçºã§ã¯ãµã³ãããã¯ã¹ã®æ±ºæžããŒãšãã¹ã SMTP ã¢ã«ãŠã³ãã ãã䜿ããŸããåéçºè
ã¯ããŒã«ã«ã®ç°å¢å€æ°ïŒãŸãã¯è¿œè·¡å¯Ÿè±¡å€ã®ããŒã«ã«ãã¡ã€ã«ãç°å¢å€æ°ã«èªã¿èŸŒãïŒã«ã·ãŒã¯ã¬ãããä¿æãããªããžããªã«å
¥ããŸãããWebãã¢ãã€ã«ãããã¯ã°ã©ãŠã³ããžã§ãã¯åã倿°åïŒäŸïŒPAYMENTS_KEYãSMTP_USERãWEBHOOK_SECRETïŒãèªã¿ãŸãããå€ã¯ç°å¢ããšã«ç°ãªããŸãã
ã¹ããŒãžã³ã°ã§ã¯ CI ããã«ãããããã€ãããã©ãããã©ãŒã ãã©ã³ã¿ã€ã ã§ã·ãŒã¯ã¬ãããæ³šå ¥ããŸããã¹ããŒãžã³ã°ã¯å°çšã®æ±ºæžã¢ã«ãŠã³ããSMTP è³æ Œæ å ±ãWebhook 眲åã·ãŒã¯ã¬ããã䜿ããQA ã¯æ¬çªã«è§Šããã«å®ãããŒããã¹ãã§ããŸãã
æ¬çªã§ã¯åããã«ãææç©ããããã€ããŸãããã·ãŒã¯ã¬ããã¯å°çšã®ã·ãŒã¯ã¬ããã¹ãã¢ïŒãŸãã¯ã¯ã©ãŠããããã€ãã®ãããŒãžãã·ãŒã¯ã¬ããïŒããèªã¿åãããå®è¡äžã®ãµãŒãã¹ã§ããå©çšã§ããŸãããããã«ã¢ã¯ã»ã¹æš©ãå³ããããŠãããã¯ã°ã©ãŠã³ããžã§ãã ãã SMTP è³æ Œæ å ±ãèªã¿ãWebhook ãã³ãã©ã ãã webhook ã·ãŒã¯ã¬ãããèªãããã«ããŸãã
ããŒãé²åºãããïŒäŸïŒã¹ã¯ãªãŒã³ã·ã§ããã« API ããŒãæ ãïŒæ¬¡ã®æé ãèžã¿ãŸãïŒ
- é²åºããããŒãå³åº§ã«ç¡å¹åããé¢é£ã·ãŒã¯ã¬ãããå転ãã
- é²åºæéäžã®äžå¯©ãªå©çšããã°ã§æ€çŽ¢ãã
- æ°ããå€ãæŸãããã«ãµãŒãã¹ãåãããã€ãã
- èµ·ããããšãææžåããããªã³ãããã¹ãã£ã³ãªã©ã®ã¬ãŒãã¬ãŒã«ã远å ãã
ããŒã«ã«äœæ¥ã楜ã«ããããã«æ¬çªã·ãŒã¯ã¬ããã¯æ±ºããŠå ±æããŸãããéçºè ã¯ãµã³ãããã¯ã¹ã¢ã«ãŠã³ãã䜿ããAppMaster ã®ãããªããŒã«ã䜿ãå Žå㯠dev/staging/prod ã®ç°å¢å€ãåããŠåãããžãã¯ãå®å šã«å®è¡ã§ããããã«ããŸãã
次ã®ã¹ãããïŒã¯ãŒã¯ãããŒã«ç¹°ãè¿ãçµã¿èŸŒã
ã·ãŒã¯ã¬ãã管çãè¡çäœæ¥ãšããŠæ±ããŸããããæåã¯é¢åã§ããæ £ããã°æ¥åžžã«ãªããŸãã
ãŸãã誰ã§ãæŽæ°ã§ãããããªç°¡åãªã·ãŒã¯ã¬ãããããããã¬ãŒã³ãªèšèã§æžãåºããŠãã ããïŒ
- ãã®ã·ãŒã¯ã¬ãããäœãïŒAPI ããŒãSMTP ãã¹ã¯ãŒããWebhook ã·ãŒã¯ã¬ããïŒ
- ã©ãã§äœ¿ãããŠãããïŒãµãŒãã¹ããžã§ããã¢ãã€ã«ããã³ãã®ããã·ã¥ããŒãïŒ
- åç°å¢ã§ã©ãã«ä¿åãããŠãããïŒdevãstagingãprodïŒ
- 誰ãã¢ã¯ã»ã¹ã§ãããïŒäººãCI/CDãã©ã³ã¿ã€ã ã®ã¿ïŒ
- ã©ãå転ãããïŒæé ãšç£èŠãã€ã³ãïŒ
次ã«ãç°å¢ããšã«äžã€ã®ä¿åãã¿ãŒã³ãéžã³ãå®ãç¶ããŠãã ãããäžè²«æ§ã¯å·§åŠãã«åããŸããäŸïŒéçºè ã¯ããŒã«ã«ã·ãŒã¯ã¬ããã¹ãã¢ãã¹ããŒãžã³ã°ã¯éå®ã¢ã¯ã»ã¹ã®ãããŒãžãã·ãŒã¯ã¬ãããæ¬çªã¯åããããŒãžãã·ãŒã¯ã¬ããã«å ããŠããå³ããç£æ»ãè¡ãã
å転ã¹ã±ãžã¥ãŒã«ãšå®è¡å¯èœãªã€ã³ã·ãã³ããã©ã³ã远å ããŸãïŒ
- ãªã¹ã¯ã®é«ãããŒã¯ã«ã¬ã³ããŒã«æ²¿ã£ãŠå転ããã¹ã¿ãã倿ŽåŸã¯å³æå転ãã
- æŒæŽ©ãåæã«ïŒç¡å¹åã眮æããã©ãã£ãã¯å埩ã®ç¢ºèªãè¡ã
- 誰ããã€äœãåãããããã°ã«æ®ã
- ãã©ã¹ãååŸã®ãã§ãã¯ïŒæ±ºæžãã¡ãŒã«éä¿¡ãWebhookïŒã決ãã
AppMasterïŒappmaster.ioïŒã§æ§ç¯ããå Žåã¯ããã©ã€ããŒãããŒããµãŒããŒåŽèšå®ã«ä¿æããç°å¢ããšã«ãããã€ããŠã¯ã©ã€ã¢ã³ããã«ãã«ã·ãŒã¯ã¬ãããåã蟌ãŸããªãããã«ããŠãã ããããŸãã¹ããŒãžã³ã°ã§äžã€ã®ããŒããšã³ãããŒãšã³ãã§å転ãããŠæ€èšŒïŒã¹ãã¢æŽæ°ãåãããã€ã確èªãå€ãããŒç¡å¹åïŒããã°ããã®æé ãä»ã®ã·ãŒã¯ã¬ããã«ãç¹°ãè¿ããŸãã
ãããã質å
ã·ãŒã¯ã¬ãã㯠API ããŒãããŒã¿ããŒã¹ãã¹ã¯ãŒããSMTP ãã°ã€ã³ãWebhook 眲åã·ãŒã¯ã¬ããã®ããã«ãã¢ã¯ã»ã¹ãèš±å¯ãããæ¬äººæ§ã蚌æãããããå€ã§ããã³ã³ãã£ã°ã¯ã¿ã€ã ã¢ãŠãããã£ãŒãã£ãŒãã©ã°åãå ¬éãµã€ãã®ããŒã¹URLã®ããã«å ¬éããŠãåé¡ãªãå€ã§ãã
ã¹ã¯ãªãŒã³ã·ã§ããããªããžããªããã³ããŒããããšè¢«å®³ãåºããããªå€ã¯ãã·ãŒã¯ã¬ãããšããŠæ±ã£ãŠãã ããã
被害ç¯å²ïŒblast radiusïŒãå°ããããããã«ãç°å¢ããšã«å¥ã®ã·ãŒã¯ã¬ããã䜿ã£ãŠãã ãããéçºçšã®ã©ãããããããã¹ããµãŒããŒãã¹ããŒãžã³ã°ãããŒãæŒãããŠããæ¬çªãè§£é€ã§ããããŒã«ã¯ããããããŸããã
ç°å¢ãåããããšã§ãéçºãã¹ããŒãžã³ã°ã§ã¯ããç·©ãæš©éãæ¬çªã§ã¯ãã峿 Œã§ç£æ»å¯èœãªæš©éãé©çšã§ããŸãã
ã³ã³ãã€ã«ãããããã³ãã«ããããã¢ããããŒãããããã®ã¯åŸã§æ€æ»ã»æœåºããåŸããšä»®å®ããŠãã ãããã·ãŒã¯ã¬ããããœãŒã¹ã³ãŒãããã«ãæã®å€æ°ã«å ¥ãããç°å¢å€æ°ãã·ãŒã¯ã¬ãããããŒãžã£ã§ã©ã³ã¿ã€ã ã«æ³šå ¥ããããã«ããŸãã
ã·ãŒã¯ã¬ãããåèšå®ïŒrotateïŒã§ããŠåãã«ãäžèŠã§äº€æã§ããã°ãå®å šãªæ¹åã«ããããšãå€ãã§ãã
å人éçºçšã®ããŒã«ã« .env ãã¡ã€ã«ã¯ãããŒãžã§ã³ç®¡çã«å
¥ããã¢ãŒãã£ãã¡ã¯ãã«çŒã蟌ãŸããªãéãã¯åé¡ãããŸããã.env ãç¡èŠãªã¹ãã«å
¥ãããã£ããããã±ããã§å
±æããã ZIP ã«å
¥ããŠé
ã£ããããªãã§ãã ããã
ã¹ããŒãžã³ã°ãæ¬çªã§ã¯ããã¡ã€ã«ã«é Œããä¿è·ãããç°å¢èšå®ãã·ãŒã¯ã¬ãããããŒãžã£ãäœ¿ãæ¹ãå®å šã§ãã
ã¯ã©ã€ã¢ã³ãã¢ããªã«ã¯ç§å¯éµãSMTP ãã¹ã¯ãŒããããŒã¿ããŒã¹è³æ Œæ å ±ãWebhook ã®çœ²åã·ãŒã¯ã¬ãããå ¥ããªãã§ãã ãããã³ãŒãããŠãŒã¶ãŒããã€ã¹äžã§åãå Žåãæ»æè ã¯å€ãæœåºã§ãããšèŠãªãã¹ãã§ãã
ã¯ã©ã€ã¢ã³ããããµãŒãããŒã㣠API ãåŒã¶å¿ èŠãããå Žåã¯ãã·ãŒã¯ã¬ããããµãŒããŒåŽã«çœ®ããã¯ã©ã€ã¢ã³ãã¯ããã¯ãšã³ãçµç±ã§ãªã¯ãšã¹ãããããã«ããŸãã
å転ïŒrotationïŒãèšå®å€æŽã§å®äºã§ããããã«èšèšããŠãã ãããã·ãŒã¯ã¬ãããã³ãŒãããŒã¹ã®å€ã«ä¿ç®¡ãããµãŒãã¹ãåãããã€ããŠæ°ããå€ãåæ ãããéçšã«ããã°ãå転ãç°¡åã«ãªããŸããææè ãšãªãã€ã³ããŒã®åšæã決ããŠãããŸãããã
å¯èœãªãçæéã ãå€ãããŒãšæ°ããããŒãå ±åãããç§»è¡åŸã«å€ãæ¹ã廿¢ãããã¿ãŒã³ãå®å šã§ãã
ãµãŒããŒã§å¿ ãã·ãŒã¯ã¬ããã䜿ã£ãŠæ€èšŒããŠãã ãããåä¿¡ãªã¯ãšã¹ãã¯ãã€ããŒãã®ãŸãŸïŒãã©ãŒããããå€ããã«ïŒèªã¿ãæåŸ ããã眲åãèšç®ããŠå®æ°æéæ¯èŒã§æ€èšŒããŠããåŠçããŸãã
ç°å¢ããšã«å¥ã ã® webhook ãšã³ããã€ã³ããšã·ãŒã¯ã¬ããã䜿ãã°ããã¹ããæ¬çªã¢ã¯ã·ã§ã³ãåŒãèµ·ããã®ãé²ããŸãã
ãã°ã«ã·ãŒã¯ã¬ãããå šããããå šãã€ããŒããåºåããªãã§ãã ããããã©ãã«ã·ã¥ãŒããå¿ èŠãªããã€ãã³ãIDãã¹ããŒã¿ã¹ã³ãŒãããã¹ã¯ããå€ãªã©ã®ã¡ã¿ããŒã¿ã ãããã°ã«æ®ããè³æ Œæ å ±ã¯èšé²ããªãããã«ããŸãã
ãã±ããããã£ããã«ãã°ã貌ãå Žåã¯å ¬éããåŸããšèããå ±æåã«å¿ ãèµ€ååïŒã¬ãã¯ãïŒããŠãã ããã
ã¹ããŒãžã³ã°ã¯æ¬çªã®æåãåçŸãã€ã€ãç¬ç«ããŠããã¹ãã§ããå¯èœãªããã³ããŒã¢ã«ãŠã³ãããããžã§ã¯ããåããSMTPãæ±ºæžéµãWebhook ã·ãŒã¯ã¬ãããå¥ã«ããŸãã
ã¹ããŒãžã³ã°ããæ¬çªã®ã·ãŒã¯ã¬ããã¹ãã¢ãããŒã¿ããŒã¹ã«èªåã¢ã¯ã»ã¹ã§ããªãããã¬ãŒãã¬ãŒã«ãèšããŠãã ããã
AppMaster ã§ã¯ãåãããã€å ã®ç°å¢å¥ã©ã³ã¿ã€ã èšå®ã«æ©å¯å€ãä¿æããUI ãã¯ã©ã€ã¢ã³ãåŽã®èšå®ã«å ¥ããªãã§ãã ãããããããããšã§ãçæããã Web ãã¢ãã€ã«ãã«ãã«ã¯å ¬éèšå®ã®ã¿ãå«ãŸããã·ãŒã¯ã¬ããã¯ãµãŒããŒåŽã«æ®ããŸãã
åã倿°åã devãstagingãprod ã§äœ¿ããå€ã ããç°å¢ããšã«å€ããéçšãè¯ãå®è·µã§ãã


