æ··ä¹±ããªãããŒã³ãŒãã¢ããªã®ããã® devïŒstagingïŒprod ç°å¢
devãstagingãprod ã®ç°å¢ã«ãããã¹ããå®ãŠãŒã¶ãŒãå£ãã®ãé²ããŸããããŒã¿ããŒã¹ãã·ãŒã¯ã¬ããã飿ºãåããã·ã³ãã«ãªã«ãŒã«ãšãã§ãã¯æ¹æ³ãåŠã³ãŸãããã

ç°å¢ãåããéèŠæ§ïŒãããŠå€±æãèµ·ããå Žé¢ïŒ
devãstagingãprod ç°å¢ã®è©±ã¯äžã€ã®çŽæããšã§ãïŒæ¬çªãŠãŒã¶ãŒãå®ããŒã¿ãå®éã®ãéãå±éºã«ããããã«è©Šããããšã
ãã®çŽæãç Žãããã®ã¯ãdev ãšæ¬çªãéèŠãªãã®ãå ±æããç¬éãç¹ã«ããŒã¿ããŒã¹ã API ããŒãå ±æãããšãã§ãã"ã¡ãã£ãšãããã¹ã" ãæ¬åœã®äºæ ã«å€ããã®ã¯ãã¢ããªãç·Žç¿ãšæ¬çªãåºå¥ã§ããªãããã§ãã
ç°¡åã«èšãã°ïŒ
- Dev ã¯çŽ æ©ãäœã£ãŠå€ããå Žæãå€å°æ£ããã£ãŠãæ§ããªãã
- Staging ã¯æ¬çªã«äŒŒãããªããŒãµã«ç©ºéã§ããªãªãŒã¹ã端ãã端ãŸã§æ€èšŒããã
- Prod ã¯å®éã®ãŠãŒã¶ãŒãé Œãç°å¢ã§ãæ éã«å€æŽããã¹ãã
åé¢ããŠãããšããã¹ãŠã®å€æŽãé«ãªã¹ã¯äœæ¥ãšããŠæ±ããªããŠãããªããäœæ¥ãéããªããŸãã
å®éã«èµ·ãã倱æã®äŸïŒèª°ããæ°ãããã§ãã¯ã¢ãŠãããã¹ããããã¢ããªãæ¬çªã® Stripe ããŒã䜿ã£ãŠããŠããã¹ãã§å®éã«èª²éãçºçããé åæžãéããããµããŒããè¿é察å¿ã«è¿œããããããã㯠dev ã§ããŒã¿ã¯ãªãŒã³ã¢ãããèµ°ããããå ±æã®æ¬çª DB ãæããŠããŠé¡§å®¢ã¬ã³ãŒããæ¶ãããã¡ãŒã«æ©èœãã©ã€ããããã€ãã§ãã¹ãããŠããŸããæ°å人ã®å®ãŠãŒã¶ãŒã«ããããããã¡ãŒã«ãéãããããšããããŸãã
å€ãã®åé¡ã¯åã 3 ã€ã®åå ããæ¥ãŸãïŒå ±æããŒã¿ããŒã¹ïŒãã¹ããå®ããŒã¿ãæžãæããïŒãå ±æã·ãŒã¯ã¬ããïŒãã¹ããæ¬çªãµãŒãã¹ãåŒã¶ïŒãå ±æé£æºïŒWebhookãã¡ãŒã«ãSMSãæ±ºæžãå®è¡ãããïŒã§ãã
AppMaster ã®ãããªãã©ãããã©ãŒã ã¯é«éãªéçºãå©ããŸãããå®å šæ§ã¯ããŒã¿ãã·ãŒã¯ã¬ããã飿ºãæåããã©ãåãåãããã«äŸåããŸãã
ç¶æã§ããã·ã³ãã«ãªç°å¢ã¢ãã«ãéžã¶
ã»ãšãã©ã®ããŒã ã«ãšã£ãŠãdevãstagingãprod ã® 3 ç°å¢ãæé©ã§ããã»ããã¢ãããé¢åãªå¯ãããžã§ã¯ãã«ãªãããäœæ¥ãæŽçã§ããŸãã
åãã¢ããªã«å¯Ÿã㊠3 ã€ã® "äžç" ãæã€ããã«æ±ã£ãŠãã ãããããããåºæã®ããŒã¿ããŒã¹ãåºæã®ã·ãŒã¯ã¬ãããåºæã®é£æºèšå®ãæã€ã¹ãã§ããããããã°ãã¹ãã®ç»é²ãäžå ·åã®ããèªååãèšå®ãã¹ã® API åŒã³åºããæ¬çªããŒã¿ã«è§ŠããããŸããã
éåžžã«åæã®ãããã¿ã€ãã§ã¯ 2 ç°å¢ïŒ"dev" ãš "prod"ïŒã§ãåãå ¥ããããŸããéããšã³ã¹ãåæžã¯åŸãããŸãããå®å šãªãªããŒãµã«ç©ºéãç ç²ã«ããŸããããŒã å€ã®äººã䜿ããªããªã¹ã¯ã¯æ¥éã«é«ãŸããŸãã
人ãã³ã³ãã©ã€ã¢ã³ã¹ã飿ºãå³ãããªãã° 3 ã€ä»¥äžãå¿ èŠã«ãªããããããŸããããããã远å 㯠UATïŒãŠãŒã¶ãŒåãå ¥ããã¹ãïŒãçµ±åãã¹ãçšã®å°çš sandboxãç·æ¥ãããçšã®äžæç㪠hotfix ç°å¢ãªã©ã§ããå¢ããå Žåã¯ååãå°å³ã§äºæž¬å¯èœã«ïŒdevãstagingãuatãprodã"staging2" ã "final-final"ãããŒã å°çšã©ãã«ã®ãããªèª°ãçè§£ããªãååã¯é¿ããŸãããã
ç°å¢ãå¢ãããšã³ã¹ããšæéã¯å¢ããŸãããæ¬çªäºæ äžä»¶ã®ã³ã¹ããšæ¯ã¹ãã°å°ããããšãå€ãã§ãã远å ã®ãã¹ãã£ã³ã°ãããŒã¿ããŒã¹ãã·ãŒã¯ã¬ããã飿ºã®èšå®æéãèŠèŸŒãã§ãã ãããAppMaster ã®ãããªããŒã³ãŒããã©ãããã©ãŒã ã§ã¯ãã¢ããªã®ããžãã¯ãå€ããã«ç°å¢èšå®ã ãå·®ãæ¿ããããå©ç¹ããããŸãã
devãstagingãprod ãå¥å šã«ä¿ã€ 5 ã€ã®ã«ãŒã«
以äžã®ã«ãŒã«ã"ã¡ãã£ãšãããã¹ã"ãæ éãé害ã«å€ããªãå©ãã«ãªããŸãã
-
ç°å¢éã§ããŒã¿ããŒã¹ãå ±æããªãã Dev ã Staging ãæ¬çªã®ããŒãã«ãåç §ããŠã¯ãããŸãããæäœã§ãå¥ã¹ããŒãã§ã¯ãªããå¥ã€ã³ã¹ã¿ã³ã¹ãå¥ããŒã¿ããŒã¹ã䜿ãã¹ãã§ãã
-
ã·ãŒã¯ã¬ããã¯ç°å¢ããšã«åããã ããŒã¿ããŒã¹ãŠãŒã¶ãŒãAPI ããŒãWebhook ã®çœ²åã·ãŒã¯ã¬ãããOAuth ã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ãããæå·éµãªã©ã¯ç°å¢ããšã«åºæã«ããŸãããã dev ããŒãã¹ã¯ãªãŒã³ã·ã§ããããã£ããã§æŒããŠããdev ã«ãã圱é¿ããªãããã«ããããã§ãã
-
飿ºã¯ "ãã¹ã" ãš "ã©ã€ã" ã® 2 ã·ã¹ãã ãšããŠæ±ãã ãµã³ãããã¯ã¹ã¢ã«ãŠã³ãããã¹ãã¢ãŒãã䜿ããŸããæäŸè ããã®æ©èœãæããªãå Žåã¯å®å šã¹ã€ãããäœãïŒdev ã§ã¯å€åãåŒã³åºããç¡å¹åããããããŒåä¿¡å ã«éãããŸãã¯ãã£ãŒãã£ãŒãã©ã°ã®èåŸã«çœ®ãïŒãæ¯æããã¡ãã»ãŒãžããªãŒãã¡ãŒã·ã§ã³ã§ç¹ã«éèŠã§ãã
-
æ¬çªã®å€æŽã¯å¶éããã æ¬çªã¯ç·šéæš©éãæã€äººãå°ãªããæ¿èªã匷åããŸããããŒã³ãŒãããŒã«ã§ã¯å°ã㪠UI ç·šéã§ãããžãã¯ã«åœ±é¿ããã®ã§ãæ¬çªã¯ç¹å¥ã«æ³šæãæã£ãŠãã ããã
-
倿Žã¯äžæ¹åã«ã ãé²ããã dev â staging â prod ã®é ã«é²ããçŽæ¥ prod ãããããã£ãã¯ã¹ã§çŽãã®ã¯é¿ããŸãããããªããªãããã¯ããŒããå¿ãããšæ¬¡ã®ãããã€ã§äžæžããããããããã§ãã
äŸïŒAppMaster ã§ãµããŒãããŒã¿ã«ãäœããšããŸããdev ã§ã¯éçºçš PostgreSQL ãšãã¹ã Stripe ã¢ã«ãŠã³ãã«æ¥ç¶ãstaging ã§ã¯ã¹ããŒãã®å¥ã³ããŒãšã¹ããŒãžã³ã°å°çš API ããŒã§ãã«ãã¹ããå®è¡ãstaging ããã¹ããã prod ã«ãããã€ããæ¬çªããŒãšæ¬çªããŒã¿ããŒã¹ã䜿ããŸãã
ããŒã¿ããŒã¹ïŒåé¢ããã·ãŒãããå®å šã«ãã€ã°ã¬ãŒããã
devãstagingãprod ãåãããŒã¿ããŒã¹ãå ±æããŠãããªããå®éã«ã¯ç°å¢ãåããããšã«ãªããŸãããäºçްãªãã¹ãã§ãå®ããŒã¿ãæžãæããã¡ãŒã«ãçºç«ãããã¬ããŒããå£ãããšããããŸããããŒã¿ããŒã¹ããã¡ã€ã«ã¹ãã¬ãŒãžã¯ç°å¢åºæã®ãªãœãŒã¹ãšããŠæ±ããå ±æããŒã«ãšèããªãã§ãã ããã
åé¢ã®æ¹æ³ã¯ããã€ããããŸããããŒã ãæ¯åå®è¡ããçŸå®çãªæ¹æ³ãéžãã§ãã ããïŒ
- å¥ã ã®ããŒã¿ããŒã¹ãµãŒãïŒæè¯ã®åé¢ïŒ: æ¬çªã¯å°çšã® PostgreSQL ã€ã³ã¹ã¿ã³ã¹ã§åãããdev ãš staging ã¯å¥ã®ãã¹ãã§ã
- åãµãŒãäžã®å¥ããŒã¿ããŒã¹:
app_dev,app_staging,app_prodã®ããã«åäžãã¹ãã®å¥ããŒã¿ããŒã¹ã«åããã - å¥ã¹ããŒãïŒã©ãããŠãå¿
èŠãªå Žåã®ã¿ïŒ: 1 ã€ã®ããŒã¿ããŒã¹ã«
dev,staging,prodã¹ããŒããäœãããã ãæ··åããããã®ã§è¿œå ã®ã»ãŒãã¬ãŒãã眮ãã
ã©ããéžã¶ã«ãããååãæ¥ç¶èšå®ã§åãããããããŠãããŸããããæ¬çªã®ããŒã¿ããŒã¹åããã¹ãåã¯ã¹ããŒãžã³ã°ãšçŽãããããªãããã«ããŸãã
ã·ãŒãããŒã¿ïŒãã¹ãã«ååã«ãªã¢ã«ã§ãå®å¿ããŠç ãããã®
ã¹ããŒãžã³ã°ã¯æ¬çªã®ããã«æ¯ãèãã¹ãã§ãããå®éã®å人æ å ±ãå«ããã¹ãã§ã¯ãããŸããããã䜿ãããæ¹æ³ã¯ã管çäžã«ããå°ããªã·ãŒãããŒã¿ãå人æ å ±ãå¿ååããæ¬çªã®ã¹ãããã·ã§ããããŸãã¯å®éã®ããŒã¿åœ¢ç¶ãšãšããžã±ãŒã¹ãæºããåæããŒã¿ã§ãã
ãµããŒãããŒã¿ã«ãªããè¿éäŸé Œããããã°ã€ã³äžå ·åãã®ãããªåæãã±ããã§æ€çŽ¢ããã£ã«ã¿ãæš©éã®ãã¹ããã§ããŸãã顧客ã¡ãã»ãŒãžãé²åºãããå¿ èŠã¯ãããŸããã
å®å šãªãã€ã°ã¬ãŒã·ã§ã³ïŒãŸã stagingããã®åŸ prod
ã¹ããŒãã®å€æŽã¯å€ãã®äºæ ãæããŸããå®å šãªæµãã®äŸïŒ
- 倿Žã¯ãŸã staging ã«é©çšããŠã¹ã¢ãŒã¯ãã¹ããå®è¡ã
- æ¬çªã«è§Šãåã« ããã¯ã¢ãã/ãªã¹ãã¢ãã€ã³ã ãäœãã
- éããªæé垯㫠prod ã§ãã€ã°ã¬ãŒã·ã§ã³ãå®è¡ããããŒã«ããã¯èšç»ãçšæããã
- ç Žå£çãªå€æŽïŒã«ã©ã ã®åé€ãªã©ïŒã¯äžåºŠã«è¡ããªãã
AppMaster ã§ã¯ Data Designer ã®å€æŽãæçµçã« PostgreSQL ã®å€æŽã«ãªããããå ¬éãããã³ã«ãã€ã°ã¬ãŒã·ã§ã³ãšåçã«æ±ã£ãŠãã ããã
鿬çªãã誀ã£ãŠæ¬çªã«æžã蟌ãŸããã®ãé²ãã«ã¯ãç°å¢ããšã®è³æ Œæ å ±ããããã¯ãŒã¯ã¢ã¯ã»ã¹å¶éïŒdev ãã·ã³ã prod ã«å°éã§ããªãããã«ããïŒãè§£æçšã«ã¯èªã¿åãå°çšã¢ã«ãŠã³ãã䜿ããªã©ã®å¯Ÿçãè¬ããŸãããã
ãã¡ã€ã«ãæ·»ä»ãå¿ããã«ãç°å¢ããšã®ãã±ãããç°å¢å¥ãã©ã«ãã䜿ããªããšããã¹ãã®ã¢ããããŒãã顧客ã¬ã³ãŒãã«æ··å ¥ããããšããããŸãã
ã·ãŒã¯ã¬ãããšè³æ Œæ å ±ïŒã¢ããªããã£ããã«æžãæ®ããªã
ã·ãŒã¯ã¬ãããšã¯ã³ããŒããããšå®³ããããã®ãã¹ãŠã§ããäžè¬çã«ã¯ããŒã¿ããŒã¹ãã¹ã¯ãŒããOAuth ã·ãŒã¯ã¬ãããStripe ããŒãã¡ãŒã«ã SMS ãããã€ãã®ããŒãTelegram ãããããŒã¯ã³ãªã©ã§ãã
ã·ãŒã¯ã¬ããã¯é»æ°ã®ããã«æ±ããŸãããïŒå¿ èŠãªå Žæã§äœ¿ãããé²åºãããªããã€ãŸããããŒã³ãŒããããžã§ã¯ãã«åã蟌ãŸãªãããã±ããã«è²Œããªããäžæçãªãã£ããå ±æãããªãããšã§ãã
å®çšã«ãŒã«ã¯ïŒç°å¢ããšã«ã²ãšã»ããã®ã·ãŒã¯ã¬ãããæã€ãç°å¢å€æ°ïŒãŸãã¯ãã©ãããã©ãŒã ã®ã·ãŒã¯ã¬ããã¹ãã¢ïŒãšæç¢ºãªåœåèŠåã䜿ããŸãã
DEV_DB_PASSWORD,DEV_OAUTH_CLIENT_SECRET,DEV_STRIPE_SECRET_KEYSTAGING_DB_PASSWORD,STAGING_OAUTH_CLIENT_SECRET,STAGING_STRIPE_SECRET_KEYPROD_DB_PASSWORD,PROD_OAUTH_CLIENT_SECRET,PROD_STRIPE_SECRET_KEY
AppMaster ã§ã¯ããããåãããã€å ã®ç°å¢èšå®ã«ä¿æããã¢ããªåŽã¯å€æ°åã®ã¿ãåç §ããŠå®éã®å€ãå«ããªãããã«ããŸãã
ä¿åãšåããããã¢ã¯ã»ã¹ç®¡çãéèŠã§ããé²èЧã»ç·šéã§ããäººã¯æå°éã«ãã誰ããã€äœãå€ãããã®ç°¡åãªãã°ãæ®ããŸãããããããããªãªãªãŒã¹ãã§ãã¯ãªã¹ãã®æ³šèšã§ããèšæ¶ã«é Œããããã£ãšãã·ã§ãã
ããŒããŒã·ã§ã³ã¯æããããšã¯ãããŸãããæ¥åžžã«ããŸããããããŒã ã¡ã³ããŒãé¢è·ãããšããå€ãåºãå ±æããããšããæªããæŽ»åããã£ããšãããããŠæ¬çªã¯å®æçã«åãããšãããŒããŒã·ã§ã³åŸã¯äŸåãããããŒãåãã¹ãããŠãã ããïŒãµã€ã³ã€ã³ã決æžïŒãã¹ãã¢ãŒãïŒãã¡ãŒã«/SMS é ä¿¡ïŒãã¹ãã¢ãã¬ã¹/çªå·ïŒãããã¯ã°ã©ãŠã³ããžã§ãã Webhook ãªã©ã
äºæ
ãé²ãããã®æåŸã®æ³šæïŒã¹ã¯ãªãŒã³ã·ã§ãããããã¥ã¡ã³ãã«ã·ãŒã¯ã¬ãããèŒããªãã§ãã ãããèšå®ãèŠããå¿
èŠããããªããã¬ãŒã¹ãã«ãã䜿ããŸãããïŒäŸïŒPROD_STRIPE_SECRET_KEY=xxxxïŒã
飿ºïŒå®ãµãŒãã¹ãåŒã°ãã«å®å šã«ãã¹ããã
飿ºã¯ dev/staging/prod ãå£ããããç®æã§ããééã£ãããŒã§å®éã®èª²éãå®ã¡ãŒã«ãçºçããŸãã鿬çªã§ã¯æ¬çªãšåãæ¯ãèããããäžæ¹ã§ã被害ãèµ·ããªãã¬ãŒãã¬ãŒã«ãå¿ èŠã§ãã
æ¯æãã«ã€ããŠã®æç¢ºã«ãŒã«ïŒã©ã€ãã¢ãŒãã䜿ããã®ã¯æ¬çªã ããdev ãš staging ã§ã¯ãã¹ãã¢ãŒããšå¥ã®ãã¹ãçšååãäŸ¡æ ŒãWebhook ã䜿ã£ãŠãã«ãã§ãã¯ã¢ãŠãã®æµãã詊ããããã«ããŸãã
ã¡ãŒã«ã SMS ã¯ã鿬çªã¡ãã»ãŒãžã¯ãã¹ã ãšä»®å®ããŠãã ãããéä¿¡å ãããŒã å ã®åäžåä¿¡ç®±ã管çãããçªå·ã«ãªãã€ã¬ã¯ãããããããã¯ããã©ã«ãã§ç¡å¹ã«ããŠç¹å®ã®ãã¹ã¿ãŒã ãæå¹ã«ãããªã©ããŸããAppMaster ã®ã¢ãžã¥ãŒã«ã§ã¡ãŒã«/SMS/Telegram ã䜿ãå Žåãåãã«ãŒã«ãé©çšãã鿬çªãå®ãŠãŒã¶ãŒã«å±ããªãããã«ããŸãã
Webhook çšã«ãåé¢ãå¿ èŠã§ããç°å¢ããšã«å¥ã®ãšã³ããã€ã³ããäœããçœ²åæ€èšŒãå¿ ãè¡ã£ãŠãã ãããããã«ããã¹ããŒãžã³ã°ã®ãã©ãã£ãã¯ãæ¬çªãã³ãã©ãå©ãã®ãé²ãããªãããŸãã®åé¡ãæ©æã«èŠã€ããããŸãã
ãµãŒãããŒã㣠API ã«ãµã³ãããã¯ã¹ãããã°ããã䜿ãããªãå Žåã¯å³ããã¬ãŒãå¶éãèªã¿åãå°çšæš©éãä»äžãã鿬çªã®åŒã³åºããäžç®ã§åããããã«ïŒæç¢ºãªããããã¿ã°ãä»ããïŒããŠãããŸãã
å€ãã®äºæ ãé²ãå®å šãã§ãã¯ãªã¹ãïŒ
- devãstagingãprod çšã«é£æºã¢ã«ãŠã³ãïŒãããžã§ã¯ããåé¢ãã
- 鿬çªã®è³æ Œæ å ±ãæ¬çªãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããªãããã«ãã
- äºå®ãžã§ãã¯éæ¬çªã§ã¯ããã©ã«ããªãããŸãã¯ãµã³ãããã¯ã¹ã«åãã
- Webhook ã® URL ãšçœ²åã·ãŒã¯ã¬ããã¯ç°å¢ããšã«åºæã«ãã
- ãã¹ãã¡ãã»ãŒãžããã¹ã課éã¯æç¢ºã«ã©ãã«ä»ããã
äŸïŒã¹ããŒãžã³ã°ã®ãµããŒãããŒã¿ã«ã¯åœã®æ¯æããéç¥ãäœãããããã¹ãŠããŒã åä¿¡ç®±ã«å±ããå€éãããã¯ã¹ããŒãžã³ã°ããŒã¿ã ãã§åãããã«ããã
ã¢ã¯ã»ã¹å¶åŸ¡ãšæ¿èªïŒèª°ãã©ããå€ããããã
ã¢ã¯ã»ã¹å¶åŸ¡ã¯ dev/staging/prod ã®å®å šã®æµã§ããããŒã³ãŒãã¢ããªã§ã¯èª°ããæ¬çªãã¡ãã£ãšçŽãã ãã§äºæ ã«ç¹ããããšãå€ãã§ãã
ã·ã³ãã«ãªåœ¹å²ããå§ããŸããããå°ããããŒã ã§ãé²èЧè ããã¹ã¿ãŒãdev/staging ãç·šéã§ããäººãæ¬çªãšã·ãŒã¯ã¬ããã管çã§ããå°æ°ã®äººãšåããŠãããšå¹æçã§ãã
æ¬çªã¢ã¯ã»ã¹ã¯æ³å®ãããããã«çµã£ãŠãã ãããé±ã«æ¬çªã¢ã¯ã»ã¹ãå¿ èŠãªã人ã«ã¯æä¹ çãªæš©éãäžããªãæ¹ãå®å šã§ããæ¬çªæš©éãäžæçã«å¿ èŠãªå Žåã¯çãæéã ãæš©éãäžããäœæ¥åŸããã«åãæ¶ããŸãã
æ¬çªã«è§Šãåã«è»œãæ¿èªã¹ããããäžã€å ¥ããŠãã ãããå®åã§ã¯ã1 人ããªãªãŒã¹ãæºåãã2 人ç®ãæ¿èªããããšããéçšãçŸå®çã§ããAppMaster ã䜿ããªããæ¬çªã«å ¬éããã¹ããŒã倿Žãé©çšããšãã£ãæäœã¯æç€ºçãªèš±å¯ãå¿ èŠã«ããŠãã ããã
ãŸã誰ããã€ã©ã®ç°å¢ã§äœãå€ããããçŽ æ©ãçããããããã«ç£æ»ã®ä»çµã¿ãä¿æããŸãã
ããŒã«ããã¯èšç»ã¯æ®æ®µããæžããŠãããŸããããããã«åŸ©æ§ã§ãããã®ïŒåã®ãã«ããåãããã€ããã£ãŒãã£ãŒãã©ã°ãç¡å¹åïŒãšäžå¯éãªãã®ïŒããŒã¿åé€ãæ»ããªããã€ã°ã¬ãŒã·ã§ã³ïŒãæèšãã誰ãããªã¬ãŒã§ãããã埩æ§ãã©ã確èªããããæ±ºããŠãããŸãã
ã¹ããããã€ã¹ãããïŒããŒã³ãŒãã¢ããªã® dev/staging/prod ãèšå®ãã
ãŸãç°å¢éã§çµ¶å¯Ÿã«å ±æããŠã¯ãããªããã®ãæžãåºããŸãïŒããŒã¿ããŒã¹ãã·ãŒã¯ã¬ããïŒAPI ããŒãããŒã¯ã³ïŒããããŠå®éã«ã¡ãŒã«ãéã£ããã«ãŒãã課éããããã飿ºã§ããããäžã€ã ãåãããªãããŒã¿ããŒã¹ãåããŠãã ããã
ç¹°ãè¿ãå®è¡ã§ããã»ããã¢ããäŸïŒ
-
ç°å¢ã®åœåãšå¢çãæ±ºããã äžè²«ããååïŒDev, Staging, ProdïŒã䜿ããåç°å¢ãç¬èªã®ããŒã¿ããŒã¹ãã·ãŒã¯ã¬ããã飿ºã¢ã«ãŠã³ããŸãã¯ãã¹ãã¢ãŒããæã€ãšæ±ºããŸãã
-
ã¢ããªãè€è£œããŠèšå®ãåããã AppMaster ã®ãããªããŒã³ãŒããã©ãããã©ãŒã ãªããåãã¢ããªã® Dev ãš Staging ããŒãžã§ã³ãäœæããããžãã¯ã¯åãã«ä¿ã¡ãªããç°å¢èšå®ïŒDB æ¥ç¶æååãAPI ããŒãWebhook URLïŒãåé¢ããŸãã
-
ããŒã¿ããŒã¹ãäœæããŠã·ãŒãããå¢çãæ€èšŒããã 3 ã€ã®ããŒã¿ããŒã¹ïŒãŸãã¯ãããåŸã 3 ã¹ããŒãïŒãäœããDev ãš Staging ã«çŸå®çãªãããŒããŒã¿ãå ¥ããŸããå¢çãã§ãã¯ïŒStaging ã«ã¬ã³ãŒããäœã£ãŠ Prod ã«åºãªãããšã確èªãå察ã確èªããŸãã
-
飿ºãã»ãŒãã¢ãŒãã«ã㊠Webhook ãæ€èšŒããã æ¯æãã¯ãã¹ãã¢ãŒããã¡ãŒã«ã¯ãµã³ãããã¯ã¹åä¿¡ç®±ãã¡ãã»ãŒãžã³ã°ã¯ãã¹ããã£ãã«ã«åããŸãããµã€ã³ã¢ããããã¹ã¯ãŒããªã»ãããæ±ºæžã®äžé£ã®æµããå®è¡ããŠãWebhook ã察å¿ããç°å¢ã ãã«å°éããããšã確èªããŸãã
-
ã¹ããŒãžã³ã°ã®ãã§ãã¯ãªã¹ããå®è¡ããŠããåã倿Žãæ¬çªãžææ Œããã ã¹ããŒãžã³ã°ã§äž»èŠãªæäœãæš©éããšã©ãŒçµè·¯ããã¹ãããåé¡ãªããã°åãæé ã§æ¬çªã«é©çšããŸãïŒæ¬çªã ãã§ã®å¿æ¥å¯Ÿå¿ã¯é¿ããïŒã
ãªãªãŒã¹åŸã¯çæéã¢ãã¿ãªã³ã°ããŸãããïŒãã°ã倱æãããªã¯ãšã¹ãã飿ºå ã®ããã·ã¥ããŒããç£èŠãããã©ãã£ãã¯ãæ£åžžã«ãªããŸã§ããŒã«ããã¯ææ®µãçšæããŠãããŸãã
äŸïŒãµããŒãããŒã¿ã«ãå®çšŒåãŠãŒã¶ãŒã«åœ±é¿ãããã«ãªãªãŒã¹ãã
å°ããªéçšããŒã ããšãŒãžã§ã³ãåããµããŒãããŒã¿ã«ãäœããšããŸãããšãŒãžã§ã³ãããã°ã€ã³ã顧客åç §ã远å 課éããã±ããã®ã¹ããŒã¿ã¹å€æŽæã«ã¡ãŒã«ãéããããã 3 ç°å¢ã§éçšããŠãã¹ããå®éã®èª²éãå®ã¡ãŒã«ã«è§Šããªãããã«ããŸãã
dev ã§ã¯ãã¹ãŠããã©ã«ãã§åœã®ããŒã¿ãDB ã¯åé¢ããã·ãŒãããŒã¿ïŒãµã³ãã«é¡§å®¢ããµã³ãã«ãã±ãããã¡ãŒã«ããªãã±ãŒã¹ãªã©ïŒã§æºããããŸããèªèšŒã¯ãã¹ãçšãã£ã¬ã¯ããªãå°æ°ã®ãã¹ãã¢ã«ãŠã³ãã«åããStripe ã¯ãã¹ãã¢ãŒããã¡ãŒã«ã¯ãµã³ãããã¯ã¹åä¿¡ç®±ãžïŒãããã¯ç¡å¹åããŠãã°ã«æ®ãïŒèšå®ã§ãã
staging ã¯æ¬çªã«è¿ããå®å šãæ ä¿ãããç°å¢ãDB ã¯å¥ã§ãæ¬çªããå¿ååããŠã³ããŒãããå¶åŸ¡ãããæ¹æ³ã§ãªãã¬ãã·ã¥ããŸããèªèšŒã¯æ¬çªã«è¿ãèšå®ã«ãããã¢ã¯ã»ã¹ã¯éå®ãããŸããStripe ã¯ãã¹ãã¢ãŒãã®ãŸãŸã§çŸå®çãªãã§ãã¯ã¢ãŠããè¿éãããŒãå®è¡ããã¡ãŒã«ã¯æ¿èªæžã¿ã®å éšã¢ãã¬ã¹ã®ã¿èš±å¯ããŸãã
prod ã¯å³ãã管çãããŸããæ¿èªããã管çè ã®ã¿ã飿ºããããã€ã倿Žã§ããŸããæ¬çªã® Stripe ããŒãå®ã¡ãŒã«éä¿¡ãæå¹ã«ãªããç£æ»ãã°ãæå¹ã§ãã
æ°æ©èœïŒã¯ã³ã¯ãªãã¯ã®è¿éã¯ãŒã¯ãããŒã远å ãããšããŸãããã«ããŒã¯ AppMaster ã® Business Process Editor ã§äœããdev ã§ãã¹ãã«ãŒãã䜿ã£ãŠ UI ãšã¹ããŒã¿ã¹æŽæ°ã確èªããŸãã
staging ã§å®å šãªå€±æãèŠã€ãããŸããïŒè¿éããžãã¯ãã¹ããŒã¿ã¹å€æŽã«å¯ŸããŠäºéã« "ãã±ããéé" ã¡ãŒã«ãéã£ãŠããŸããããæ¬çªãªã顧客ã«è¿·æãããããŸãããstaging ã§ã¯å éšåä¿¡ç®±ã ãã«å±ãã®ã§ä¿®æ£ããŠåãã¹ãã§ããŸãã
æåŸã«ç°å¢åãšãªãŒããŒãéµãã©ãã«ãã誰ãåãããã©ã® DB ãã©ã®ç°å¢ã«å±ãããããªãªãŒã¹ãã§ãã¯ãªã¹ãã"dev ã«å®ããŒã¿ãå ¥ããªã" ã«ãŒã«ãææžåããŠããã°èª°ãè¿·ããŸããã
æ¬çªäºæ ãæããããããã¹
å€ãã®äºæ ã¯è¬ã®ãã°ã§ã¯ãªãåçŽãªæ··åã§ãïŒééã£ãããŒã¿ããŒã¹ãééã£ãããŒãééã£ããšã³ããã€ã³ãã
æå€§ã®ç©Žã¯ç°å¢éã§ã® DB å ±æã§ãããªã¢ã«ãªããŒã¿ã欲ãããŠå ±æããŠããŸããã¡ã§ãããåŸã§ãã¹ãã¹ã¯ãªãããã¬ã³ãŒããåé€ãããããã€ã°ã¬ãŒã·ã§ã³ãæ©ãããããæ°ãã£ãŒã«ããæ¬çªã®ã³ãŒããšäºææ§ããªã圢åŒã§æžã蟌ãŸãããããŸãã
ããäžã€ããããã®ã¯ã¹ããŒãžã³ã°ã§æ¬çªã® API ããŒã䜿ã£ãŠããŸãããšãæ¯æããšã¡ãŒã«ã§ç¹ã«çºçããŸããã¹ããŒãžã³ã°ã®ãã§ãã¯ã¢ãŠããå®éã«èª²éãçã¿ããã¹ãã¡ãŒã«ãå®ãŠãŒã¶ãŒã«å±ãããšããããŸããããŒã«ãç°å¢å€æ°ããããã€ããšã®èšå®ããµããŒããããªãããŒã¯å¿ ãç°å¢ã«çŽã¥ããŠãã ããã
Webhook ã®æ··åãåé¡ã§ããã¹ããŒãžã³ã°ãšæ¬çªãåããšã³ããã€ã³ããåãåããšéè€æ³šæãéè€ç»é²ããµããŒããã±ããã®æ··ä¹±ãèµ·ããããåãæ¶ããé£ãããªããŸãã
ããã¯ã°ã©ãŠã³ããžã§ããæ³šæãå¿ èŠã§ããå€éã®åæããªãã€ã³ããŒéä¿¡ãèªåã¯ããŒãºåŠçãã¹ããŒãžã³ã°ããæ¬çªãµãŒãã¹ã«å°éãããšéãã«è¢«å®³ãåºããŸãã
ãªãªãŒã¹åãã§ãã¯ãªã¹ããšæ¬¡ã®ã¹ããã
åºè·çŽåã« 10 åã§ã§ããéããã§ãã¯ã§å€ãã®æ··åãé²ããŸãïŒ
- ããŒã¿ããŒã¹ã¿ãŒã²ãããæ£ãããïŒãã¹ããš DB åïŒãprod ã®æ¥ç¶æååã鿬çªã§äœ¿ãããŠããªãã確èªããã
- åã·ãŒã¯ã¬ãããæ¬çªã®ã¿ã«ãªã£ãŠãããã鿬çªã®ããŒãæ¬çªãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããªãããšã確èªããã
- Webhook ãšã³ãŒã«ããã¯èšå®ã確èªããprod ãšã³ããã€ã³ãã staging ã€ãã³ããåãåããªãããã«ããã
- å€åãã¡ãã»ãŒãžãå®ãŠãŒã¶ãŒã«å±ããªãããšãæ€èšŒããã
- ã¹ããŒãžã³ã°ã®ã¹ã¢ãŒã¯ãã¹ãã宿œïŒãµã€ã³ã€ã³ãã¬ã³ãŒãäœæãäž»èŠã¯ãŒã¯ãããŒã®ãšã³ãããŒãšã³ãå®è¡åŸã«ãã°ã§æ¬çªãµãŒãã¹ãžã®åŒã³åºãããªãããã§ãã¯ããã
æåŸã«äººã®ãã§ãã¯ïŒæ¬çªã¢ã¯ã»ã¹ãªã¹ããèŠçŽããäžèŠãªäººãåé€ããŸããããŒã«ãããŒã«ããµããŒããããªããæ¬çªå€æŽã«æ¿èªã¹ããããå¿ é ã«ããŠãã ããã
ãããæéãçµã£ãŠãä¿ã€ããã«ãååãšå€æ°ãæšæºåãïŒDEV, STAGING, PRODïŒãææ¬¡ã§ã·ãŒã¯ã¬ãããšã¢ã¯ã»ã¹ã®ã¬ãã¥ãŒãäºå®ã«å ¥ããŠããããšãå§ããŸããã€ã³ã·ãã³ãæã«ããããæ¥åžžçã«ç®¡çããæ¹ãæ¥œã§ãã
AppMaster ã§æ§ç¯ããå Žåãç°å¢ããšã«å¥ã® PostgreSQL èšå®ãä¿æããauthãStripeãemail/SMS ãšãã£ãã¢ãžã¥ãŒã«ãåãããã€å ã®ããŒã«åããã¢ããªã®ããžãã¯ã¯å€ããã«ç°å¢ããšã«ãããã€ã§ããŸãããã©ãããã©ãŒã ã®è©³çŽ°ã¯ AppMasterïŒappmaster.ioïŒãã芧ãã ããã
ãããã質å
dev ã¯çŽ æ©ãäœã£ãŠå€ããå Žæãstaging ã¯æ¬çªã«è¿ã圢ã§ãªããŒãµã«ããå Žãprod ã¯å®éã®ãŠãŒã¶ãŒã䜿ãç°å¢ã§ããéèŠãªã®ã¯åç°å¢ãç¬èªã®ããŒã¿ãç§å¯æ å ±ã飿ºèšå®ãæã¡ããã¹ãã§å®ãŠãŒã¶ãŒã«åœ±é¿ããªãããã«ããããšã§ãã
åºæ¬ã¯ dev, staging, prod ãçšæããããšãæšå¥šããŸããã·ã³ãã«ã§å€ãã®ãªã¹ã¯ãã«ããŒã§ããŸããå¿ èŠã«ãªã£ãã UAT ãå°çšã® sandbox ã远å ããŠãã ãããç°å¢åã¯äžè²«æ§ãä¿ã¡ã誰ããæ··ä¹±ããªãããã«ããŸãã
鿬çªç°å¢ãšæ¬çªã§ããŒã¿ããŒã¹ãå ±æããªãããšãæãå®å šã§ããçæ³ã¯ç°å¢ããšã«ç¬ç«ãã PostgreSQL ããŒã¿ããŒã¹ãçšæãããã¹ãåãããŒã¿ããŒã¹åã§ééãã«ããããŠããããšã§ãã
æ¬çªããã³ããŒãããªãå人æ å ±ãå¿ååãããããã¹ãçšã«å¶åŸ¡ããã·ãŒãããŒã¿ã䜿ããŸããããå°ããªã³ã³ãããŒã«ãããããŒã¿ã»ããããå人æ å ±ãåãé€ããã¹ãããã·ã§ãããçŸå®æãšå®å šæ§ãäž¡ç«ããŸãã
ãŸãã¹ããŒãžã³ã°ã§ãã€ã°ã¬ãŒã·ã§ã³ãé©çšããŠã¹ã¢ãŒã¯ãã¹ããè¡ããæ¬çªã§ã¯ããã¯ã¢ãããåã£ãŠããéããªæé垯ã«å®è¡ããã®ãå®å šã§ããç Žå£çãªå€æŽã¯æ®µéçã«è¡ããå·®ãæ»ãèšç»ãçšæããŠãããŸãã
åç°å¢ã§å¥ã®ã·ãŒã¯ã¬ããã䜿ããã¢ããªã®äžã«åã蟌ãŸãç°å¢å€æ°ãã·ãŒã¯ã¬ããã¹ãã¢ã§ç®¡çããŸããDEV_DB_PASSWORDãSTAGING_DB_PASSWORDãPROD_DB_PASSWORD ã®ããã«åããé²èЧã»ç·šéæš©éã¯æå°éã«ããŸãã
æ¯æããšã¡ãã»ãŒãžã¯ç¹ã«æ éã«ã鿬çªã¯å¿ ããã¹ãïŒãµã³ãããã¯ã¹ã¢ãŒãã«ããŠãæ¬çªã®ã¿ã©ã€ãã䜿ãã«ãŒã«ãå®ã£ãŠãã ãããå®å šã¹ã€ãããèšããŠéæ¬çªãå®ãŠãŒã¶ãŒã«å°éããªãããã«ãããšå®å¿ã§ãã
ç°å¢ããšã« webhook ã® URL ãšçœ²åã·ãŒã¯ã¬ãããåããã©ã®ç°å¢ã®ã€ãã³ãããæç¢ºã«ããŸããçœ²åæ€èšŒã¯å šç°å¢ã§è¡ããã¹ããŒãžã³ã°ã®ã€ãã³ããæ¬çªã®åŠçãåŒã°ãªãããã«ããŸãã
æ¬çªã«å€æŽãå ãããã人ã¯å¿ èŠæå°éã«çµãããªãªãŒã¹åã«å¥ã®äººã®æ¿èªãå¿ é ã«ããŸããããããŒã³ãŒãã§ãå°ããªç·šéãæåãå€ããã®ã§ãæš©éãšç£æ»ãã°ãæŽåããŠãã ããã
倿Žã¯äžæ¹åã«æµãïŒdev â staging â prodïŒããšãåé¡ãããã°åã®å®å®çã«æ»ããŠãªã¹ã¯ã®é«ãåŠçãç¡å¹åããæ ¹æ¬ä¿®æ£ã¯ dev ã§è¡ã£ãŠå床ã¹ããŒãžã³ã°çµç±ã§åæ ããŸãã


