æ¬çªå¯Ÿå¿ã®ãã³ããªããã§ãã¯ãªã¹ãïŒã»ã«ããã¹ãã£ã³ã°åãïŒ
ãã®æ¬çªå¯Ÿå¿ã®ãã³ããªããã§ãã¯ãªã¹ãã䜿ã£ãŠãç°å¢ãã·ãŒã¯ã¬ãããç£èŠãããã¯ã¢ãããã©ã³ããã¯ããŸãšããéçšãããªãã®ã¢ããªããããã€ããŠç®¡çã§ããããã«ããŸãããã

ãæ¬çªå¯Ÿå¿ã®ãã³ããªãããå®åã§æå³ããããš\n\næ¬çªå¯Ÿå¿ã®ãã³ããªããšã¯ãéçšãæšæž¬ããã«ã¢ããªãéçšã§ããç¶æ ãæããŸããæ¢ç¥ã®ããŒãžã§ã³ããããã€ã§ããæ£åžžæ§ã確èªããã¢ã©ãŒãã«å¯Ÿå¿ãããªãªãŒã¹ãé害ãã埩æ§ã§ããããšããããã®ãããããç¹å®ã®éçºè ã®èšæ¶ã«äŸåããŠãããªãããã³ããªãã¯å®äºããŠããŸããã\n\nãã³ããªãã¯ãããéçºè ã1é±éå§¿ãæ¶ããŠããéçšãã·ã¹ãã ãå®å šã«å©çšå¯èœã«ä¿ãŠããïŒããšããåãã«çããããã±ãŒãžãšèããŸãããã\n\nè¯ãããã±ãŒãžã¯éåžžãã¢ããªã®æ©èœãæ£åžžæ§ã®å®çŸ©ããªãªãŒã¹æé ïŒãããã€ãæ€èšŒãããŒã«ããã¯ïŒãèšå®ã®å Žæãã·ãŒã¯ã¬ããã®æ±ããç£èŠã»ããã¯ã¢ããã»ã€ã³ã·ãã³ã察å¿ã®æ¹æ³ãã«ããŒããŸãã\n\nåããããéèŠãªã®ã¯ã«ããŒããªãäºé ã§ãããã³ããªãã¯æ©èœè¿œå ããªãã¡ã¯ã¿ãç»é¢èšèšã®ããçŽããåŸã§ããããã«ãããããšãçŽæãããã®ã§ã¯ãããŸããããããã¯å¥ã®ãããžã§ã¯ããšããŠã¹ã³ãŒããå®çŸ©ããŠãã ããã\n\nå®äºãšåŒã¶åã«ãæææš©ãšå¿çæéã«åæããŠãããŸããäŸïŒéçšã¯çšŒåçãšãããã€ãæ åœããããã¯ãã¯ããŒããããã®å€æŽãæ åœãéçºããŒã ã¯ãã³ããªãåŸã®çæéã®ãµããŒãïŒäžå ·å察å¿ã質åïŒãæäŸããããªã©ã\n\n## ç°¡æœãªã·ã¹ãã ç®é²ãäœãïŒã©ãã§äœãåããŠãããïŒ\n\néçšã¯èŠãããã®ã ãã管çã§ããŸãã1ããŒãžçšåºŠã®ç®é²ã¯ãããã€ãã€ã³ã·ãã³ããç£æ»æã®æšæž¬ãé²ããŸããå¹³æãªæ¥æ¬èªã§å ·äœçã«æžããŸãããã\n\nããã¯ãšã³ã APIããŠã§ãã¢ããªãããã¯ã°ã©ãŠã³ãã¯ãŒã«ãŒã宿ãžã§ããã¢ãã€ã«ã¢ããªãã©ã®ããã«æ¥ç¶ããããªã©ãã·ã¹ãã ã®åå®è¡èŠçŽ ãšé çœ®å ŽæãäžèЧã«ããŸããiOS/Android ãã¹ãã¢çµç±ã§é åžãããŠããŠããããã¯ãšã³ãã«äŸåããç¹ã¯åæ§ã§ãã\n\nã¢ããªãäŸåããå€éšãµãŒãã¹ãå¿ ãå«ããŸããPostgreSQLããã¥ãŒããªããžã§ã¯ãã¹ãã¬ãŒãžã第äžè APIïŒStripe ã®ãããªæ±ºæžãã¡ãã»ãŒãžã³ã°ãã¡ãŒã«/SMSãTelegram ãªã©ïŒã䜿ã£ãŠãããªããæ£ç¢ºãªãµãŒãã¹åãšçšéãæžããŸãã\n\nãã¹ãã£ã³ã°ã§è©Šè¡é¯èª€ã«ãªããªãããããããã¯ãŒã¯èŠä»¶ãèšé²ããŸãïŒå¿ èŠãªãã¡ã€ã³ïŒappãapiãadminïŒãããŒããšãããã³ã«ãTLSèšŒææžã®æŽæ°æ åœãDNSã®ç®¡çå ãçä¿¡/çºä¿¡ã®èš±å¯ãªã¹ããªã©ã\n\næåŸã«æåŸ ãããè² è·ã宿°ã§æžããŸãïŒããŒã¯ã®åããããªã¯ãšã¹ãæ°ãã¢ã¯ãã£ããŠãŒã¶ãŒæ°ãå žåçãªãã€ããŒããµã€ãºãçŸåšã®ããŒã¿ããŒã¹ãµã€ãºãšäºæ³æé·çã倧ãŸããªç¯å²ã§ãéçšããããå€ãã¢ã©ãŒããèšå®ããå©ãã«ãªããŸãã\n\nAppMaster ã§æ§ç¯ããŠããå Žåã¯ãçæãããããã¯ãšã³ãããŠã§ãã¢ããªãçµ±åã®äžèЧãå«ããŠãéçšãã©ããäžç·ã«ãããã€ããå¿ èŠããããããããããã«ããŠãã ããã\n\n## ç°å¢èšå®ãããã±ãŒãžåããïŒã·ãŒã¯ã¬ããã¯å ¬éããªãïŒ\n\nå€ãã®æ¬çªç°å¢ã§å€±æããã®ã¯å°å³ãªéšåãããªãã¡ãèšå®ã誰ãã®é ã®äžã ãã«ãããããšã§ããèšå®ãææç©ãšããŠæ±ã£ãŠãã ãããéçšãã©ã®èšå®ãååšããç°å¢ããšã«äœãéããã©ãå®å šã«å€æŽããããèŠãããããã«ããŸãã\n\nãŸãã仿¥ååšãããã¹ãŠã®ç°å¢åãåæããŸããä»®ã§ãã£ãŠãæžãæ®ããŠãã ãããå€ãã®ããŒã 㯠devãstagingãæ¬çªã®ä»ã«ãproduction-euãããstaging-usããªã©ã®ã³ããŒç°å¢ãæã£ãŠããŸããã©ã®ç°å¢ããªãªãŒã¹ãã¹ããããŒã¿ãã€ã°ã¬ãŒã·ã§ã³ãé害èšç·Žã«äœ¿ããããã瀺ããŸãã\n\nèšå®ããŒåãšå®å šãªäŸå€ïŒæ¬ç©ã®è³æ Œæ å ±ã§ã¯ãªãïŒãäžèЧã«ããåäžã®èšå®ãªãã¡ã¬ã³ã¹ãçšæããŸãããã¬ãŒã¹ãã«ããŒã¯æç¢ºã«ããŠãã ããã\n\nãã³ããªãããã±ãŒãžã«å«ãããã®ã®äŸïŒ\n\n- ç°å¢äžèЧãšããããã®çšé\n- èšå®ããŒã®ãªãã¡ã¬ã³ã¹ïŒç°å¢å€æ°ãèšå®ãã¡ã€ã«ã®ããŒïŒãæåŸ ãããåãç§å¯ã§ãªãäŸå€\n- ç°å¢éã®æ¢ç¥ã®å·®åïŒãã£ãŒãã£ãŒãã©ã°ãã¬ãŒãå¶éããã£ãã·ã¥ãµã€ãºãã¡ãŒã«ã¢ãŒãããã°ã¬ãã«ïŒ\n- ããã©ã«ãå€ãšããŒããªãå Žåã®æå\n- èšå®ãã©ãã«ä¿åããããããã€æã«ã©ãé©çšãããã\n\nç°¡åãªå€æŽããã»ã¹ã远å ããŠãã ãããäŸïŒãã±ããã§èŠæ±ããµãŒãã¹ãªãŒããŒãã¬ãã¥ãŒããŸãã¹ããŒãžã³ã°ã§é©çšãéçšãŠã£ã³ããŠã§æ¬çªã«ææ Œããšã©ãŒã¬ãŒãäžææã®ããŒã«ããã¯èšç»ãçšæããããªã©ã\n\nAppMaster ããšã¯ã¹ããŒãããŠã»ã«ããã¹ãããå Žåã§ãåãã«ãŒã«ãå®ã£ãŠãã ããïŒçæããããœãŒã¹ã«æ²¿ã£ãŠãã¯ãªãŒã³ã§ææžåãããèšå®ããŒã®ã»ããã忢±ããéçšãåç°å¢ã§äžè²«ããŠå®è¡ã§ããããã«ããŸãã\n\n## ã·ãŒã¯ã¬ãããšè³æ Œæ å ±ïŒä¿ç®¡ãããŒããŒã·ã§ã³ãã¢ã¯ã»ã¹\n\nã·ãŒã¯ã¬ããã¯ããã¡ããšãããã³ããªããã»ãã¥ãªãã£ã€ã³ã·ãã³ãã«å€ããæçã«ãŒãã§ããç®æšã¯æç¢ºã§ãïŒéçšåŽãã¢ããªã«å¿ èŠãªå šã·ãŒã¯ã¬ãããææ¡ããã©ãã«ä¿åããã誰ãèªããŠãããŠã³ã¿ã€ã ãªãã§å€æŽã§ããããçè§£ããããšã\n\nãŸãã¯éçšã1åã§ç¢ºèªã§ããçãã·ãŒã¯ã¬ããäžèЧãäœããŸããåé ç®ã«ã€ããŠããã®ã·ãŒã¯ã¬ãããäœãè§£é ãããïŒããŒã¿ããŒã¹ãSMTPãStripeãJWT 眲åããŒïŒãã©ãã«ãããïŒVaultãã¯ã©ãŠãã·ãŒã¯ã¬ããã¹ãã¢ãKubernetes Secretãæå·åãã¡ã€ã«ïŒããããŠèª°ãåè»¢ãæ åœããããæžããŸãã\n\nå転æé ã¯ããªã·ãŒã§ã¯ãªãã¬ã·ãã®ããã«æžããŠãã ãããæ£ç¢ºãªé åºãå€ãã·ãŒã¯ã¬ãããã©ã®ãããã®æéæ®ãããåäœç¢ºèªã®ããã®1ã€ã®ãã§ãã¯ãå«ããŸãã\n\n### å転ãã§ãã¯ãªã¹ãïŒäŸïŒ\n\nåã·ãŒã¯ã¬ããã«æ¬¡ã®ãã¿ãŒã³ãé©çšããŸãïŒ\n\n- æ°ããã·ãŒã¯ã¬ããå€ãäœæããŠæ¿èªãããã·ãŒã¯ã¬ãããããŒãžã£ã«ä¿åããã\n- ã¢ããªãæ°ããå€ã䜿ãããã«èšå®ããããã€ããã\n- æ€èšŒïŒãã°ã€ã³ã決æžãAPI åŒã³åºããæåãããšã©ãŒçãéåžžã®ç¯å²ã«ããããšã確èªããã\n- å€ãã·ãŒã¯ã¬ãããåãæ¶ããããåäœããªãããšã確èªããã\n- åè»¢æ¥æã宿œè ãæ¬¡åã®æéãèšé²ããã\n\næå·åèŠä»¶ã¯æç€ºããŠãã ãããã·ãŒã¯ã¬ããã¯ä¿ç®¡æã«æå·åãããã¢ããªãšäŸåå éã®é信㯠TLS ã§ä¿è·ãããã¹ãã§ããã·ãŒã¯ã¬ããããœãŒã¹ç®¡çããã«ãææç©ãå ±æããã¥ã¡ã³ãã«çœ®ããŠã¯ãããŸããã\n\nç·æ¥æã®ãã¬ã€ã¯ã°ã©ã¹ã¢ã¯ã»ã¹ãå®çŸ©ããŸããé害ã§éåžžã®ã¢ã¯ã»ã¹ãã§ããªãå Žåã«èª°ãæ¿èªããã©ã®ãããã®æéæå¹ã«ã§ããããäºåŸã«ã©ã®ããã«ç£æ»ããããæèšããŠãã ããã\n\n## ãããã€ããã±ãŒãžïŒææç©ãããŒãžã§ã³ãããŒã«ããã¯\n\néçšã¯åçŸã§ãããã®ã ãã管çã§ããŸããè¯ããããã€ããã±ãŒãžã¯æ¬¡ã®3ã€ã®è³ªåã«çããããããã«ããŸãïŒä»äœãåãããŠããããåããã®ãã©ããããã€ããããåé¡ãèµ·ãããã©ãéããã«æ»ããã\n\nãã«ãã®æç¢ºãªãéšå衚ããå«ããŸããå Žæã ãã§ãªãæ€èšŒæ¹æ³ãæžãããšïŒ\n\n- ã¢ãŒãã£ãã¡ã¯ãã®è©³çްïŒã³ã³ããã€ã¡ãŒãžå/ã¿ã°ïŒãŸãã¯ãã€ããª/ããã±ãŒãžåïŒãã¢ããªã®ããŒãžã§ã³ããã«ãæ¥ããã§ãã¯ãµã \n- ãœãŒã¹åç §ïŒãã«ãã«äœ¿ã£ããªãªãŒã¹ã¿ã°ãã³ãããããã·ã¥ãé¢ä¿ãããã«ããã©ã°\n- ãµããŒã察象ïŒVMãã³ã³ããïŒDockerïŒãKubernetes ã®ãããããæšå¥šããã©ã«ããæèš\n- ãããã€æé ïŒåææ¡ä»¶ïŒã©ã³ã¿ã€ã ãDBãã¹ãã¬ãŒãžïŒãæ£ç¢ºãªé åºãå žåçãªãããã€æèŠæé\n- ããŒã¿ããŒã¹ãã€ã°ã¬ãŒã·ã§ã³ïŒèªåå®è¡ãæåãããã°ã®å Žæãæåç¢ºèªæ¹æ³\n\nå°ããªå ·äœäŸãäžã€å ¥ããŠãã ãããäŸïŒãv1.8.2 ããããã€ããã«ã¯ã€ã¡ãŒãžã¿ã°ãæŽæ°ãããã€ã°ã¬ãŒã·ã§ã³ãå®è¡ããŠãããŠã§ãã¯ãŒã«ãŒãåèµ·åã10å以å ã«ãã«ã¹ãã§ãã¯ãéããªããã° v1.8.1 ã«æ»ãããã€ã°ã¬ãŒã·ã§ã³ãžã§ãã忢ãããã\n\n### æšæž¬ã®äœå°ãæ®ããªãããŒã«ããã¯\n\nããŒã«ããã¯èšç»ã¯ãåå2æã§ãåŸããåœä»€æžã§ããã¹ãã§ããæ¬¡ãæç€ºããŠãã ããïŒ\n\n- ããŒã«ããã¯ãåŒãã·ã°ãã«ïŒãšã©ãŒçããã«ã¹ãã§ãã¯å€±æããã°ã€ã³é害ãªã©ïŒ\n- æåŸã«ç¢ºå®ã«åããŠããããŒãžã§ã³ãšãã®ä¿ç®¡å Žæ\n- ããŒã¿ããŒã¹å€æŽãå¯éãã©ãããäžå¯éã®å Žåã®å¯ŸåŠæ³\n\nAppMaster ã§æ§ç¯ããŠãœãŒã¹ããšã¯ã¹ããŒãããŠããå Žåã¯ãçæã³ãŒãã®ããŒãžã§ã³ããã«ãæé ãã©ã³ã¿ã€ã èŠä»¶ãå«ããŠãéçšãåããªãªãŒã¹ãåŸã§åæ§ç¯ã§ããããã«ããŠãã ããã\n\n## ç£èŠãšã¢ã©ãŒãïŒäœã枬ãããã€ããŒãžãã¹ãã\n\nãã³ããªãã¯ãéçšãã¢ããªã®ç¶æ ãèŠããããŠãŒã¶ãŒãäžæºãèšãåã«éç¥ãåãåããããã«ããããšãå®äºæ¡ä»¶ã§ãã\n\nå¿ èŠãªãã°ã®çš®é¡ãšä¿åå ïŒãã¡ã€ã«ãsyslogããã°ãã©ãããã©ãŒã ïŒãåæãããã°ãæå»åæããããªã¯ãšã¹ããçžé¢ ID ãå«ãããã«ããŠã€ã³ã·ãã³ãã远跡ã§ããããã«ããŸãã\n\néåžžå¿ èŠãªãã°ïŒã¢ããªãã°ïŒéèŠã€ãã³ãã倱æïŒããšã©ãŒãã°ïŒã¹ã¿ãã¯ãã¬ãŒã¹ã倱æãããžã§ãïŒãã¢ã¯ã»ã¹ãã°ïŒãªã¯ãšã¹ããšã¹ããŒã¿ã¹ã³ãŒãïŒãç£æ»ãã°ïŒç®¡çæäœããšã¯ã¹ããŒãïŒãã€ã³ãã©ãã°ïŒåèµ·åãããŒãè² è·ããã£ã¹ã¯åé¡ïŒãªã©ã\n\n次ã«ããŠãŒã¶ãŒåœ±é¿ãšã·ã¹ãã å¥å šæ§ãåæ ããå°ããªææšã»ãããæ±ºããŸãã5ã€ã«çµããªãïŒã¬ã€ãã³ã·ïŒp95/p99ïŒããšã©ãŒçã飜åïŒCPU/ã¡ã¢ãª/ãã£ã¹ã¯ïŒããã¥ãŒæ·±åºŠãå€éšããã®å¯çšæ§ãã§ãã¯ã§ãã\n\nã¢ã©ãŒãã«ãŒã«ã¯æç¢ºã«ããŸãïŒçºç«æ¡ä»¶ãéèŠåºŠïŒããŒãžããã±ãããïŒããªã³ã³ãŒã«æ åœããšã¹ã«ã¬ãŒã·ã§ã³æ¹æ³ãæ£åžžãªããã·ã¥ããŒãã®ã¹ãããã·ã§ãããšãéåžžã®èŠãæ¹ïŒå žåçãªã¬ã€ãã³ã·ç¯å²ã蚱容ãšã©ãŒçãéåžžã®ãã¥ãŒæ·±åºŠïŒãçãæ·»ãããšãäžèŠãªãã€ãºãæžããæ°ããæ åœè ã®å€æãå©ããŸãã\n\n## ããã¯ã¢ãããšåŸ©å ïŒåŸ©å æé ãå埩å¯èœã«ãã\n\nããã¯ã¢ããã¯ããããã§ã¯ãªãããªã³ããã³ãã§ã埩å ã§ãããããšãéèŠã§ãã\n\nããã¯ã¢ããã®å¯Ÿè±¡ç¯å²ãæ£ç¢ºã«æžããŸãïŒããŒã¿ããŒã¹ããã¡ã€ã«ã¹ãã¬ãŒãžïŒã¢ããããŒããã¬ããŒããè«æ±æžãªã©ïŒãèšå®ã§ã³ãŒãå€ã«ãããã®ãä¿è·ããŒã¿ãèªãããã®æå·åããŒãªã©ãå«ããŸãã\n\nRPOïŒã©ãã ãããŒã¿ã倱ãããïŒãš RTOïŒã©ããããã§åŸ©æ§ãããïŒãããžãã¹ãšåæããæ°å€ã§æ±ºããŠãã ãããããããã³ã¹ããšå·¥æ°ãå·Šå³ããŸãã\n\nå«ããé ç®ã®äŸïŒ\n\n- äœãããã¯ã¢ããããããä¿åå Žæãä¿ææé\n- 誰ãããã¯ã¢ããïŒåŸ©å ãå®è¡ã§ããããã¢ã¯ã»ã¹æ¿èªã®æ¹æ³\n- ã¹ããããã€ã¹ãããã®åŸ©å æé ãšæ€èšŒãã§ãã¯\n- 埩å ãã°ã®ä¿åå Žæãšãæåãã®å®çŸ©\n- ãããã倱æã¢ãŒãïŒèª€ã£ãéµããã±ããæ¬ èœãã¹ããŒãäžäžèŽïŒãšãã®ä¿®æ£æ¹æ³\n\nAppMaster ãããšã¯ã¹ããŒãããŠã»ã«ããã¹ãããå Žåã¯ãPostgreSQL ã®åŸ©å æé ãå€éšã¹ãã¬ãŒãžãã±ãããæå·åãã£ãŒã«ãã«äœ¿ãããŒãå«ããŠãã ããã\n\n埩å ããªã«ãã¹ã±ãžã¥ãŒã«ããå®è¡æéã»é害å 容ã»å€æŽç¹ãèšé²ããŠãããšã次åã¯ããéãã¹ãã¬ã¹å°ãªã埩å ã§ããŸãã\n\n## ã©ã³ããã¯ãšãªã³ã³ãŒã«ïŒå®éã®ã€ã³ã·ãã³ããéçšããæ¹æ³\n\nãã³ããªãã¯ãå®éã«èª°ããåå2æã«ããŒãžãåããŠæšæž¬ãªãã§åé¡ã解決ã§ããŠåããŠæå³ãæã¡ãŸããã©ã³ããã¯ã¯éšæçç¥èã誰ã§ã䜿ããæé ã«å€ãããã®ã§ãã\n\nãŸãæ³å®ããã代衚çãªã€ã³ã·ãã³ããåªå ããŸãïŒå®å šãªåæ¢ãã¬ã¹ãã³ã¹ã®é å»¶ããããã€ã«ããé害ãåã©ã³ããã¯ã¯çãä¿ã¡ãæåã«è¡ãã¹ãé«éãªãã§ãã¯ãäžéšã«çœ®ããŠãã ããã\n\n### è¯ãã©ã³ããã¯ã«å«ãããã®\n\näžè²«ããæ§æã«ããŠããã¬ãã·ã£ãŒäžã§ãèªã¿ãããããŸãïŒ\n\n- ãŠãŒã¶ãŒãèŠãçç¶ãšããã確èªããæ¹æ³ïŒäŸïŒãšã©ãŒçã X% ãè¶ ããŠããããã§ãã¯ã¢ãŠãã倱æããïŒ\n- æåã«ãããã§ãã¯ïŒãµãŒãã¹ç¶æ³ãæè¿ã®ãããã€ãäŸåå ã®å¥å šæ§ããã£ã¹ã¯/CPUãDB æ¥ç¶ïŒ\n- 次ã«èŠããã®ïŒéãã¹ããã°ãéèŠãªããã·ã¥ããŒããæè¿ã®èšå®å€æŽããã¥ãŒæ·±åºŠïŒ\n- 倿ãã€ã³ãïŒãã€ããŒã«ããã¯ãããããã€ã¹ã±ãŒã«ãããããã€æ©èœãç¡å¹ã«ãããïŒ\n- ãšã¹ã«ã¬ãŒã·ã§ã³å ïŒã¢ããªæ åœãã€ã³ãã©æ åœããã€èª°ã«ããŒãžãããïŒ\n\nAppMaster ãããšã¯ã¹ããŒãïŒã»ã«ããã¹ãããŠããå Žåã¯ãçæããããµãŒãã¹ãã©ãã§åãããã©ã®ããã«å®å šã«åèµ·åããããç°å¢ããšã«æ³å®ãããèšå®å€ãå«ããŠãã ããã\n\n### ã€ã³ã·ãã³ãåŸïŒæ£ããäºå®ãèšé²ãã\n\nçãäºåŸãã§ãã¯ãªã¹ããæã¡ãŸããã¿ã€ã ã©ã€ã³ãçŽè¿ã«è¡ããã倿Žãæ£ç¢ºãªãšã©ãŒã¡ãã»ãŒãžã圱é¿ãåãããŠãŒã¶ãŒãåé¡ã解決ããã¢ã¯ã·ã§ã³ãèšé²ããè©³çŽ°ãæ°é®®ãªãã¡ã«ã©ã³ããã¯ãæŽæ°ããŸãã\n\n## ã¢ã¯ã»ã¹å¶åŸ¡ãšæš©éïŒèª°ãäœãã§ããã\n\n誰ãäœãæäœã§ããããæç¢ºã§ãã¢ã¯ã»ã¹ã远跡ã§ããããšã¯éçšãã·ã¹ãã ãææããããã®åæã§ãã\n\nå®éã«äœ¿ã£ãŠãã圹å²ãèšèŒããŸããå€ãã®ããŒã ã§ååãªåœ¹å²ã®äŸïŒ\n\n- ãããã€ã€ãŒïŒæ¿èªæžã¿ããŒãžã§ã³ããããã€ããããŒã«ããã¯ãå®è¡\n- DB 管çè ïŒã¹ããŒã倿Žãšããã¯ã¢ãã埩å ãå®è¡\n- é²èЧå°çšïŒããã·ã¥ããŒãããã°ãèšå®ãç·šéããã«åç §\n- ã€ã³ã·ãã³ãã³ãã³ããŒïŒé害æã«ç·æ¥ã¢ã¯ã·ã§ã³ãæ¿èª\n\nããã¢ããªã·ãŒããå¹³æãªæé ã§ææžåããŸãïŒèª°ãã¢ã¯ã»ã¹ãä»äžããããã©ãã§ä»äžãããïŒSSOãã¯ã©ãŠã IAMãDB ãŠãŒã¶ãŒãCI/CDã管çããã«ïŒã誰ãå¥å¥ªã§ãããããªãããŒãã£ã³ã°æã«åé€ãããããšãã©ã確èªãããã\n\né人éã«ããã¢ã¯ã»ã¹ãå¿ããã«ããžã§ããçµ±åãç£èŠã§äœ¿ããããµãŒãã¹ã¢ã«ãŠã³ããããŒã¯ã³ããã¹ãŠåæããåã ã«å¯ŸããŠæå°æš©éãèšããŸãïŒäŸïŒããã±ãã X ããã®ã¿èªã¿åãå¯èœãïŒãAppMaster ãããœãŒã¹ããšã¯ã¹ããŒãããŠã»ã«ããã¹ãããå Žåã¯ããããã®è奿 å ±ãã©ã®ç°å¢å€æ°ãèšå®ãã¡ã€ã«ã§å®çŸ©ãããããå«ããŸãããç§å¯å€ããã³ããªãææžã«è²Œãä»ããŠã¯ãããŸããã\n\nç£æ»ãã°èŠä»¶ãèšå®ããŸãïŒäœããã°ã«æ®ããïŒãã°ã€ã³ããããã€ãèšå®å€æŽãDB 管çæäœïŒã誰ããã°ãèªããããä¿ææéããã°ã®ä¿åå Žæãã€ã³ã·ãã³ããã¬ãã¥ãŒæã«ãã°ãèŠæ±ããæ¹æ³ãªã©ã\n\n## ã»ãã¥ãªãã£ãšã³ã³ãã©ã€ã¢ã³ã¹ã®åºæ¬ïŒå¹³æãªèšèã§ïŒ\n\nã»ãã¥ãªãã£æ³šèšã¯éå°éå®¶ã§ãèªããããã«ãã€ã€ãéçšãè¡åã«ç§»ããå ·äœæ§ãæãããŸãã1ããŒãžã®èŠçŽã§ãã©ã®ããŒã¿ãä¿åããŠããããã©ãã«ãããã誰ãã¢ã¯ã»ã¹ã§ãããããçããããããã«ããŸãã\n\nãŸãããŒã¿çš®å¥ãæžããŸãïŒé¡§å®¢ãããã¡ã€ã«ããµããŒããã±ãããæ±ºæžã¡ã¿ããŒã¿ããã¡ã€ã«ãªã©ãPIIïŒæ°åãã¡ãŒã«ãé»è©±çªå·ïŒãè³æ Œæ å ±ã瀟å ã§èŠå¶å¯Ÿè±¡ãšãªãããŒã¿ãããã°æèšããŸããAppMaster ããã»ã«ããã¹ãçšã«ãšã¯ã¹ããŒãããå Žåã¯ãã©ã®ããŒã¿ã DB ã®ã©ãã«å ¥ãããã©ã®ãµãŒãã¹ããããèªããããèšããŠãã ããã\n\n次ã«ä¿æãšåé€ã«ãŒã«ãå®åçã«æžããŸããäœãã©ãã ãã®æéä¿æããããåé€ãã©ãæ©èœãããïŒãœããããªãŒããããŒãåé€ããé å»¶ããŒãžãïŒãæ³çä¿çãç£æ»ã®äŸå€ãããå Žåã¯èª°ãæ¿èªãããã瀺ããŸãã\n\nãã°ã¯ããŒã¿ããŒã¹ä»¥äžã«æ å ±æŒæŽ©ããããã®ã§æ³šæãæããŸããPII ãã©ã®ãã°ã«çŸããå¯èœæ§ããããïŒã¢ã¯ã»ã¹ãã°ããšã©ãŒãã°ãåæã€ãã³ãïŒãæèšãããã¹ã¯æ¹æ³ããã°åºåçŠæ¢ãã£ãŒã«ããå®ããŠãã ããã\n\næ¿èªãæç¢ºã«ããŸãïŒ\n\n- èªèšŒèšèšã®å€æŽã¯ååä»ãæ¿èªè ãå¿ èŠ\n- 決æžé¢é£ã®å€æŽïŒStripe ããŒãWebhook ãšã³ããã€ã³ããè¿éããžãã¯ïŒã¯ååä»ãæ¿èªè ãå¿ èŠ\n- ããŒã«ãšæš©éã¢ãã«ã®å€æŽã¯ååä»ãæ¿èªè ãå¿ èŠ\n- ã»ãã¥ãªãã£ãããã®é©çšãŠã£ã³ããŠãšç·æ¥å€æŽã«ãŒã«ãææžå\n\nããäžã€ã ã远å ã§ãããªãã蚌跡ããŒãã远å ããŠãã ããïŒç£æ»ãã°ãã©ãã«ããã誰ãã蚌æ ãæ±ãããšãã«ã©ããšã¯ã¹ããŒããããã\n\n## ãã³ããªãã®äŸïŒéçšã1é±éã§åŒãç¶ãã·ããªãª\n\nå°ããªãããã¯ãããŒã ãäœã£ãã«ã¹ã¿ããŒããŒã¿ã«ãéçšãæ°ããã»ã«ããã¹ãç°å¢ã«ç§»ãã±ãŒã¹ãæ³å®ããŸããç®æšã¯ãåãããšãã ãã§ãªããéçšãéçºè ã«é»è©±ããã«éçšã§ããããšãã§ãã\n\n### é±ã®æµãäŸ\n\nDay 1: éçšããã³ããªãããã±ãŒãžã ãã§æ°ç°å¢ã«ã¯ãªãŒã³ãªååãããã€ãè¡ããŸããã¢ããªã¯èµ·åããããã¡ãŒã«ãããã€ãçšã®ç°å¢å€æ°ãæããŠããŠãã°ã€ã³ã«å€±æããŸããenv ãã³ãã¬ãŒãã«è¿œèšããŠãããåæç¶æ ããåããŸã§ç¹°ãè¿ããããã€ããŸãã\n\nDay 2: æå³çã«æåã®ã¢ã©ãŒããçºçãããŸãã1ã€ã®ãµãŒãã¹ã忢ãããéä¿¡ã¡ãŒã«ããããã¯ããã¡ããªã¯ã¹ãšã¢ã©ãŒããæ£ãããã£ã³ãã«ã«å±ããã¡ãã»ãŒãžãæ¬¡ã®æé ã瀺ãããšã確èªããŸãã\n\nDay 3: ãµã³ãããã¯ã¹ã®ããŒã¯ã³ãæéåãã«ãªããŸããè³æ Œæ å ±ã®å Žæãšå転æé ãææžåãããŠãããããéçšã¯æšæž¬ããã«äº€æã§ããŸãã\n\nDay 4: DNS åãæ¿ãã誀ã£ãã¬ã³ãŒããå€ã IP ãæããŠãããäžéšãŠãŒã¶ãŒã§ããŒã¿ã«ãèŠããŸãããéçšã¯ã©ã³ããã¯ã«åŸããDNSãTLSããã«ã¹ãã§ãã¯ã®é ã§ç¢ºèªããŸãã\n\nDay 5: æåã®ããã¯ã¢ãã埩å ãã¹ããéçšã¯æ°ããããŒã¿ããŒã¹ã«åŸ©å ããå®éã®ããŒã¿ã§ããŒã¿ã«ãèªã¿èŸŒããããšã蚌æããŸãã\n\n### 1é±éã§ã®ãå®äºãå\n\n7æ¥éè¬ã®ä¿®æ£ãªãã«çšŒåãã1ä»¶ã®æåãã埩å ãæç¢ºãªã¢ã©ãŒããäžè²«ããŠéçšãåç¬ã§å®è¡ã§ãããããã€ã確èªã§ããã°å®äºã§ãã\n\n## ã»ã«ããã¹ãã£ã³ã°åŒãç¶ãã§ãããããã¹ïŒå€äžã®ã€ã³ã·ãã³ãã«ç¹ããïŒ\n\nãéçšã«å šéšäŒãããã¯ãéçšãèªåãã¡ã§åããããšå矩ã§ã¯ãããŸãããããã誀ããšæ·±å€ã®ç«äºã«ãªããŸãã\n\nã»ã«ããã¹ãã£ã³ã°ã®ãã³ããªãåŸã«èµ·ãããã倱æãã¿ãŒã³ïŒã·ãŒã¯ã¬ãããã¹ãã¬ããã·ãŒãããã£ããã§å ±æãããŠãããããŒã«ããã¯ãéçºè äŸåãããã¯ã¢ããã¯ååšãããåŸ©å æªæ€èšŒãã¢ã©ãŒãã鳎ãã£ã±ãªãïŒéŸå€æªèª¿æŽïŒãèšå®ã®è©³çްã誰ãã®é ã«ãããªãïŒããŒããDNS åãcronãã¯ã©ãŠãæš©éïŒãªã©ã\n\näŸïŒAppMaster ãããœãŒã¹ããšã¯ã¹ããŒãããŠã»ã«ããã¹ãããååãããã€ã¯ããŸããã£ãã2é±éåŸã«èšå®å€æŽã§ãã°ã€ã³ãå£ãããã·ãŒã¯ã¬ããããã£ããã§æž¡ãããããŒã«ããã¯ã«å ã®éçºè ãå¿ èŠã ãšãããšãéçšã¯ãæšæ¥åããŠããç¶æ ãã«æ»ãã®ã«äœæéãè²»ãããŸãã\n\n## ããã³ããªãå®äºããšèšãåã®ç°¡åãã§ãã¯\n\nãã±ãããéããåã«çããã¬ãã·ã¥ã¹ã¿ãŒãããªã«ãè¡ã£ãŠãã ãããéçšãšã³ãžãã¢1人ãšã¯ãªãŒã³ãªç°å¢ïŒæ°ãã VMãæ°ãã Kubernetes ããŒã ã¹ããŒã¹ã空ã®ã¯ã©ãŠããããžã§ã¯ãïŒãäžããããã±ãŒãžã ãã§ãããã€ã»èгå¯ã»åŸ©æ§ã§ãããã詊ããŸããæéå¶éïŒäŸïŒ2æéïŒå ã«å®äºããã°åæ Œã«è¿ãã§ãã\n\nãã§ãã¯é ç®ïŒ\n\n- ããã±ãŒãžæžã¿ã®ã¢ãŒãã£ãã¡ã¯ããèšå®ããã¥ã¡ã³ããã©ã³ããã¯ã ãã§æåããåãã«ããšãããã€ïŒããŒã«ããã¯å«ãïŒ\n- ãã¹ãŠã®ã·ãŒã¯ã¬ãããåæãããå Žæã«ãããå転æé ãæžãããã¹ããããŠããã\n- ããã·ã¥ããŒããåºæ¬çãªåãïŒçšŒåããŠããããé ããããšã©ãŒãããªãœãŒã¹äžè¶³ãïŒã«çããããã\n- å®å šãªãã¹ãã¢ã©ãŒãã1ä»¶çºçãããŠãããŒãžã³ã°ãæ åœè ããµã€ã¬ã³ãæéãæåŸ éãã確èªãã\n- å¥ç°å¢ã«å¯Ÿããå®éã®åŸ©å ãã¹ããå®è¡ããæ£ç¢ºãªæé ãšæåŸ çµæãææžåãã\n\nçæããããœãŒã¹ã³ãŒããã»ã«ããã¹ãçšã«ãšã¯ã¹ããŒãããå Žåã¯ãéçšããã«ãå ¥åãããŒãžã§ã³ããªãªãŒã¹ã¿ã°ã®èšé²å Žæãææ¡ããŠãããã確èªããŠãå°æ¥ã®ãªãªãŒã¹ãåçŸå¯èœã§ããããšãæ ä¿ããŠãã ããã\n\n## 次ã®ã¹ãããïŒæææš©ã確å®ããããã±ãŒãžãææ°ã«ä¿ã€\n\næçµçã«ããŒãžãæã€äººãã¡ãšäžåºŠãŠã©ãŒã¯ã¹ã«ãŒãè¡ã£ãŠãã ããããããã€ãããŒã«ããã¯ã埩å ãã¢ã©ãŒããå®éã«åãããã±ãŒãžã§åãããéçšãäžäººã§åããããšã蚌æããŸãã\n\næçµãŠã©ãŒã¯ã¹ã«ãŒã§ã¯éåžžããã¹ãç°å¢ãšæ¬çªã§åãæé ã§ãããã€ã以åã®ããŒãžã§ã³ãžã®ããŒã«ããã¯æ€èšŒãã¯ãªãŒã³ãªç°å¢ãžã®ããã¯ã¢ãã埩å ãšç°¡åãªæäœç¢ºèªïŒãã°ã€ã³ãã¬ã³ãŒãäœæãã¡ãã»ãŒãžéä¿¡ïŒãå®å šãªãã¹ãã¢ã©ãŒãã®çºç«ãã€ã³ã·ãã³ãæã«ãã°ãšããã·ã¥ããŒãã®æåšã確èªããŸãã\n\næææš©ãæç¢ºã«ããŸããåã©ã³ããã¯ïŒãããã€ãã€ã³ã·ãã³ãã埩å ïŒãšåã¢ã©ãŒãã«ãŒãã«å¯ŸããŠååä»ãã®ãªãŒããŒïŒãã©ã€ããªãããã¯ã¢ãããæéå€ã®æåïŒãå²ãåœãŠãŸãã誰ãã¢ã©ãŒããææããªããã°ãããã¯æŸçœ®ããããééã£ã人ãèµ·ããããšã«ãªããŸãã\n\nDay 2 ã®çãèšç»ãæžããŠãéçšãæåã®é±ã®åŸã«äœãæ¹åãã¹ããïŒéŸå€ã®èª¿æŽãã³ã¹ããã§ãã¯ãå€ãã¢ãŒãã£ãã¡ã¯ãã®æé€ãã¢ã¯ã»ã¹ã¬ãã¥ãŒïŒã瀺ããŠãã ãããå°ããæéæ ãåºåã£ãŠå®è¡å¯èœã«ããŸãã\n\nAppMasterïŒappmaster.ioïŒã§æ§ç¯ããŠããå Žåã¯ããšã¯ã¹ããŒããããœãŒã¹ã³ãŒããæ£ç¢ºãªãããã€å æ å ±ïŒã¯ã©ãŠãããªãŒãžã§ã³ããã«ãèšå®ãå¿ èŠãªãµãŒãã¹ïŒãå«ããŠãéçšãå ã®ãããžã§ã¯ãã¯ãŒã¯ã¹ããŒã¹ã«äŸåããã«ã¢ããªãåçŸã§ããããã«ããŠãã ãããèŠä»¶ãå€ãããã³ã«ããã±ãŒãžãæŽæ°ããç°¡åãªãªãºã ãæ±ºããã©ã³ããã¯ãçŸå®ãšä¹é¢ããªãããã«ããŸãã
ãããã質å
æ¬çªå¯Ÿå¿ã®ãã³ããªããšã¯ãéçšããŒã ãæšæž¬ããããšãªãã¢ããªãéçšã§ããç¶æ ãæããŸããæ¢ç¥ã®ããŒãžã§ã³ããããã€ã§ããæ£åžžæ§ã確èªããã¢ã©ãŒãã«å¯Ÿå¿ããé害ãäžå ·åãèµ·ããŠã埩æ§ã§ããããšãå¿ èŠã§ããå ã®éçºè ã®èšæ¶ã«é Œãéšåãããã°ããã³ããªãã¯å®äºããŠããŸããã
äžæãã®ã®ã·ã¹ãã ç®é²ãäœãã皌åã³ã³ããŒãã³ããšé çœ®å ŽæãäžèЧã«ããŸãïŒAPIããŠã§ãã¢ããªãã¯ãŒã«ãŒãã¹ã±ãžã¥ãŒã«ãžã§ããããŒã¿ããŒã¹ãã¹ãã¬ãŒãžãå©çšãããµãŒãããŒãã£ãµãŒãã¹ãªã©ããã¡ã€ã³ãããŒããDNS/TLS ã®ææè ãæ³å®è² è·ã®æŠç®ãæ·»ããŠãéçšåŽãæšæž¬ããã«æžãããã«ããŸãã
ãã¹ãŠã®èšå®ããŒãåæããåãšå®å šãªäŸå€ïŒæ¬ç©ã®è³æ Œæ å ±ã¯çµ¶å¯Ÿã«å«ããªãïŒã瀺ããåäžã®èšå®ãªãã¡ã¬ã³ã¹ãçšæããŸããéçºïŒã¹ããŒãžã³ã°ïŒæ¬çªã§äœãç°ãªãããæèšããèšå®ãã©ãã«ä¿åããããããã€æã«ã©ãé©çšãããããææžåããŠãæ©å¯æ å ±ãæŒããªãããã«ããŸãã
éçšã1åã§çºããããçãã·ãŒã¯ã¬ããäžèЧãäœããŸããåã·ãŒã¯ã¬ããã«ã€ããŠãäœã«äœ¿ããããïŒDBãSMTPãStripeãJWT 眲åããŒãªã©ïŒãã©ãã«ä¿ç®¡ããããïŒVaultãã¯ã©ãŠãã·ãŒã¯ã¬ããã¹ãã¢ãKubernetes Secretãæå·åãã¡ã€ã«ãªã©ïŒã誰ãå転ïŒããŒããŒã·ã§ã³ïŒãæ åœããããèšããŸããå転æé ã¯ããªã·ãŒã§ã¯ãªãã¬ã·ãã®ããã«æžãã確å®ã«åäœããããšãç€ºãæ€èšŒã¹ããããäžã€å«ããŸããç·æ¥ã¢ã¯ã»ã¹ïŒãã¬ã€ã¯ã°ã©ã¹ïŒã®æ¿èªè ã»æéã»ç£æ»èŠä»¶ãå®çŸ©ããŠãã ããã
éçšåŽãåçŸã§ããããšãéèŠã§ããã¢ãŒãã£ãã¡ã¯ãåãã¿ã°ãããŒãžã§ã³ããã«ãæ¥ããã§ãã¯ãµã ããã«ãã«äœ¿ã£ããªãªãŒã¹ã¿ã°ãã³ãããããã·ã¥ãªã©ãå«ããâããŒã»ãªãã»ãããªã¢ã«âãä»ããŸããæšå¥šããå®è¡ã¿ãŒã²ããïŒVMãã³ã³ãããKubernetesïŒããããã€æé ãããŒã¿ããŒã¹ãã€ã°ã¬ãŒã·ã§ã³ã®å®è¡æ¹æ³ãšç¢ºèªæ¹æ³ãæèšããŸãã
ããŒã«ããã¯èšç»ã¯åå2æã§ããã®ãŸãŸåŸããæé ã§ããã¹ãã§ããããªã¬ãŒä¿¡å·ïŒãšã©ãŒã¬ãŒãããã«ã¹ãã§ãã¯å€±æããã°ã€ã³é害ãªã©ïŒãæåŸã«ç¢ºå®ã«åããŠããããŒãžã§ã³ã®æåšãããŒã¿ããŒã¹å€æŽãå¯éãã©ãããå¯éã§ãªãå Žåã®å¯ŸåŠãæç¢ºã«èšããŸããAppMaster ã§æ§ç¯ããŠãœãŒã¹ããšã¯ã¹ããŒãããå Žåã¯ãçæã³ãŒãã®ããŒãžã§ã³ããã«ãæé ãã©ã³ã¿ã€ã èŠä»¶ãå«ããŠãããšãåããªãªãŒã¹ãåãã«ãã§ããŸãã
éçšãã¢ããªã®æåãææ¡ã§ãããŠãŒã¶ãŒã®èŠæ ãåºãåã«éç¥ãåããããããšãå¿ é ã§ãããã°ã®ä¿åå ŽæïŒãã¡ã€ã«ãsyslogããã°ãã©ãããã©ãŒã ïŒãæå»åæããªã¯ãšã¹ããçžé¢IDã®ä»äžã確èªããŠãã ãããåªå ããææšã¯ãã¬ã€ãã³ã·ïŒp95/p99ïŒããšã©ãŒçããªãœãŒã¹é£œåïŒCPU/ã¡ã¢ãª/ãã£ã¹ã¯ïŒããã¥ãŒæ·±åºŠãå€éšããã®å¯çšæ§ãã§ãã¯ãªã©ã§ããã¢ã©ãŒãã«ã¯çºç«æ¡ä»¶ãéèŠåºŠïŒããŒãž vs ãã±ããïŒããªã³ã³ãŒã«æ åœããšã¹ã«ã¬ãŒã·ã§ã³æé ãæç¢ºã«æžããŸãã
ããã¯ã¢ããã¯ãååšãããã ãã§ã¯äžååã§ãå³åº§ã«åŸ©å ã§ããããšãå¿ èŠã§ããäœãããã¯ã¢ãããããïŒDBããã¡ã€ã«ã¹ãã¬ãŒãžãèšå®ãæå·åããŒãªã©ïŒãä¿ç®¡å Žæãä¿ææéã誰ã埩å ã§ããããåŸ©å æé ãšç¢ºèªæ¹æ³ãææžåãã埩å ãªããŒãµã«ã宿çã«è¡ã£ãŠãã ãããããã¯ã¢ããã¯åŸ©å ãã¹ããã§ããŠåããŠäŸ¡å€ããããŸãã
ã©ã³ããã¯ã¯ãå€äžã«ããŒãžãæ¥ããšãã«æšæž¬ãªãã§å¯ŸåŠã§ããããã«çããŸãšãŸã£ãæé ã«ããŸããçç¶ãæåã«ç¢ºèªããé ç®ã次ã«èŠãã¹ããã°ãããã·ã¥ããŒãã倿ãã€ã³ãïŒããŒã«ããã¯ããããã¹ã±ãŒã«ãããïŒããšã¹ã«ã¬ãŒã·ã§ã³å ãé åºç«ãŠãŠæžããŸããã€ã³ã·ãã³ãåŸã¯ã¿ã€ã ã©ã€ã³ãåå ãä¿®æ£å 容ãèšé²ããè©³çŽ°ãæ°é®®ãªãã¡ã«ã©ã³ããã¯ãæŽæ°ããŠãã ããã
誰ãäœãã§ããããæç¢ºã«ããã¢ã¯ã»ã¹ã®ä»äžã»å¥å¥ªããã¬ãŒã¹ã§ããããã«ããŸããå žåçãªåœ¹å²ã¯ãããã€ã€ãŒãDB 管çè ãé²èЧå°çšãã€ã³ã·ãã³ãã³ãã³ããŒãªã©ã§ãããµãŒãã¹ã¢ã«ãŠã³ããããŒã¯ã³ãäžèЧã«ããæå°æš©éãæç¢ºã«ããŠãã ãããã¢ã¯ã»ã¹å€æŽããããã€ãDB 管çæäœãªã©ã¯ç£æ»ãã°ã®å¯Ÿè±¡ãšããä¿åå Žæãé²èŠ§æ¹æ³ãå®çŸ©ããŸãã


