ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯è± ã¬ã¬ã·ãŒã·ã¹ãã ã®è©±ããå°ããããã®ã§ãããActiveDirectory ã®ãã°ã€ã³ãŠãŒã¶æ
å ±ã䜿ã£ãŠ AWS Mamagement Console ã«Single Sign Onã§ããããã«ãã話ãããããšæããŸãã çµç·¯ 以åãã AWS Management Console ã®ã¢ã«ãŠã³ããã©ã®ããã«ç®¡çãã¹ããã«ã€ããŠã¯æ©ã¿ã®çš®ã§ãåŸæ¥å¡ãããŒãããŒäŒæ¥ããšã«IAMã¢ã«ãŠã³ããçºè¡ããæ¹æ³ã ãšãéè·æãæ¥åå§èšæéçµäºæã«ã¢ã«ãŠã³ããç¡å¹åããéçšãè¡ããªããšãªãããã ãããšãã£ãŠå
±éã®IAMã¢ã«ãŠã³ããè€æ°åã§äœ¿ãã«ããŠãéè·æãæ¥åå§èšæéçµäºæã«IAMã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã倿Žããéçšãè¡ãã«ããŠãä»åºŠã¯ãã¹ã¯ãŒã倿Žã宿çã«è¡ããªããšãªããããã§ã«éè·æã«ã¢ã«ãŠã³ãã®åæ¢ãè¡ãéçšã®ãã Active Directory ãšããŸã飿ºããŠè¡ãæ¹æ³ã¯ãªããã®ããšèããŠãEC2äžãã§ã«ååšããŠãã Active Directory ãµãŒãïŒADDSæ§ç¯æžã¿ïŒã«ADFSãæ§ç¯ãã AWS Mansgement Consoleãšé£æºãããæ¹æ³ãæ€èšŒããŠããŸããããèšå®ãè€éãªããšãADDS ãšADFSãåäž ã€ã³ã¹ã¿ã³ã¹ ã§åäœããããšãããªãã®ãµãŒããªãœãŒã¹ãå¿
èŠãšãªãã ã€ã³ã¹ã¿ã³ã¹ ãµã€ãºãäžããŠãªããšéçšãé£ããç¶æ³ã«ãªã£ãããããã£ãšç°¡åã«å®çŸããæ¹æ³ã調ã¹ãŠãããšãã AWS SSOããã£ãã®ã§ä»å㯠AWS SSOã«ãŠèªèšŒãå®çŸããŠã¿ãŸããã ADFSãå©çšããæ§æã«ã€ããŠã¯ãã¡ãã®èšäºãåèã«ãªããŸãã dev.classmethod.jp  ã·ã¹ãã æ§æ åæãšããŠåœç€Ÿã®ActiveDirectory ã®æ§æã説æãããšã AWS äžã®EC2 ã€ã³ã¹ã¿ã³ã¹ ãšããŠ1å°ãæ®ã2å°ãåšç±ããåŸæ¥å¡æ°ãæ¯èŒçå€ã ãªãã£ã¹ãã« å
ã«åæ£ãããŠé
眮ãããŠããŠãå ãªãã£ã¹ãã« ãš AWS éã§æ ç¹é VPN ãæ§ç¯ãããŠããŸãã åœæ AWS SSOã¯æå¯ã㯠ã·ã³ã¬ããŒã« ãªãŒãžã§ã³ããååšããªãã£ãããããŸã㯠ã·ã³ã¬ããŒã« ãªãŒãžã§ã³ã® VPC ãšãEC2äžã®ActiveDirectoryã®ããæ±äº¬ãªãŒãžã§ã³éã VPC Peeringã§æ¥ç¶ãã ã·ã³ã¬ããŒã« ãªãŒãžã§ã³ã«AD Connectorãé
眮ããŸãã AWS SSOã®IDãœãŒã¹ã«AD Connectorãæå®ãã AWS Management Consoleãžã®ãã°ã€ã³ã AWS SSOã®ãŠãŒã¶ããŒã¿ã«URLããè¡ãããšã§ã AWS SSOãADã«ååãã«ãã£ãŠãŠãŒã¶ãšãŠãŒã¶ãæå±ããADã°ã«ãŒããš AWS ã¢ã«ãŠã³ããš AWS ã¢ã«ãŠã³ãã®è¡šç€ºæš©éã®çŽã¥ããè¡ãããã®ãŠãŒã¶ã®æã€æš©éã§å¶éãããç¶æ
ã§ AWS Management Console ã«ãã°ã€ã³ãããšããã®ãäžé£ã®ä»çµã¿ã§ãã ããããã£ãããšã§ããå³ã§æžããšãããªæ§æã§ãã  远èšïŒçŸåšã ãš AWS SSOã¯æ±äº¬ãªãŒãžã§ã³ã§ããµãŒãã¹ã€ã³ããŠããããAD Connectorããã³ AWS SSO㯠ã·ã³ã¬ããŒã« ãªãŒãžã§ã³ã«äœãå¿
èŠã¯ãªãã§ãã Active Directory äžã§ã®èšå® å®éã« AWS SSOã§ã®ã¢ã«ãŠã³ãã®çŽã¥ãã¯ADã¢ã«ãŠã³ããããã¯ADã°ã«ãŒãã®ã©ã¡ãã§ãå¯èœãªã®ã§ãæš©éããŒã«åäœã§AD ã°ã«ãŒããäœæããããã«ADã¢ã«ãŠã³ããçŽã¥ããŠãããæ¹ãéçšã容æã§ãã AWS SSOã® ãã£ã¬ã¯ã ãªèšå® AD Connectoræ§ç¯åŸã AWS SSOã®ååèšå®æã« ãã£ã¬ã¯ã ãªã®ç®¡çç»é¢ã§ Microsoft AD ãã£ã¬ã¯ã ãªãéžæããŠãã ãããéžæãããšããã®ãã«ããŠã³ã«æ§ç¯ããAD ConnectorãåºãŠããã®ã§éžæããŠèšå®ãå®äºãããŸã AWS SSOã® AWS ã¢ã«ãŠã³ã飿ºèšå® ããã§ã®èšå®ã¯ãã¢ã¯ã»ã¹æš©éã»ããããšã AWS ã¢ã«ãŠã³ããšADã¢ã«ãŠã³ããŸãã¯ADã°ã«ãŒããšã¢ã¯ã»ã¹æš©éã»ããé¢é£ä»ãããè¡ããŸãã ã¢ã¯ã»ã¹æš©éã»ããã¯IAMããªã·ãŒã®ãããªãã®ã§çŽã¥ããADã¢ã«ãŠã³ããŸãã¯ADã°ã«ãŒããã§æäœã§ããæš©éãèšå®ã§ããŸãã ã¢ã¯ã»ã¹æš©éã»ããã¯æšæºã§ããã€ãçšæãããŠããŸããèªåã§äœæããããšãå¯èœã§ããã®å Žå㯠JSON ã§ããªã·ãŒãèšè¿°ããŠãããŸãã ãã®åŸã AWS ã¢ã«ãŠã³ããéžæããŠADã¢ã«ãŠã³ããŸãã¯ADã°ã«ãŒããšã¢ã¯ã»ã¹æš©éã»ãããé¢é£ä»ããã°å®äºã§ãã éçšã³ã¹ãçãªè©± 詳现ã«ã¯èšç®ããŠããªãã®ã§ããåŸæ¥æ§æãšãããŸã§å€§ããå€ãããªãã§ãããã£ãããšããè²»çšå
èš³ã§èŠããšçŽ100USDãæãããå¢ããŠããŸãã ã»AD Connector è²»çšãïŒçŽ60USD/æïŒæ°èŠçºçïŒ ã» VPC Peeringè²»çšããïŒçŽ30ïœ40USD/æïŒæ°èŠçºçïŒ ãã ãäžæ¹ã§EC2äžã®ADãµãŒãã®CPU䜿çšçãæ¿æžããããšã§ ã€ã³ã¹ã¿ã³ã¹ ãµã€ãºã1ãµã€ãºèœãšããŠããŠãããã®åæžå¹æãã ããã100USDããããããŸãããªã®ã§ããŒã¿ã«ã ãšãããŸã§å€ãããªãã£ãã§ãã ãã èšå®ãã¯ããã«æ¥œãªã®ã§ãã§ã«ADããã£ãŠ AWS Management Console ãADã§èªèšŒããããå Žåã¯ãã®æ¹æ³ããå§ãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯ãã®äžé£ã®OS/ ããã«ãŠã§ã¢ ããŒãžã§ã³ã¢ããã®äžã®æ®ã¿ã¹ã¯ãšãªã£ãŠããWebããã³ãããçšã® ã€ã³ã¹ã¿ã³ã¹ ã®å¯Ÿå¿ã®è©±ãããããšæããŸãã 以åã®æçš¿ã è±ã¬ã¬ã·ãŒã·ã¹ãã â¥ïŒDBã€ã³ã¹ã¿ã³ã¹ã®OS/MariaDBããŒãžã§ã³ãææ°å®å®çã«ããã話) ãã§èšèŒã®ãšããã2020幎ã®10æã«DBãŸã§ã¯OS/ ããã«ãŠã§ã¢ ããŒãžã§ã³ã¢ãããå®äºããŠæ®ãã¯PHP7.4åšãã®ã¿ãšãªã£ãŠããŸãã åæ 2020幎ã®10ææ«ããã®çŽ1é±éãã¡ã¬ã»ãŒã«ã§ããã®æéã¯ãšã³ãžãã¢ãã¡ã¬ã»ãŒã«ã«é¢é£ãã察å¿ãéçšç£èŠãªã©ã§æã空ãããªããããã¡ã¬ã»ãŒã«å®äºåŸããã®äœæ¥åéãšãªããŸããã ãšã¯ãã£ãŠããã è±ã¬ã¬ã·ãŒã·ã¹ãã â¢ïŒOS/ããã«ãŠã§ã¢ã®ããŒãžã§ã³ã¢ãããèšç»ããè©±ïŒ ãã®ããŒãžã§ã³ã¢ããã®é²ãæ¹ã§èšèŒã®ãšãããPHP7åäœç¢ºèªçšã®ãã©ã³ããžã®ã³ããããšåäœç¢ºèªã¯ãã§ã«é²ããŠããŠãã¡ã€ã³ã®äœæ¥ã¯æ©èœ ãããã° ãã¡ã€ã³ã§ããã ãããã° ã«ã€ããŠã¯é²æãæªãèšç»ãã2é±éé
ããŠããç¶æ³ã§ããã ãããã° ã®é
ãã®èŠå ãšããŠå€§ããã£ãã®ã¯ããã¹ãŠã®ç»é¢ããããã«ã€ããŠååšããŠããããçšã«ãã䜿ããªãç»é¢ããããã䜿ããæ¹ãå€åœ©ãããïŒæ©èœãå€ãããïŒç»é¢ãªã©ããã£ãŠã ãããã° ãè¡ã£ãéã«æ³å®ããã·ããªãªãããããããªãããšã§ããã ããã¯ä»æ§æžã管çãããŠããªããšããå¥ã®åé¡ã§ããŸãã«ä»æ§æžãããéããŠãäžè¶³ããŠãããã®ããªããŒã¹äœæãããããžã§ã¯ããéçºéšéã§å®æœããŠããŸãã ãã ãçŸæç¹ã§çŸåšé²è¡äžã®ãããžã§ã¯ãã®ææç©ãåœãŠã«ããŠãæå³ããªãã®ã§ããã°ã€ã³ã決æžãååéžæãæ€çŽ¢ãªã©ãšã³ããŠãŒã¶ã䜿ãäž»èŠæ©ã®æªéå»ã® ãããã° é
ç®æžã«åŸã£ãŠ ãããã° ããã以å€ã¯ããªãŒ ãããã° ãäŸé Œãã衚瀺厩ããããŒã¿ãããããç®æãèŠã€ãããéçºè
ã«å ±åããŠããããéçºè
㯠ãããã° å ±ååã³ãã°äžã«åºãFatalãšã©ãŒããã¹ãã§ã€ã¶ããšãã圢ã§é²ããŸããã ãããã«ã€ããŠã¯ãã¹ãå®è¡ããŠããçšåºŠäžå
·åãåºãªãããšãã確èªããŠããã°ãäžäžPHP7ç§»è¡åŸã«ä»®ã«åŠçã倱æããŠãããã§ãã°æ¡åããŠä¿®æ£ããŠããªãã©ã€ã§ããã®ã§æ¥œèгçãšããã°æ¥œèгçã§ããããçšåºŠãŸã§äºåã«æœ°ããããPHP7ç§»è¡åŸã«ä¿®æ£ãšããæ¹éãšããŸããã ã¡ã³ããã³ã¹äžã«çºçããåé¡ ãããã° ãåãæ¿ãã®åœæ¥ã¹ã±ãžã¥ãŒã«ãäœæ¥æé ã®ã¬ãã¥ãŒãçµäºããã¿ã€ãã³ã°ã§2020幎ã®11æã®4é±ã«4åç®ã®ã¡ã³ããã³ã¹ã宿œããŸããã ä»åã¯äœæ¥æé ãšããŠã¯ç°¡åã§ããããããæ§ç¯ããŠãããæ°ç°å¢çšã®EC2 ã€ã³ã¹ã¿ã³ã¹ (AmazonLinux2/PHP7.4)ãæ°ç°å¢çšã«çšæããALBã«çŽã¥ããŠæºåããŠããã DNS ã®èšå®ãšããŠçŽã¥ããALBã倿ŽãããããããµãŒãã«ã€ããŠãæ§ ã€ã³ã¹ã¿ã³ã¹ ã®cronãç¡å¹åããŠæ° ã€ã³ã¹ã¿ã³ã¹ ã®cronãããããã«ããã®ã¿ã ã£ããããã¡ã³ããã³ã¹ã«å
¥ã£ãŠããåãæ¿ããŠãã¡ã³ããã³ã¹ãéããåã®æçµåäœç¢ºèªãŸã§ã¯æ¥µããŠé 調ã§ããã åé¡ãçºçããã®ã¯æçµåäœç¢ºèªæã§ã以äžã®äžå
·åãåºãŠããŸããã ïŒïŒã¢ããªã§ãã°ã€ã³ã§ããªã端æ«ããã åå ãåããã3æéã»ã©æ§ã
ãªä»®èª¬ãç«ãŠãŠã¯åãåããè¡ãããšãç¹°ãè¿ããã®ã§ããçµå±åå ãåãããããã ãªããæéããã€ã«ã€ããŠæ¬¡ç¬¬ã«ãã®åé¡ã¯è§£æ¶ãããæçµçã«ã¯ç¹å®ã®åŸæ¥å¡ã®ç«¯æ«1å°ã§ããçºçããªãç¶æ³ã«ãªã£ãŠããŸããã æåããèŠãŠããªã«ãããã®ãã£ãã·ã¥åœ±é¿ã®ããã ãšèããããã®ã§ããç¹å®åŸæ¥å¡ã®ç«¯æ«ä»¥å€ã§ãã®åé¡ãçºçããŠããããæããã«äžè¬ãŠãŒã¶ãšã¯ç°ãªãäœ¿ãæ¹ãããŠãã端æ«ãäŒå¡ã¢ã«ãŠã³ããªã®ã§ãä»åã®ã¡ã³ããã³ã¹ãšã¯å¥ã«ç«¯æ«ããŠãŒã¶ã¢ã«ãŠã³ãã®åé¡ã®å¯èœæ§ããããããä»åã®ã¡ã³ããã³ã¹ã«èµ·å ããäžå
·åã§ã¯ãªããšçµè«ä»ããŠãã®åé¡ã«ã€ããŠã¯Closeãšãã倿ãè¡ããŸããã å®éã«ã¡ã³ããã³ã¹ãæããŠããåãäºè±¡ãäžè¬ãŠãŒã¶ã§çºçããŠããªããããããã ãããã° ã§äœ¿ã£ãŠãã端æ«ãäŒå¡ã¢ã«ãŠã³ãã«èµ·å ããåé¡ã ã£ãããã§ããããã¯ããã§åé¡ã§ã ããã㰠端æ«ã ãããã° ã¢ã«ãŠã³ãã¯äžå®æééããããªã»ããããŠéåžžã®ãŠãŒã¶ã«è¿ãç¶æ
ãäœæããŠãããªããšæ£ãã ãããã° ã§ããªããªãã®ã§æ¬¡åããŒãžã§ã³ã¢ããã¡ã³ããã³ã¹ãè¡ãåãŸã§ã«ã¯æºåäœæ¥ãšããŠããããšããŸãã ïŒïŒæ±ºæžãè¡ããªã æ±ºæžææ®µ ãïŒã€ãã£ã çµè«ãäž¡æ¹ãšãä»åã®ããŒãžã§ã³ã¢ããèµ·å ã§ã¯ãªãã£ãã§ãã çæ¹ã® æ±ºæžææ®µ ã«ã€ããŠã¯æ±ºæžã·ã¹ãã ã®ä»æ§ãšã㊠IPã¢ãã¬ã¹ å¶éãå®éã«ã¯ååšãããããã®ããšã瀟å
è³æã«èšèŒããªãã£ããããæ±ºæžã·ã¹ãã ã®ç®¡çç»é¢äžã§ IPã¢ãã¬ã¹ ã倿Žãããšããã¿ã¹ã¯ãèšç»æç¹ã§æŒããŠããããšãåå ã ããäžæ¹ã® æ±ºæžææ®µ ã«ã€ããŠã¯ããããæ±ºæžã·ã¹ãã ã®ä»æ§ã§ãã€ãªãå
ãµã€ãç»é¢æãã³ã¹äžã¯æ±ºæžãè¡ããªããããªä»æ§ãšãªã£ãŠããããšãåå ã åå ã倿ããã®ã¯èšç»äžã§ã¡ã³ããã³ã¹ãéããªããã°ãªããªãæéã ã£ãããããã®ïŒã€ã® æ±ºæžææ®µ ã®ã¿éžæäžå¯ã®ç¶æ
ã§ã¡ã³ããã³ã¹ãéããéããåŸã«åäœç¢ºèªãè¡ãã æ±ºæžææ®µ ããšã«æ±ºæžãéžæå¯èœãšããæçµçã«ã¯ã¡ã³ããã³ã¹æããã1æéåŸã«ã¯ãã¹ãŠã® æ±ºæžææ®µ ãå©çšå¯èœãªç¶æ
ãšãªããäžé£ã®äœæ¥ã¯çµäºããŸããã ã¡ã³ããã³ã¹çµäºåŸã«çºèŠããåé¡ æžå¿µããŠãããšããã ãããåŠç åšãã§åé¡ãçºçããŸããã å
·äœçã«ã¯ CRM ããŒã«ã§ããŒã¿é£æºã§ããªãåé¡ãçºçããŠããŸããã åå ãšããŠã¯ïŒç¹ã§ãïŒã€ç®ã¯ ãªããžã㪠ã§ç®¡çãããŠããªãéçã®ã³ãŒããšèšå®ãã¡ã€ã«ãååšããŠããŠããããã®ãã¡ã€ã«ãç§»è¡å¯Ÿè±¡ããæŒããããšãïŒã€ç®ã¯ããããçæããäžæãã¡ã€ã«ãæ ŒçŽãããã©ã«ããç§»è¡åŸã® ã€ã³ã¹ã¿ã³ã¹ ã«ååšããŠããªãã£ãããšãããããåå ã§ããã åè
ã¯è©²åœããæ§ ã€ã³ã¹ã¿ã³ã¹ ããæ°ãã« ãªããžã㪠å
ã«æ ŒçŽããããã§ãç§»è¡åŸã® ã€ã³ã¹ã¿ã³ã¹ ã«ç§»ããåŸè
ã«ã€ããŠã¯äœæ¥ ãã£ã¬ã¯ã ãªãš ããŒããã·ã§ã³ ãèšå®ãæ£åžžåäœããããã«ãªããŸããã äžèšä»¥å€ã§åä»ãªåé¡ãšããŠãPHP7.4ã«ããŒãžã§ã³ã¢ããåŸã« SQL ãçºè¡ããéã«æå³ããã€ã³ããã¯ã¹ã䜿ãããªãåé¡ãšããã®ãçºçããŠããå¢ããããããã¯PHP7.2以éã§PDOã§INTåããã€ã³ãããéã®å
éšåäœã倿Žã«ãªã£ãããšãåå ãšåŸæ¥åããä¿®æ£ã宿œãè§£æ¶ããŸããã blog.tokumaru.org ãŸãä»åã®ããŒãžã§ã³ã¢ããã¯ç€Ÿå
ã§ããããªãã«å€§ããšã ã£ããããåå¶æ¥éšéã®åŸæ¥å¡ãã¡ã³ããã³ã¹ãæããŠããæ¬çªç°å¢ã§å€ãªãšããããªãããæ¬åœã«çްããèŠãŠããããããã§ãPHP7.4ãžã®ããŒãžã§ã³ã¢ãããšã¯ç¡é¢ä¿ã§å
ã
ã®ç°å¢ããäžå
·åãèµ·ãããŠããåæã2ãæã»ã©èŠã€ããŠãããããã䜵ããŠä¿®æ£å¯Ÿå¿ã宿œããŸããã ãŸãšã ä»åã®Web/ããã ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ããã«ã€ããŠã¯ãããŒãžã§ã³ã¢ããã«äŒŽãæè¡çãªè©±ãããã仿§ã®ææžåããã¬ããžåãã§ããŠããªãããšã«ããåé¡ã®ã»ããå€ãã£ããšæããŠããŸãã ãªããžã㪠管çå€ã®ã³ãŒããPDOã®å
éšåäœã®ä»æ§å€æŽã«é¢ããéšåã¯ä»åã®ã¿ã€ãã³ã°ãæ©ã«çŽããŸããã§ãããšæãã®ã§ããã仿§ãææ¡ã§ããŠããªãã£ãåé¡ãç¹ã«æ±ºæžã·ã¹ãã ã CRM ããŒã«ãªã©ã®å€éšã·ã¹ãã 飿ºåšãã®ä»æ§ãææ¡ã§ããŠããªãããšã¯èŽåœçã§ãä»åã®ã¡ã³ããã³ã¹äžã«çºèŠãã仿§æŒãã«ã€ããŠã¯ç€Ÿå
ã®ææžã«æŽæ°ããä»åŸã®åçºé²æ¢ã«ã€ãªããŠãããããšèããŠããŸãã ãã ãå
šäœéããŠã¯ãŠãŒã¶åœ±é¿ãæå°éã«æãã圢ã§OS/ ããã«ãŠã§ã¢ ã®ããŒãžã§ã³ã¢ãããã§ããã®ã§ã¯ãªãããšæã£ãŠããŸãã PHP7.4ãžã®ããŒãžã§ã³ã¢ãã察å¿ã«ã€ããŠã¯æ¬æ Œçã«åãåºããã®ã9æäžæ¬ã§ã察å¿å®äºã11æäžæ¬ãªã®ã§çŽ2ã«æéã§ PHP ã®ã¡ãžã£ãŒããŒãžã§ã³ãè·šãããŒãžã§ã³ã¢ãããè¡ã£ãããšã«ãªããŸãã æ£çŽä»åããªã匷åŒãªé²ãæ¹ãããŸãããããã®èŠæš¡ã®ãµã€ãã§ãã®æéã§ç¡äºã«ããŒãžã§ã³ã¢ãã察å¿ãè¡ããã®ã¯ä»¥åã®DBã®ããŒãžã§ã³ã¢ãã察å¿ã®éã«ãè§Šãããšããåœç€Ÿã®ãšã³ãžãã¢ã®æè¡çãªã¹ãã«ã®é«ããšå§åçãªåé¡è§£æ±ºèœåã«æ¬åœã«å©ããããŠã®ããšã ãšæã£ãŠããŸãã ä»åã®ãã®Web ã€ã³ã¹ã¿ã³ã¹ åã³ããã ã€ã³ã¹ã¿ã³ã¹ ã®OS/ ããã«ãŠã§ã¢ ã®ããŒãžã§ã³ã¢ããå®äºããã£ãŠãä»åã®ã¹ã³ãŒãã§è¡ãããšããŠããã€ã³ãã©ç㪠ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã¯ã»ãŒå®äºããŸããã ãŸã æçš¿èšäºãšããŠã¯äœæããŠããªãã®ã§ããããã€ã³ãã©çãªè©±ãšã㊠AWS Auto Scalingãå©çšãã ã€ã³ã¹ã¿ã³ã¹ 管çã«åãæ¿ãã話ãããããæ¬¡åæçš¿ããããšæããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã 以åã®æçš¿ã è±ã¬ã¬ã·ãŒã·ã¹ãã â ïŒäœããã©ãé²ãããåé¡ïŒ  ãã®ã©ããããããïŒã®éšåã§ãå°ãè§Šããã®ã§ãããåœç€Ÿã§ã¯ã·ã¹ãã å質åäžã®ããé±ã«4æéã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã«å
ãŠããæéãèšããŠããŸãã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã«å¯Ÿããæ¯æŽãšããŠã PHP ãã°ãã¢ããªã±ãŒã·ã§ã³ãã°ãäžç®æã§èŠããããã«ãããšããã®ãä»åã®è©±ã§ãã ããŸãŸã§ã®éçš åºæ¬çã«ãå¿
èŠãªæã«å¿
èŠãªãµãŒãã« SSH ã§æ¥ç¶ã㊠Linux ã³ãã³ãã§ãã«ããã«ãããŠã¿ãããããã«ããã©ãã®ã§äžéšã®ãã°ã«ã€ããŠã¯ãäžãæã®ãµãŒãã«éçŽãããŠã¯ããŸããåºæ¬çã«ã¯åãµãŒãã« SSH æ¥ç¶ããŠã¿ããšããããæ¹ã§ããã äžèšãšã¯å¥ã«ç¹å®ã®ããŒã¯ãŒããäŸãã°åœç€Ÿç¬èªã§å®çŸ©ããŠãããšã©ãŒã³ãŒããªã©ããã°ã«èšé²ãããå Žåãç£èŠããŒã«ãã¢ããªã±ãŒã·ã§ã³ãã°ç£èŠãšããŠã¢ã©ãŒããSlackã«çºå ±ããä»çµã¿ããããé倧ãªã¢ããªã±ãŒã·ã§ã³ãšã©ãŒã«ã€ããŠã¯éç¥ãåããããšããä»çµã¿ã§ããã ãªã®ã§ããŸã倧åæãšããŠæ¬çªç°å¢ã«ã€ããŠã¯èª¿æ»ã®äŸé Œãäžå
·åããªãéããéçºè
ã¯èœåçã«ãã°ãã¡ã€ã«ãèŠãªãïŒéèŠãªãã®ã«ã€ããŠã¯ã¢ã©ãŒãéç¥ã§æ°ã¥ããããã«ããŠããŠããã以å€ã¯èŠãŠããªãïŒããã°ä»¶æ°ã®å¢æžãªã©ã«ã€ããŠãã¢ãã¿ãªã³ã°ãã§ããŠããç¶æ
ã«ãªã£ãŠããŸããã§ããã ããäžã€ã®ãã°ã«é¢ããåé¡ ãã°ã«ãŸã€ããåé¡ãšããŠã¯ããäžã€å€§ããªåé¡ããã£ãŠã PHP ãšã©ãŒãã°ã®èšå®ã§Warningãåºããªãèšå®ãããããªã©ã®äžéšæ¬çªç°å¢ã«ãããŠããããšã§ãã ãããããªã®ã§ããã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ãçµç¹ç«ã£ãŠè¡ãåã® ãœãŒã¹ã³ãŒã ç¶æ
ã§1ãªã¯ ãšã¹ ãäžã«Warning/Deprecated/Noticeãå«ãããšå€ãå Žå300ä»¶ã»ã©ã®ãã°ãåºãŠããã®ã§ããããå
šéšæ¬çªã®ãã°ãšããŠèç©ããããšãã°ãã¡ã€ã«ãè¥å€§åãããèŠãåŽãéé³ã«ãªãã®ã§ php .iniã®èšå®ã§åºããªãããŠããããããªãããªãšæããŸãã ãã ãæ¬æ¥ã®èãæ¹ã§ãããšNoticeãå«ããšã©ãŒãã°ã«ã€ããŠã¯0ãæãŸããšèããŠããŠãä»åã¯éé³ã«ãªããããããªããã©åºåããŠCloudWatchLogsã«ä¿ç®¡ããŠã¿ããšãã«ãã£ã«ã¿ãªã³ã°ãããšãã圢ã«ããŸããã Cloud Watch Logs å°å
¥ã®å¹æ ãã¡ãã¡ SSH ã§åãµãŒãã«æ¥ç¶ãããéçŽãããããŒã¿ãCloudWatchLogsã§èŠããããšã¯èšããŸã§ããªãã§ãããDeprecatedãã©ãã§äœä»¶èµ·ãã£ãŠããã®ããææ¡ã§ããããšã§ããéçºç°å¢ãæ€èšŒç°å¢ã¯ç€Ÿå
ãããã° çšãªã®ã§ãã¹ãŠã®ãŠãŒã¶ åç· ã®ãã°ãååŸã§ããããã§ã¯ãªããæ¬¡åã® PHP ããŒãžã§ã³ã¢ãããŸã§ã«ãããæç¢ºã«è§£æ±ºããªããšãŸããïŒãšããã®ãåããããã«ãªã£ãããšã¯å€§ããã£ãã§ãã ãŸããä»ãä»¶æ°ã©ã®ãããããã®ïŒãããæ¥ã«ãã® ãã£ã¬ã¯ã ãªã§Warningå¢ããŠããã ãã©ãäœããããããããããªããããœãŒã¹ãã§ãã¯ããŠã¿ãŠããšãã£ãäŒè©±ã®ããã«ããšã©ãŒãã°ä»¶æ°ãã¢ãã¿ãªã³ã°ããããšã§ãæ®æ®µæ°ã¥ããªãããšãèŠã€ãã ãœãŒã¹ã³ãŒã ã®å質åäžã«ã€ãªããã®ã§ã¯ãªãããšæåŸ
ãããŠããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã SHOPLISTã® è±ã¬ã¬ã·âã·ã¹ãã ã®è©±ã10åç®ãšãªããŸããã ä»åã¯SHOPLISTã®ãããã€æ¹æ³ã倿Žãã話ã§ãã ä»ãŸã§ã®ãããã€æ¹æ³ ä»ãŸã§ã®ãããã€æ¹æ³ã¯ããªãå€å
žçã§ä»¥äžã®ããæ¹ãããŠããŸããã æ€èšŒç°å¢ãžã®ããã〠æ€èšŒç°å¢ã« SSH ãã°ã€ã³ããgitã®ã³ãã³ãæäœã§ãªãªãŒã¹å¯Ÿè±¡ã®ãã©ã³ããã¿ã°ãæå®ããGitLabäžããcheckout æ¬çªç°å¢ãžã®ããã〠æ€èšŒç°å¢ã« SSH ãã°ã€ã³ãã察象㮠ãœãŒã¹ã³ãŒã ãæ¬çªã« rsync èª²é¡ ä»åãããã€æ¹æ³ã®å€æŽãè¡ããã£ããã«ãªã課é¡ãããã€ããããŸããã âµãªãªãŒã¹ã® ããŒã«ãã㯠ãæéã§ããããš ãªãªãŒã¹çŽåŸã«äžå
·åãåºãŠåãæ»ãããšããæã«ããŸããæ€èšŒç°å¢ã« SSH ãã°ã€ã³ãããååãªãªãŒã¹æç¹ã®ã¿ã°ãæå®ã㊠ãœãŒã¹ã³ãŒã ãcheckoutåŸãæ¬çªç°å¢ã« rsync ãè¡ããå®éã«ã¯ rsync ã®ãªãã·ã§ã³ã§é€å€ããããã® ãœãŒã¹ã³ãŒã ãæå®ãããã¡ã€ã«ãæå®ããŠå®è¡ããŠããããããã®é€å€ãã¡ã€ã«ã®ãªã¹ãã®ç¢ºèªãªã©ããªãªãŒã¹ãã³ã«çºçããã®ã§ãåãæ»ãã®æææ±ºå®ãããŠãã ããŒã«ãã㯠ãå®è¡ãããŸã§ã®æéãé·ãç¶æ
ã«ãªã£ãŠããã â¡ ãªããžã㪠äžã®ç¹å®ãªãªãŒã¹ã¿ã°ã§æå®ãããã³ãŒãã®ç¶æ
ãšå®éã«æ¬çªç°å¢ã§åããŠããã³ãŒãã®ç¶æ
ãéãã±ãŒã¹ãããã ä»ãŸã§ã®ãããã€æ¹æ³ã¯ rsync ãå®è¡ããéã« rsync 察象ã«å«ããªãã³ãŒãããŸãšãããã¡ã€ã«ãæå®ããŠå®è¡ããŠããããããã®ãã¡ã€ã«ã«å«ãŸãããã¹ã® ãœãŒã¹ã³ãŒã ã«ã€ããŠã¯æ¬çªãµãŒãã« rsync ãå®è¡ãããªããçµæãšã㊠ãªããžã㪠äžã®ãªãªãŒã¹ã¿ã°ã§æå®ãããç¶æ
ãšãæ¬çªã®ã³ãŒãç¶æ
ã«å·®ç°ãçãŸããŠããŸãã±ãŒã¹ããã£ãã â¢EC2 ã€ã³ã¹ã¿ã³ã¹ ã®è¿œå ã»çž®éã®éœåºŠ rsync å
ã® IPã¢ãã¬ã¹ ã®ã¡ã³ããã³ã¹ãè¡ãå¿
èŠããã管çãç
©é åçš®ã»ãŒã«ã§EC2 ã€ã³ã¹ã¿ã³ã¹ ã®å°æ°ã倿ŽãããéœåºŠ IPã¢ãã¬ã¹ ã®ã¡ã³ããã³ã¹ãè¡ãå¿
èŠãããã GitLab CI/CDã§èªåãããã€ãå®çŸããèšèš Gitäžã®ãã©ã³ããšããŠæ€èšŒç°å¢ã® ãœãŒã¹ã³ãŒã ã«å¯Ÿå¿ãããã©ã³ããæ¬çªç°å¢ã® ãœãŒã¹ã³ãŒã ã«å¯Ÿå¿ãããã©ã³ããäœæããŠãããããããã®ãã©ã³ãã«å¯ŸããŠããŒãžããããã¿ã€ãã³ã°ã§GitLabRunnerãèµ·åããPipelineã®åstageã«å®çŸ©ãããŠãããžã§ããå®è¡ããŸãã åãžã§ãïŒdryrunãdeployãpost_deployïŒã«ã¯ãããã€ã«ãããå¿
èŠãªå®çŸ©ãèšèŒãããŠããŠãååŠçã®å®è¡ãåŸ
ã£ãŠ ãœãŒã¹ã³ãŒã ã®ãããã€ãå®äºãã圢ã§ãã å®éã®éçºã¯GitLab-Flowã«åŸã£ãŠå®æœãããŠããããã æ€èšŒç°å¢ãžã®ãããã€ã®å Žåã¯ãfeatureãã©ã³ãããæ€èšŒçšãã©ã³ãã«Merge Requestãç³è«ãããæ¿èªãããã¿ã€ãã³ã°ã§ããŒãžãå®è¡ãããæ€èšŒç°å¢ãããã€çšã®ãã€ãã©ã€ã³ãå®è¡ã æ¬çªç°å¢ãžã®ãããã€ã®å Žåã¯featureãã©ã³ããããã¯HotFixãã©ã³ãããæ¬çªçšãã©ã³ãã«Merge Requestãç³è«ãããæ¿èªãããã¿ã€ãã³ã°ã§ããŒãžãå®è¡ãããæ¬çªç°å¢ãããã€çšã®ãã€ãã©ã€ã³ãå®è¡ã åãæ»ãéã¯åãæ»ãæç¹ã®ã³ããã ããã·ã¥å€ ããHotFixãã©ã³ããäœæããããšã¯äžèšã«èšèŒããæ¬çªç°å¢ãžã®ãããã€ã®æµããšåãã§ãã ãããã€å¯Ÿè±¡ã®EC2 ã€ã³ã¹ã¿ã³ã¹ ã®ç¹å®ã¯ãansibleãEC2 ã€ã³ã¹ã¿ã³ã¹ æ§ç¯æã«ãçšéã«å¿ããŠã¿ã°ãã€ãã仿§ãšãªã£ãŠããããã®ã¿ã°ã«çŽã¥ããªã¹ãã AWS ã® API ãå©çšããŠååŸããŠããŸãã ãããã€æ¹æ³ã倿ŽããŠã¿ãР倿ŽçŽåŸã«ã€ããŠã¯ããããã€ã®ä»æ¹ã倧ããå€ãã£ãããæè¡çµ±æ¬éšãžã®åãåãããè¥å¹²çºçããŠããŸãããããã®åŸåé¡ãªãéçšã§ããŠããŸãã ãŸãå®éã«ãªãªãŒã¹äœæ¥ãè¡ãçŸå Žã®ãµãŒããµã€ããšã³ãžãã¢æ°åã« ãã¢ãª ã³ã°ãããšãããæŠãäžã
ã ã£ãã®ã§ãããã€æ¹æ³å€æŽãšããŠã¯ããŸããã£ããšæã£ãŠããŸãã åœåæžå¿µãšããŠã rsync ããæ¯ã¹ããšãããã€éå§ããå®äºãŸã§ã®ããŒã¿ã«æéããããã®ã§ããããã€æéãå»¶ã³ãããšã§äœãè¯ããªãããšïŒãªãªãŒã¹äžã«äžå
·åãçºçããå Žåã«äžæ¢ã§ããªããšãããããã€äžã«ããããã€ãå®äºããŠãã ã€ã³ã¹ã¿ã³ã¹ ãšæªå®äºã® ã€ã³ã¹ã¿ã³ã¹ ãã§ããäž¡æ¹ã«ALBãæ¯ãåããŠããã®ã§å€§äžå€«ãªã®ããšãïŒãèµ·ããããããªãããšããæŒ ç¶ãšããäžå®ããã£ãã®ã§ãããç¹æ®µä»ã®ãšããã¯åé¡ãåºãŠããŸããã ãã®ä»¶ã«ã€ããŠã¯æŒ ç¶ãšããäžå®ã¬ãã«ãªã®ã§ãå
·äœçã«åé¡ãçºçãããåé¿çãèããŠãããããšæããŸãã ã¡ãªã¿ã«åãæ¿ããŠçŽ5ã«æãçµéããŠããŸããä»ã®ãšããåé¡ã®çºçã¯ãªãã§ãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯ãè±ã¬ã¬ã·âã·ã¹ãã ãã·ãªãŒãºãšã¯å°ããããŠããŸã話ã§ããã ããæ°ã«æãSHOPLISTã®OS/ ããã«ãŠã§ã¢ ã®ããŒãžã§ã³ã¢ãããè€æ°ã®ã¡ã³ããã³ã¹ã«åããŠè¡ã£ãŠã㊠ãã®éçšã§ã¡ã³ããã³ã¹ç»é¢ã®è¡šç€ºæ©èœæ¹ä¿®ãããæ¹ä¿®ãããšãã話ãããããšæããŸãã æ¹ä¿®ãè¡ããã£ãã æ·±å€ã¡ã³ããã³ã¹ã®èšç»äœæ¥ãè¡ã£ãŠãããšé ã«ã瀟å
äŒè°ã§ SEO æ
åœè
ãããã¡ã³ããã³ã¹æã® ã¹ããŒã¿ã¹ã³ãŒã ãããŸ200ã«ãªã£ãŠãããããã¯ããŒã«ããããšæ£åžžããŒãžãšããŠãã£ãã·ã¥ããã¡ãããã503ã«ããªããšãŸããã§ããããšåããŠèãããšãèšãããŸããã ãïŒ503ã£ãŠService Temporarily Unavailable ãªãã ãã©âŠãã»ããšã«ïŒ ãµãŒããšã³ãžãã¢ã ãšãWebãµãŒããæšæºã§è¿ããã®ãšã©ãŒç»é¢ã®å°è±¡ã匷ãããŠä¿ãã«ä¿¡ããããã®ã§ãã調ã¹ãçµæã©ããããããããã§ãã ã¹ããŒã¿ã¹ã³ãŒã 503ãé©åãªçç± è€æ°ã®ãããæç®ã SEO äŒç€Ÿã®æ¹ãèšã£ãŠããããšããŸãšããŠèŠçŽãããš ã»503ã¯ã¯ããŒã©çã«ã¯äžæçã«ãµã€ããå©çšã§ããªãã®ã§åŸã§ãŸãã¯ããŒã«ããŠãã ãããšããæå³ã«ãªãããã ã»200ã ãšã¯ããŒã©ã¯æ£åžžããŒãžãšããŠèªèããŠããŸããããã£ãã·ã¥å¯Ÿè±¡ãšããŠæ±ã£ãŠããŸãã ã»404ã ãšããŒãžããªããšå€æã«ãªãã®ã§ããŒãžããªããªã£ãŠã¢ããšããŠèªèããŠããŸãã ã ãã 503ãé©å ãšããããšãããã§ãã èŠããã«ãµãŒããšã³ãžãã¢ã®èŠç¹ã§ãããš5xxã¯ãµãŒããšã©ãŒãšããèªèã ãããããªãã®ã客ããã«è¿ãã¡ãã ãã ããããµãŒãããã°ã©ã çŽããªãããšããçºæ³ãªã®ã§ãããã¯ããŒã©ã®ã®èŠç¹ã ãš503ã¯äžæçã«ãµã€ããå©çšã§ããªããšããè§£éã«ãªããããã§ãã ãªãã»ã©ïŒãšæããªããåœè©²ç®æã®ãœãŒã¹ã®ä¿®æ£ãè¡ããŸããã ãã®æèŠã€ããå°ããªåé¡ ä¿®æ£ç®æãç¹å®ããŠçŽãããã ãœãŒã¹ã³ãŒã ã以äžãªã®ã§ãã header('HTTP/1.0 200 OK'); ãšãªã£ãŠãŸããã ããã£ãšHTTP ãããã³ã« ã1.0ã«ãªã£ãŠããã§ä¿®æ£ããŸããã æŽå²ãæããŸã⊠ããããã®å«ãçŽããŠããªããšã§ããã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åãååã«åŒãç¶ã ãªãã¡ã¯ã¿ãªã³ã° ãã¿ã§ãã ååã®æçš¿ã ãªãã¡ã¯ã¿ãªã³ã°ã®ç¬¬äžæ©ãšããŠäžèŠãœãŒã¹ãåé€ããŠè«çLOCã15%åæžãã話  ãã®èæ¯ã®éšåã§ãè§ŠããŸããããSHOPLISTã§äœ¿çšããŠãã ãã¬ãŒã ã¯ãŒã¯ ã¯SHOPLISTãã¯ã«ãŒãºæ ªåŒäŒç€Ÿããå瀟åãã以åããå
±éã§äœ¿çšããŠããVenusãšããèªç€Ÿéçºã®ç¬èª ãã¬ãŒã ã¯ãŒã¯ äžã§å®è£
ãããŠããŸãã ãªãã§ä»ãã®ãæäžã«ç¬èª ãã¬ãŒã ã¯ãŒã¯ ãªããŠäœ¿ã£ãŠãããã ïŒïŒãšããææã¯ããã£ãšããªã®ã§ãããã ãããšèšã£ãŠä»ããç¬èª ãã¬ãŒã ã¯ãŒã¯ äžã§åäœããŠãããã¹ãŠã®åŠçããã¹ãŠæžãæãããšããã®ã¯ããŸãã«ãéçŸå®çãªè©±ãªã®ã§ããŸãã¯SHOPLISTã®éå¶ã«äžèŠãªå
±éå
±éåŠçã®æé€ãã§ããéãã®ä¿å®æ§ã®åäžãä»åã® ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã®äžé£ã®æŽ»åã®äžã§å®æœããŸããã å®éã®äœæ¥ã¯äžèŠã³ãŒãã®åé€ãšåãããŠé²ããŠããã®ã§è¡ã£ãŠããå
容ã«äžéšéè€ããããŸãã å®éã«è¡ã£ãããš SHOPLISTã§äœ¿çšããŠããªãã³ãŒãã®åé€ ããã¯ååã®æçš¿ã ãªãã¡ã¯ã¿ãªã³ã°ã®ç¬¬äžæ©ãšããŠäžèŠãœãŒã¹ãåé€ããŠè«çLOCã15%åæžãã話 ãã§è§ŠããŠããã®ã§å²æããŸãã å
¬åŒã³ã³ãã³ãåºæã®åŠçã³ãŒãã®åé€ å
ã
å
¬åŒã³ã³ãã³ããäœæããã®ã«äœ¿ã£ãŠãã ãã¬ãŒã ã¯ãŒã¯ ã ã£ããããå
±éåŠçã®äžã«å
¬åŒã³ã³ãã³ãåºæã®ãã®ãå
¥ã£ãŠããŸãã åãããããäŸã§ãããšãuid=NULLDOCOMOãã§ docomo ã®å
¬åŒIDãååŸããã ã¬ã©ã±ãŒ ã®å Žåããã£ãªã¢ã«å¿ããŠContent-Typeã倿ŽããããããŒãéããªã©ã§ãã ãããããã£ãªã¢æ±ºæžã¯è¡ã£ãŠããŠããå
¬åŒã³ã³ãã³ãã§ã¯ãªãã®ã§å®å
šã«ç¡é§ãªåŠçã§ãã€ç¡é§ã«ããŒã¿ãæ ŒçŽããŠããŸã£ãŠããã®ã§å
±éåŠçããåé€ããŸããã æ§èšæž¬ã·ã¹ãã çšã®ç¬èª ã¢ã¯ã»ã¹ãã° åºååŠçã®åé€ åœæã®CROOZã«ã¯ Compass ãšããç¬èªã®ç°¡æçãªéèšã·ã¹ãã ãããããã®ã·ã¹ãã ã«æž¡ãããã®ãã°ãçæããŠãã¡ã€ã«ã«åãåºãåŠçããã°ãã¡ã€ã«äžã§ãŠãŒã¶ãäžäœã«ç¹å®ããããã®ãŠããŒã¯ããŒãçæããåŠçãªã©ãæ®ã£ãŠãããããå
±éåŠçããäžåŒåé€ããŸããã éè€ã¡ãœããã®èŠªã¯ã©ã¹ãžã®ç§»å ããããã¯ãåœããåã®è©±ãªã®ã§å²æããŸãã ã¯ã©ã¹ã®åã¡ãœãããã¡ã³ã倿°ã®å
¬éã¬ãã«ã®èŠçŽã ãããããåœããåãªã®ã§å²æããŸãã ãã©ã€ããŒãã¡ãœãããã¡ã³ã倿°ã®åç§°ã®ä¿®æ£ æããã«ãã£ãŠããåŠçãã¡ãœããåç§°ãã倿ã§ããªããã®ãããããã®ãããªãã®ã«ã€ããŠã¯ä»åäžåŒçŽããŠããŸãããã圱é¿ç¯å²ããã®ã¯ã©ã¹å
ã®ã¿ã§ãåŒã³åºãå
ã«è¿·æããããªãããã§ãã ãã¬ãŒã ã¯ãŒã¯ ã® ãã£ã¬ã¯ã ãªæ§æãå®çŸ©ããdefineã®èŠçŽã ãããããã宿°å®çŸ©ããå¿
èŠããã®ïŒã¿ãããªãã®ãäŸãã° ãã¬ãŒã ã¯ãŒã¯ ãæå®ããäœãã®ã©ã€ãã©ãª ãã£ã¬ã¯ã ãªã宿°ã§å®çŸ©ããããã®å®æ°ã¯3ã€ã®å®æ°ãš ãã£ã¬ã¯ã ãªã»ãã¬ãŒã¿ã§æ§ç¯ãããŠããããããŠä»ååç
§ããã3ã€ã®å®æ°ã¯ã»ãã®ã©ãã§ãåç
§ãããŠããªããããªãã®ãããã€ããããŸããããããããã£ããã®ã¯ åç
§å
ã®3ã€ã®å®æ°ãåé€ããŠçŽæ¥ãã¹ãæååã§æå®ããããã«ããŸããã ãœãŒã¹äžã®ToDo, WIPã³ã¡ã³ãã®ããåæã¯å
šéšç¢ºèªããŠå¯Ÿå¿ãã ãã®ãããªã³ã¡ã³ãã®åšãã¯å€æ°å®çŸ©ãããŠä»£å
¥ãããŠãããã ãã©ãã®å€æ°ãã©ãã«ã䜿ãããŠããªããªã©æå³ã®ãªãåŠçããããå
容ã粟æ»ãäžèŠãªãã®ã¯ToDoãWIPãšããã³ã¡ã³ãå«ãåé€ã䜿ã£ãŠãããã®ã¯ã³ã¡ã³ããæžãçŽããŠä¿åããããã«ä¿®æ£ããŸããã ã¡ã³ããã³ã¹ç»é¢ã®HTTPã¬ã¹ãã³ã¹ã³ãŒããšHTTPããŒãžã§ã³ã®ä¿®æ£ ã ã¡ã³ããã³ã¹äžã«è¡šç€ºããããŒãžã®ã¬ã¹ãã³ã¹ããããä¿®æ£ãã話 ããšããŠæ¬¡åæçš¿ããŸãã FrameãControllerå
ã§åŒã³åºãããå
±é颿°ã®ç²åºŠã®çµ±äž é©åãªè¡šçŸãæµ®ãã°ãªãã®ã§ãããŸããªèšãæ¹ã«ã¯ãªã£ãŠããŸãã®ã§ãããåŠçã®äžã§åŒã°ãã颿°ã®ç²åºŠãç°ãªããåŠçã®æµããéåžžã«èªã¿ã¥ãããªã£ãŠããã®ã§ã¡ãœããã¢ãŠããã¹ããã®ã«ã€ããŠã¯åºããŠå¯èªæ§ããããªããããœãŒã¹ã®æ¹ä¿®ãè¡ããŸããã ãã®ä»ã现ããæ¹ä¿®ã¯ããã€ãè¡ã£ãã®ã§ãã倧ããªéšåã§ãããšä»¥äžãè¡ã£ãå
容ã§ãã ãŸãã¯ã§ããããšãã ä»åã¯èªåã®ã§ããéšåãšããŠãèªåãæéçºã«ãããã£ãŠããèªç€Ÿç¬èª ãã¬ãŒã ã¯ãŒã¯ ã® ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ããããªããŸããããä»åŸã¯ãµãŒãã¹åŽã管çç»é¢åŽãå«ããçŽãããã®ãçŽããŠããããšæããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯SHOPLISTã® ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ç¬¬äžæ©ãšããŠãäžèŠãœãŒã¹ãåé€ããŠè«çLOCã15%åæžãã話ãããŸãã è«çLOCã£ãŠãªã«ïŒ ã»LOC = Lines of Codeã®ããšã§ãå¹³ããèšãã°è¡æ°ã§ãã æåã® SIer ã£ãœãã§ããïŒç¬ïŒããã®æä»£ã ãšã³ãŒãè¡æ°ã§äŒè©±ããããšã¯ã»ãŒç¡ãã®ã§ãããäžèŠãœãŒã¹ã®åé€ã®è©±ãªã®ã§ä»åã¯ããããããææšãšããŠLOCã䜿ã£ãŠè©±ããããšæããŸãã ã¡ãªã¿ã«ã ã»ç©çLOC = åçŽãª ãœãŒã¹ã³ãŒã ã®è¡æ° ã»è«çLOC = ã³ã¡ã³ãã空çœè¡ãªã© æ©æ¢°ç ã«çãããœãŒã¹ä»¥å€ãçããè¡æ° ãšããå®çŸ©ã§ãã 詳现㯠Wikipeadia ã®LOC ã®èª¬æãèŠãŠãã ããããããŸã§ã ãœãŒã¹ã³ãŒã ã®èŠæš¡ãèŠãåäœãšããŠããä»å䜿ããªãã®ã§èª¬æã¯å²æããŸãã äžèŠãª ãœãŒã¹ã³ãŒã ãåé€ããç®ç ãŸã ãªãã¡ã¯ã¿ãªã³ã° ã®ç¬¬äžæ©ãšããŠäžèŠãª ãœãŒã¹ã³ãŒã ã®åé€ãè¡ããã«ã€ããŠã§ãã倧ããåããŠïŒã€ã®ç®çããããŸãã â ç矩ã§ã®ãããã³ãŒããæé€ããååŠçãšããŠãéé³ãšãªããããªãã¡ã€ã«ããŸã£ãã䜿ã£ãŠããªã ãœãŒã¹ã³ãŒã ã®äžéšãå
ã«æ¶ãããšã§ãä»åŸè¡ã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã®å¹çãäžããããšïŒå¯èªæ§ãäžããèŠå ãå°ãã§ãæé€ããŠããšïŒã â¡æªäœ¿çšã©ã€ãã©ãªã§ãã£ãŠãèªåããŒãã®å¯Ÿè±¡ãšãªã£ãŠãã ãã£ã¬ã¯ã ãªå
ã®ãã®ã¯ ãã¬ãŒã ã¯ãŒã¯ ãå®è¡æã«èªã¿èŸŒãã§ããŸããWebãµãŒãã®ã¡ã¢ãªãç¡é§ã«æ¶è²»ããŠããŸããããç¡é§ãªã¡ã¢ãªç¢ºä¿ããããŠWebãµãŒãã® ã¹ã«ãŒããã ãäžããããšã â¡ã¯ã©ã¡ãããšãããšããŸãã§ä»åã¯äž»ã«â ãã¡ã€ã³ã®ç®çã§ãã ä»åã®äœæ¥ãè¡ãèæ¯ãšããŠãçŸåšSHOPLISTã§äœ¿çšããŠããèªç€Ÿã§éçºããç¬èª ãã¬ãŒã ã¯ãŒã¯ ãSHOPLISTã®åã«CROOZæ ªåŒäŒç€Ÿã§éå¶ããŠããå
¬åŒã³ã³ãã³ããããã°ã SNS ã§ã䜿ãããŠãããã®ãæ©èœæ¡åŒµãããã®ã§ãåœæã®ã³ã³ãã³ãéå¶ã«å¿
èŠã§ã¯ãããã®ã®SHOPLISTã®ã·ã¹ãã éçšã§ã¯äžèŠãªã©ã€ãã©ãªãªã©ãå«ãã§èªåããŒãããŠããŸã£ãŠããããšããããŠSHOPLISTã® ãœãŒã¹ã³ãŒã ã«ãããŠããéå»ã«éå¶ããŠããå§åйãµã€ããããã§ã«çµäºããæ©èœã® ãœãŒã¹ã³ãŒã ã ãªããžã㪠ã®ãªãªãŒã¹å¯Ÿè±¡ãã©ã³ãå
ã«å
¥ã£ãŠããããšããããŸãã ä»åŸã® ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã§ã¯ã宿°ã倿°ã颿°ã¬ãã«ã§æªäœ¿çšãéè€ãåæããŠããããšã«ãªãããã®äœæ¥ã®éé³ãšãªãäžèŠãª ãœãŒã¹ã³ãŒã ã®æé€ã«ã€ããŠã¯äžçªåãã«å®æœãã¹ãå
容ãªã®ã§ä»åè¡ããŸããã ä»åã®äžèŠãœãŒã¹ã®åé€ã«ããããç¬èª ãã¬ãŒã ã¯ãŒã¯ ã® ãœãŒã¹ã³ãŒã éšåã¯CROOZå
¥ç€ŸåŸæºãã£ãŠããéšåã§ãããã¬ããžããã£ãããç§ãæ
åœããSHOPLISTã® ãœãŒã¹ã³ãŒã éšåã«ã€ããŠã¯ãéçºéšã®æ°åã« ãªãã¡ã¯ã¿ãªã³ã° æéã®äžã§å¯Ÿå¿ãäŸé ŒããŸããã 宿œçµæ 以äžã宿œååŸã®ãã¡ã€ã«æ°ãšè«çLOCã®æ¯èŒã§ãã ïŒïŒå®æœå 13,274ãã¡ã€ã«ã1,998,657è«çLOC ïŒïŒå®æœåŸãã¡ã€ã«æ° 12,475ãã¡ã€ã«ã1,699,309è«çLOC ïŒïŒååŸæ¯èŒ ã»ãã¡ã€ã«æ°ïŒ800ãã¡ã€ã«ãçŽ6%åã®åæž ã»è«çLOCãïŒ30äžè¡ãçŽ15%åã®åæž ãŸãšã 宿œããŠã¿ãŠã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ãéåžžã«è¡ãããããªã£ããšããã®ãææã§ãã äžæ¹ã§ãã¯ã©ã¹ãã¡ã€ã«ã®ã¡ãœããã®åçåŒã³åºãç®æãäžèŠãªãœãŒã¹ãšèª€ã£ãŠåé€ããŠããŸãããã®åŸã® ãããã° ã§æ°ã¥ããªã©ã æ©æ¢°ç ã«æªäœ¿çšãªåŠçãããããŠæ¶ããšããããšãé£ããã±ãŒã¹ãäœéšãããªããªãé£ãããšæããéšåããããŸãã ãã ã ãªãã¡ã¯ã¿ãªã³ã° ã§è¡ãå
容ã«ãããã®ã§ãããæªäœ¿çšã®å®æ°ã®æ€çŽ¢ãéè€ããã¯ã©ã¹ã®ææ¡ããéã«ãä»ãŸã§ã¯æç¢ºã«äœ¿ã£ãŠãªããœãŒã¹ã§ãã£ãŠãæ©æ¢°æœåºã§äžãã£ãŠããŠããŸãããéé³ã«ãªã£ãŠãããã®ããªããªã£ãã®ã§æ¬è³ªçãªåŠçã®èŠçŽãã«äœ¿ããæéãå¢ããã®ã¯å€§ããã£ãã§ãã ä»åŸã¯å
éšåŠçã®èŠçŽããç¹ã«DBåŒã³åºããŸããã«ç©æ¥µçã«æãå
¥ããŠããããšæããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã DB ã€ã³ã¹ã¿ã³ã¹ ã®OS/ MariaDB ã®ããŒãžã§ã³ã¢ããã®åæ®µäœæ¥ãšããŠ5åç®ã§ã¯ã DB容éã1.6TBâ1.1TBã«æžããã話 ããããŸããã ã¡ãªã¿ã«ã§ããDB容éåæžãšããæå³ã§ã¯ãŸã ãŸã åæžã®äœå°ã¯ãããã®ã®ãããã°ã©ã é¢ã®æ¹ä¿®ã倧å¹
ã«å
¥ããªããšãããªãããäžèšã®ããŒã¿åæžãçµãã£ã段éã§DB ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ãããå
è¡ãããŸããã ãŸãRDSã®å©çšã«ã€ããŠãããŸãã¯DB ã€ã³ã¹ã¿ã³ã¹ ãžã®ãªã¯ ãšã¹ ããæžããããšãå
ãªã®ã§ä»åã®ã¹ã³ãŒãã§ã¯èŠéãDB ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ããåŸãCahceã®å©çšãªã©ã«ããDBãžã®ãªã¯ ãšã¹ ããæžãããã®ã¡ã®å®æœãšããŸããã DBåãæ¿ãã®å€§æ ã®æµã 以äžã®æµãã§åãæ¿ããæ€èšããŸããã äºåäœæ¥ âµãªãã¬ã€ã¹çšã® ã€ã³ã¹ã¿ã³ã¹ (AmazonLinux2/MariaDB10.5.5)ãåãæ¿ãåŸå¿
èŠãªå°æ°åçšæããŠãã â¡æ¢å ã€ã³ã¹ã¿ã³ã¹ ã®ç¹å®æç¹ã®DBããã¯ã¢ãã(dump)ããªãã¬ã€ã¹çš ã€ã³ã¹ã¿ã³ã¹ ã«Restoreããã â¢æ¢å ã€ã³ã¹ã¿ã³ã¹ ã®Slaveã®ãã¡ããµãŒãã¹ããåç
§ãããŠããªã ã€ã³ã¹ã¿ã³ã¹ ã ã¬ããªã±ãŒã·ã§ã³ å
ãšããŠããªãã¬ã€ã¹çšã® ã€ã³ã¹ã¿ã³ã¹ ã®ãã¡MasterãšããŠäœ¿çšãã ã€ã³ã¹ã¿ã³ã¹ ã«å¯Ÿã ã¬ããªã±ãŒã·ã§ã³ ããã â£ãªãã¬ã€ã¹çšã® ã€ã³ã¹ã¿ã³ã¹ ã®ãã¡MasterãšããŠäœ¿çšãã ã€ã³ã¹ã¿ã³ã¹ ãããæ®ãã®ãªãã¬ã€ã¹çšã®DB ã€ã³ã¹ã¿ã³ã¹ ã«å¯Ÿã ã¬ããªã±ãŒã·ã§ã³ ãè¡ã æŽçãããšã æ¢åïŒSlaveïŒâãªãã¬ã€ã¹çš(Slaveå
ŒMaster)âãªãã¬ã€ã¹çš(Slave) ãšããç¶æ³ãäºåã«èšå®ããŠããã ã¬ããªã±ãŒã·ã§ã³ ã远ãä»ãã®ãåŸ
〠ã¡ã³ããã³ã¹æã®äœæ¥ â€æ¢å ã€ã³ã¹ã¿ã³ã¹ ã®Slaveã®ãã¡ããµãŒãã¹ããåç
§ãããŠããªã ã€ã³ã¹ã¿ã³ã¹ ã ã¬ããªã±ãŒã·ã§ã³ å
ãšããŠããªãã¬ã€ã¹çšã® ã€ã³ã¹ã¿ã³ã¹ ã®ãã¡MasterãšããŠäœ¿çšãã ã€ã³ã¹ã¿ã³ã¹ ã«å¯ŸããŠèšå®ãããŠãã ã¬ããªã±ãŒã·ã§ã³ ãæ¢ããã â¥æ¢åWebãããã ã€ã³ã¹ã¿ã³ã¹ ã®HAProxyã«èšå®ãããŠããDBã®åãå
ãæ¢åDB ã€ã³ã¹ã¿ã³ã¹ ã®Master/Slaveããããªãã¬ã€ã¹çšã® ã€ã³ã¹ã¿ã³ã¹ ã®Master/Slaveã«åãæ¿ããã æåã«åé¡ããªãããšã確èªåŸã¡ã³ããã³ã¹ãçµäºããŠåãæ¿ãå®äºã é²ããäžã§çºçããåé¡ å®éã«é²ããŠããäžã§ããã€ãæ³å®ããŠããªãåé¡ãçºçããŸããã DBã®èšå®ãã©ã¡ãŒã¿ããæ¢å ã€ã³ã¹ã¿ã³ã¹ ã®Slaveéã§å€ãç°ãªã ããã¯æ³å®å€ã§ãããåœç€Ÿã ãšSlaveãšãªã£ãŠããDBã«å€§ããïŒã€ããããµãŒãã¹ããåç
§ãããŠããSlaveãšã管çç»é¢ãããããµãŒãããåç
§ãããŠããSlaveãµãŒã(瀟å
ã§ã¯AdminDBãšåŒãã§ãããã®)ã§èšå®ãã©ã¡ãŒã¿ãç°ãªã£ãŠããŸããã 確ãã«çºè¡ãããQueryã®ç¹æ§ã¯ãµãŒãã¹ã§äœ¿ãSlaveãšç®¡çç»é¢ãããããµãŒãããçºè¡ããããã®ãšã¯å
šãç°ãªãã®ã§èšå®ãã©ã¡ãŒã¿ãç°ãªãããšèªäœã¯é©åãªã®ã§ããããããåãã圢ã§ãã¬ããžåãããŠããªãã£ããããã®ãããªåé¡ãçºçããã®ã ãšæããŸãã DB ã€ã³ã¹ã¿ã³ã¹ åãæ¿ãåŸã«çºçããåé¡ 2020幎10æã®2é±ç®ã«ç¬¬3åç®ãšãªãã¡ã³ããã³ã¹ãè¡ããDB ã€ã³ã¹ã¿ã³ã¹ ãåãæ¿ããŸãããåãæ¿ãèªäœã¯éåžžã«ããŸããã£ãã®ã§ããããã®åŸããã€ãåé¡ãçºçããŠããŠããŸããã æ§DB ã€ã³ã¹ã¿ã³ã¹ ãããã°ã©ã ãåç
§ããŠããç®æããã£ãã Web ã€ã³ã¹ã¿ã³ã¹ ããDB ã€ã³ã¹ã¿ã³ã¹ ãžã®æ¥ç¶çµè·¯ã¯ Web ã€ã³ã¹ã¿ã³ã¹ ( PHP )âWeb ã€ã³ã¹ã¿ã³ã¹ (HAProxy)âDB ã€ã³ã¹ã¿ã³ã¹ ãšããæ§æãšãªã£ãŠããŠWeb ã€ã³ã¹ã¿ã³ã¹ ( PHP )äžã ãšMasterDBãžã®æ¥ç¶ã®å Žå㯠localhost :xxxxxãSlaveDBãžã®æ¥ç¶ã®å Žå㯠localhost :yyyyy(çããŠããè€æ°ã®SlaveDB ã€ã³ã¹ã¿ã³ã¹ ã«å¯Ÿã㊠ã©ãŠã³ãããã³ )ãšããç¶æ³ã«ãªã£ãŠããŠãçŽæ¥DB ã€ã³ã¹ã¿ã³ã¹ ã® IPã¢ãã¬ã¹ :3306ã§æ¥ç¶ããæ³å®ã¯ãªãã£ãããäžéšããããµãŒãå
ã® PHP ããã°ã©ã ãçŽæ¥DB ã€ã³ã¹ã¿ã³ã¹ ã® IPã¢ãã¬ã¹ ãæå®ããŠç§»è¡åã®æ§DBã®Slave ã€ã³ã¹ã¿ã³ã¹ ãåç
§ããŠãããããã ãããåŠç å
ã§DBã®æ¥ç¶æååãäžæžããããŠããã å®ã¯ãã®åé¡ãçºèŠããã®ã¯ãç§»è¡åŸïŒé±é以äžçµéããã¿ã€ãã³ã°ã§ãç§»è¡åã®æ§DB ã€ã³ã¹ã¿ã³ã¹ ã¯ãµãŒãã¹äžã§åé¡ãçºçããéã«å³æåãæ»ããããã« MariaDB ãèµ·åããŠããç¶æ³ã ã£ãããããããšããŠã¯åŠçãæ£åžžã«åäœããŠãããã®ã®æ£ããåäœããŠããªããšããç¶æ³ã«ãªã£ãŠããŠãåé¡ãçºèŠããã®ã¯æ§DB ã€ã³ã¹ã¿ã³ã¹ ã忢ããéã«ãããã倱æããããã§ããã ãªã®ã§ä»åŸã·ã¹ãã ãªãã¬ã€ã¹ãªã©ã§DBç§»è¡äœæ¥ãèšç»ãããŠããæ¹ã¯æéã§ãç§»è¡åã«çŸç°å¢ã®DB ã€ã³ã¹ã¿ã³ã¹ ã® IPã¢ãã¬ã¹ ããªã¹ãåããœãŒã¹äž grep ãããã»ããè¯ãã§ããèŠã€ãããªããã°åãè¶ãèŠåŽãèŠã€ãããã©ãããŒã§ãã ãããã®å®è¡é床ãæå€§ã§2åé
ããªããã®ããã£ãã ããã¯çç±ãããã«åãããDBã®Slave ã€ã³ã¹ã¿ã³ã¹ ãMulti-AZé
眮ã«ãªã£ãããããã ã€ã³ã¹ã¿ã³ã¹ ã眮ãããŠããZoneãšåç
§ããŠããDB ã€ã³ã¹ã¿ã³ã¹ ãç°ãªãå Žåã«ä»ãŸã§ãããã¬ã€ãã³ã·ãäžããã±ãŒã¹ãããããã§ããã 察çãšããŠã¯ããã ã€ã³ã¹ã¿ã³ã¹ ãåç
§ããDBã«ã€ããŠã¯HAProxyäžã§ãŸãŒã³æ¯ã«æ¥ç¶å®çŸ©ãåãããããããã¯åãZoneå
ã®DBSlave ã€ã³ã¹ã¿ã³ã¹ ãåç
§ããããã«å€æŽããŸããã ãããã®åŠçäžã§ã¯ãšãªåŠçãè©°ãŸãåé¡ èª¿ã¹ããšãã ãããåŠç å
ã§ CREATE TEMPORARY TABLEãå®è¡ããŠãã±ãŒã¹ã§GAP LockãçºçããŠãã§ãåŒã³åºãæ¹ãCREATE TEMPORARY TABLE XXX(SELECT âŠ);ã®åœ¢ã§ããããã§æç®ã調ã¹ããšãããŸããããããªãå®è£
ã£ãœãããã®ããããé¢ä¿ããŠããã®ã§ã¯ãªããæã£ãŠããŸãã ãããããã°ã©ã ãçºè¡ããŠãã SQL ãCREATEãšINSERT INTO SELECTã«æžãçŽããæ¹ããããšããããšã¯æç®ããããã£ããã®ã®ãããåå ãšæå®ã§ãã远å ã§èª¿æ»ãããšããã MariaDB ã®ãã¬ããžããŒã¹ã«ä»¥äžã®èšèŒããããŸããã mariadb.com  èªç€Ÿã®èšå®ãå«ããèŠç¹ãèŠçŽãããš ã» MariaDb ã®ããã©ã«ãã® ãã©ã³ã¶ã¯ã·ã§ã³ ã®åé¢ã¬ãã«ã¯ãREPEATABLE READãã§ããã ã»MariaDB10.4ãŸã§ã¯ã innodb _locks_unsafe_for_binlogããšãã倿°ãããããã®å€æ°ãONã®å ŽåãGAPããã¯ã®çºçãé²ããã ã»ç§»è¡åã®DB ã€ã³ã¹ã¿ã³ã¹ äžã® MariaDB ã®ããŒãžã§ã³ã¯10.0ã§ã innodb _locks_unsafe_for_binlogãã®èšå®ã¯ONãªã®ã§GAPããã¯ã¯çºçããŠããªãã ã»MariaDB10.4以éã§ã¯ã innodb _locks_unsafe_for_binlogããšãã倿°ããªããªã£ãŠããŸã£ãŠãããããGAPããã¯ã®åé¿ã«ã¯åé¢ã¬ãã«ããREAD COMMITTEDãã«ããå¿
èŠãããã ãã®ããšã§ããã å®éã«æ€èšŒç°å¢ã§ ãã©ã³ã¶ã¯ã·ã§ã³ ã®åé¢ã¬ãã«ãäžããŠåäœç¢ºèªãããšããGAPããã¯ã®çºçã¯ãªãããã€åŠççã«ãåé¢ã¬ãã«ãäžããŠãåé¡ããªãããšã®ç¢ºèªãåãããããããããµãŒããåç
§ããDB ã€ã³ã¹ã¿ã³ã¹ ã® MariaDB ã«ã€ããŠã¯ ãã©ã³ã¶ã¯ã·ã§ã³ ã®åé¢ã¬ãã«ããREAD COMMITTEDãã«å€æŽããŠãã®åé¡ã«ã€ããŠã¯åé¿ããŸããã ããããåç
§ãã MariaDB ãã¡ã¢ãªäžè¶³ã§åèµ·åããåé¡ ãã㯠MariaDB ããŒãžã§ã³å·®ç°ã®åœ±é¿ãEC2 ã€ã³ã¹ã¿ã³ã¹ ã第4äžä»£ãã第5äžä»£ã«ãããããšã«ãã£ãŠDBãåãä»ããããã³ãã¯ã·ã§ã³éãå¢ãããªã©ãåŠçæ§èœãå€ãã£ãããšã圱é¿ããŠãããšèããããã innodb _buffer_pool_sizeããèšå®å€ããäžãããã®åŸçµé芳å¯ãããŠããŸãã ããããåç
§ãã MariaDB ã®æ¥ç¶ã ã¿ã€ã ã¢ãŠã ããåŠçãããåé¡ ç§»è¡åã®æ§DBã確èªãããšãããèšå®ãã¡ã€ã«äžã® ã¿ã€ã ã¢ãŠã ã®ãã©ã¡ãŒã¿å€ãšSHOW VARIABLES ã³ãã³ãã§çŽæ¥ååŸãã ã¿ã€ã ã¢ãŠã ã®å€ãç°ãªã£ãŠãããéå»ã«èª°ããçŽæ¥æžãæããŠãã®ãŸãŸã«ãªã£ãŠãããããèšå®ãã¡ã€ã«å€ã« ã¿ã€ã ã¢ãŠã ã®æéãæŽæ°ãããŠãããããã®èšå®ãã¡ã€ã«ã«åºã¥ããŠæ°ç°å¢ã® MariaDB ã®ãã©ã¡ãŒã¿ãèšå®ãããŠããããšãåå ã§ããã ãŸããããã¯ç·æ¥å¯Ÿå¿ã ã£ããç§ãæ®éã«ãããšæããŸããã倿Žãèšå®ãã¡ã€ã«ã«æžãæ»ããã©ããã®åèµ·åã®ã¿ã€ãã³ã°ã§èšå®ãã¡ã€ã«ã®å€ãæ£ãšããç¶æ
ã«æ»ãããšãããªããšãã®åé¡ãçºçãç¶ããã®ã§æ§æç®¡çäžãŸãããªãšæããŸããããªã®ã§ä»åŸã¯å®æã¡ã³ãã®ã¿ã€ãã³ã°ãªã©ã宿çã«ä»åŸèšå®ãã¡ã€ã«ãšã³ãã³ãã§ååŸããå€ã®æ¯èŒãè¡ã£ãŠãéã£ããèšå®ãã¡ã€ã«ãæŽæ°ããŠDBåèµ·åããéçšãšããŸãã åãæ¥ããããã ã€ã³ã¹ã¿ã³ã¹ ã®åç
§ãã MariaDB ã® ã¿ã€ã ã¢ãŠã å€ã倿Žããã®åé¡ã¯åé¿ããŠããŸãã ãŸãšã ä»åDB ã€ã³ã¹ã¿ã³ã¹ ã®OS/ MariaDB èªäœã®ããŒãžã§ã³ã¢ããäœæ¥ã«ã€ããŠã¯ãããŸã§ãã©ãã«ã¯ãªãã£ããã®ã®ãDBãåŒã³åºãããã°ã©ã åŽã®åé¡ïŒDBæ¥ç¶æ
å ±ã®äžæžããéæšå¥šãªã€ã³ãµãŒãåŠçïŒããäž»ã«ãããããçºè¡ããã SQL ã«èµ·å ããDBã®æåã«é¢ããåãæ¿ãåŸã®åé¡ãå€ããç§»è¡ãè¡ãéã«ãããããå®è¡ãããã¯ãšãªã®ããã©ãŒãã³ã¹ã«ã€ããŠãäºåã«ããå°ã調æ»ããå¿
èŠããããšããã®ãåçç¹ã§ãã ããŒãžã§ã³ã¢ãã圱é¿ã§ ã€ã³ã¹ã¿ã³ã¹ ãDBèªäœã®ããã©ãŒãã³ã¹å€ããããšã¯ããçšåºŠãããããªããã®ã§ãä»åã®ããã«ããã«æ©ããã¥ãŒãã³ã°ãè¡ãæ£åžžåãããé²ãæ¹ã§ééã£ãŠã¯ããªããšèããŠããŸãã æåŸã«ãä»åã®DB ã€ã³ã¹ã¿ã³ã¹ ã®OS/ MariaDB ã®ããŒãžã§ã³ã¢ããã«éããäºåã®ããŒã¿æ¶èŸŒäœæ¥ããæ° ã€ã³ã¹ã¿ã³ã¹ åæ¿ã®ãã©ãã«ã·ã¥ãŒããŸã§ã2020幎ã®9æã»10æã®2ã«æéãçŽ4.5æéããæéã®åããªãæ·±å€ã¡ã³ããã³ã¹Ã3åã§è¡ããããŒãžã§ã³ã¢ããåŸã«æ§ã
ãªåé¡ãåºãŸãããã倧ããªãŠãŒã¶åœ±é¿ãªãçæéã§åæã§ããã®ã¯çµæ§ãããããšã ãšæããŸãã äžå¿äºåæ¥ãšããŠ10æ4é±ã«ããäžæ¥ã¡ã³ãæ¥çšãçšæããŠããã®ã§ãããäºåæ¥ã䜿ãããšãªããã€10æ30æ¥ããéå§ã®MEGA SALEã®ã¹ã±ãžã¥ãŒã«ã«ã圱é¿ãåºããç¡äºã«å®äºã§ããŸããã ä»åããã ãã®ä»äºããã®çæéã§å®çŸã§ããã®ã¯ãåœç€Ÿã®æè¡çµ±æ¬éšãSHOPLISTã®åéçºéšã®ãšã³ãžãã¢ã®ã¹ãã«ã®é«ããç¹ã«åé¡ã«ã¶ã¡åœãã£ãéã®ãã©ãã«ã·ã¥ãŒãåãã£ãŠããã§æ¬åœã«å©ãããŸããã æ¬¡ã®ã¢ã¯ã·ã§ã³ãšããŠã¯Web/ããããµãŒãã®OS/ ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ããäœæ¥ã§ãåŒãç¶ã宿œããŠãããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯ã SHOPLISTã®è±ã¬ã¬ã·âã·ã¹ãã ãã®5åç®ã è±ã¬ã¬ã·ãŒã·ã¹ãã â€ïŒDB容éã1.6TBâ1.1TBã«æžãããè©±ïŒ ãã§è©±ãã InnoDB ã®ããŒãã«å§çž®ã®æ€èšŒã«ã€ããŠã®è©±ã§ãã æ€èšŒãæãç«ã£ããã£ãã SHOPLISTã®ã€ã³ãã©çãªåé¡ã®ïŒã€ã§ãæ¬çªã®ããŒã¿ããŒã¹å®¹éã1.6TBããåé¡ã®è§£æ±ºæ¡ãèããŠããŠããµãŒãã¹äžåç
§ããªããã©ãã ãããšèšã£ãŠ SQL ã§ããŒã¿æœåºã§ããDBã«ãã£ãšãããããŒã¿ããããšãã話ãåãããŸããã ãããæãããã£ãŠã¿ããã£ããã¿ã§ããŒãã«å§çž®ãã£ãŠã¿ãããšæãç«ã£ãã®ããã£ããã§ãã å®éã«ã¯ãã®ããŒãã«å§çž®ã®ã»ãã«ãã¹ãã¬ãŒãžã¿ã€ãã®å€æŽã§ãããšã ã€ã³ã¹ã¿ã³ã¹ ãµã€ãºã«ã€ããŠã倿Žããã®ã§ãããä»åã®æ€èšŒãšããŠã¯ããŒãã«å§çž®ãé²ããŸããã ããããã£ãããªãºãŒãžå§çž®ã®ããã¿ã®çè§£ æãèªã¿ãªã®ã§æ£ç¢ºã«çè§£ããŠããããã§ã¯ãªãã®ã§ãããã»ãã® RDBMS åæ§ã«ããŒã¿æ ŒçŽæã«å§çž®ããŒãžãäœæããŠã¹ãã¬ãŒãžä¿åããä»çµã¿ã®ããã§ãã ãªã®ã§æåŸ
ããæåãšããŠã¯ããŒã¿ãµã€ãºã¯æžããæžã蟌ã¿ãé
ããªãã¯ãã§ãå®éã©ã®ãããã®å¹æãããããææ¡ãããããåœç€Ÿã®ã¡ã³ããŒã«ååããŠãããå®éã®ããŒã¿ã§æ€èšŒãè¡ããŸããã æ€èšŒã®æŠèŠ æ€èšŒæ¹æ³ãšããŠã¯å®éã®ããŒãã«ãdumpããåãæ§é ã®ããŒãã«ãCREATE ããéã« DDL ã«ãROW_FORMAT=Compressed KEY_BLOCK_SIZE=8ãã远å ããå¥ããŒãã«dumpããããŒã¿ãRestoreããŠãéå§çž®ããŒãã«ãšå§çž®ããŒãã«ãäœãããŒãã«ã®å®¹éãšRestoreéåºŠãæ¯èŒããŸããã åæãšããŠã¯ DBMS ã¯MariaDB10.2ã§ãã æ€èšŒçµæâµãå§çž®çæ¯èŒ çµè«ïŒçŽ5å²ã»ã©ã®å§çž®çãšãªãã â»ããŒã¿ã«ãã£ãŠå·®ãããããTextåãå€ãããŒãã«ã¯å¹æãããããã«èŠåãããã å§çž®ç¡ã [root@ecSubDb01 compression_test]# ll -htr | grep "product_m.ibd" -rw-rw---- 1 mysql mysql 11G Jul 15 15:32 product_m.ibd å§çž®ãã [root@ecSubDb01 compression_test]# ll -htr | grep "product_m.ibd" -rw-rw---- 1 mysql mysql 5.1G Jul 15 15:40 product_m_compression.ibd æ€èšŒçµæâ¡ãInserté床ïŒRestoreéåºŠã§æ€èšŒïŒ çµè«ïŒçŽïŒåé
ããªãã å§çž®ç¡ã [root@ecSubDb01 mysql]# time mysql compression_test < session_t_local.dump real 28m23.795s user 1m8.439s sys 0m4.598s å§çž®ãã [root@ecSubDb01 mysql]# time mysql compression_test < session_t_local.dump real 60m42.655s user 1m7.089s sys 0m4.394s çµè« æåŸ
éããšããã°æåŸ
éãããã ããã°æããŠ1/10ã«å§çž®ãããŸãïŒãšãã§ã¯ãªãã£ãã§ãã KEY_BLOCK_SIZEãå€ããŠããã°ãªã©ãã£ãšæ€èšŒããã°ããããæ°ããçºèŠããã£ããããããªãã®ã§ãããæåŸ
ããéãã®çµæã ã£ãããããã§æ€èšŒãšããŠã¯çµäºãšããŸããã â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ã SHOPLISTã®è±ã¬ã¬ã·ãŒã·ã¹ãã ãã®èšäºã5åç®ãšãªããŸãããã ä»åã¯DB ã€ã³ã¹ã¿ã³ã¹ ã®ãªãã¬ã€ã¹ã®éå£ãšãªããããªDBã®ããŒãã«å®¹éãæžãã話ã§ãã ä»ãŸã§ã¡ã³ããã³ã¹ã宿çã«å®æœã§ããªãã£ãåŒå®³ ã SHOPLIST.com ã®ã·ã¹ãã ãã¢ãã³ãªã¢ãŒããã¯ãã£ã«å€ããããšãããäºæ³ä»¥äžã«éãæ·±ãã£ã話 ãã§ãè§Šããéããä»ãŸã§ã»ãšãã©ã¡ã³ããã³ã¹ãè¡ãããŠããªãã£ããããã¡ã³ããã³ã¹ãè¡ããªããšãµãŒãã¹ã«åœ±é¿ãåºããããªäœæ¥ãæªçæãšãªã£ãŠããŸããã ãã®çµæãDBã®å®¹éãæ¥ã
èšåŒµãã1.6TBãããŒãã«æ°ãå
š ã¹ããŒã ãåç®ãããš1,800ãè¶
ããç¶æ³ãšãªã£ãŠããŸã£ãŠããŸããã ã»DB容éâBackUp ïŒRestoreãä»åã®ãããªãªãã¬ã€ã¹æã®äœæ¥æé ã»ããŒãã«ä»¶æ°âå¯èªæ§ ã«ãããã圱é¿ãåºãå¯èœæ§ãã®ãªã®ã§ã仿§äžèš±å®¹ãããç¯å²ã§å°ãªããããããšã¯ç¡ãããŸãã¯DB容éãæžããç®æ®µãç«ãŠãŸããã 容éåæžå¯Ÿè±¡ã®ããŒãã«ãšå®¹éã®æŽãåºã 容éåæžã«éãããŸã以äžã®ïŒã€ã®èŠç¹ã§ããŒãã«ãæŽãåºããŸããã âµ æšå¹ŽåºŠ(2019-04-01)以éã«ããŒã¿æŽæ°ãè¡ãããŠããªãããŒãã« ãâèŠããã«ããæ©èœçµäºæã®æ¶ãå¿ãïŒãããªããïŒããšããããŒãã«ã â¡ è«çåé€ãã©ã°ãç«ã£ãŠããããŒã¿ãå
šã¬ã³ãŒãã®50%以äžã®ããŒãã« ãâããããªããªãïŒãã®ããŒã¿ããããããããããªãããŒãã«ã ⢠ãšã³ãžãã¢ãžã® ãã¢ãª ã³ã°ã§ããŒã¿ã䜿ã£ãŠããªãå¯èœæ§ã®ããããŒãã« ãâããŒã¿æŽæ°ã¯ãããŠããã©ãããªããããããªãããŒãã«ã ãã®ïŒã€ã®èŠç¹ã§åããŒãã«ã®ããŒã¿ã調æ»ããæçµçã«15ããŒãã«ãããŒã¿å®¹éã«ããŠåèšã§515GBïŒå
ã®DB容éã®32%åïŒã®ããŒã¿ã«ã€ããŠæ¬çªã®DB ã€ã³ã¹ã¿ã³ã¹ ããåé€å¯èœã§ããããšãåãããŸããã æ¬çªDB ã€ã³ã¹ã¿ã³ã¹ ããã®ããŒã¿éé¿ãèšç»ãã æ¬çªDB ã€ã³ã¹ã¿ã³ã¹ ããã®ããŒã¿éé¿ã«ã€ããŠã¯ä»¥äžïŒæ¹éãšããŸããã âµãµãŒãã¹äžãæ¥åäžãäžèŠãªãã®ã¯Truncateãããã¯Deleteã â¡ãµãŒãã¹äžã§äžèŠã ãã©èª¿æ»ãåæã§å¿
èŠãªãã®ã¯SubDBã«éé¿ã â¢åé€ãã©ã°ã50%以äžã®ãã®ã¯ãããŒãã«åãå¥åã«å€æŽããæ°èŠäœæããŒãã«ã«åé€ãã©ã°ãç«ã£ãŠããªãããŒã¿ã®ã¿ã€ã³ãµãŒããå
ããŒãã«ã¯âµãŸãã¯â¡ã§å¯ŸåŠã SubDBãšããã®ã¯ä»åã®ã€ã³ãã©æ§æå€æŽã®ã¿ã€ãã³ã°ã§çšæããDB ã€ã³ã¹ã¿ã³ã¹ ã§ãããŒã¿ä¿ç®¡ã³ã¹ããå®ãããããã«æºåããéé¿å°çšã®DB ã€ã³ã¹ã¿ã³ã¹ ã§ãããµãŒãã¹ã«æå
¥ããŠããDB ã€ã³ã¹ã¿ã³ã¹ ãšã®éãã«ã€ããŠã¯ã ã€ã³ã¹ã¿ã³ã¹ ãµã€ãºãå°ããå²ãåœãŠãããŠããã·ã¹ãã ãªãœãŒã¹ãæ¬çªDB ã€ã³ã¹ã¿ã³ã¹ ã®åå以äžã§ããããšãæ¬çªDB ã€ã³ã¹ã¿ã³ã¹ ã®Slaveå°æ°ã6ïœ10å°(ã»ãŒã«ç¶æ³ã«ããå€å)ãªã®ã«å¯ŸãSlave1å°ã®åèš2å°æ§æã§ããããšãšã InnoDB ããŒãã«ã®å§çž®èšå®ãããã©ã«ãã§ããŠããããšã§ãã InnoDB ã®ããŒãã«å§çž®æ©èœã«ã€ããŠã®æ€èšŒçµæã«ã€ããŠã¯ã MariaDB ã®ããŒãã«å§çž®ã®æ€èšŒãæ€èšŒãã話ãã«æçš¿ããŠããã®ã§èå³ã®ããæ¹ã¯ç¢ºèªããŠã¿ãŠãã ããã ä»åããŒã¿åé€ãè¡ã15ããŒãã«ã«ã€ããŠãBackupç°å¢ã§äºåã«ããŒã¿éé¿ãè¡ãéãšåããªãã¬ãŒã·ã§ã³ãäºåã«å®æœããå®éã«ãããæéãç®åºãããšããããŒã¿ã«ã§5æéãäœè£ãèŠãŠ6æéã»ã©ã®äœæ¥æéãå¿
èŠã§ããããšãåãããã¡ã³ãã§äœæ¥å¯èœãªæéã4.5æéããåããªãç¶æ³ã ã£ããããå®éã«ã¯ããŒã¿éé¿ã¯2åã®ã¡ã³ããã³ã¹ãã«åããŠå®æœããããšã«ããŸããã 第1åç®ã®èšç»ã¡ã³ããã³ã¹ãè¡ã 第1åç®ã®èšç»ã¡ã³ããã³ã¹ã¯2020幎ã®9æ2é±ã«å®æœããŸããããã ãã®éã¯ãã¹ãŠã®ã¡ã³ããã³ã¹æéãããŒã¿éé¿ä»¥å€ã«ããEC2 ã€ã³ã¹ã¿ã³ã¹ ãMulti-AZåããããã® VPC äžãããã¯ãŒã¯æ§æã®å€æŽããã®ä»ã¡ã³ãäžã§ãªããšå®æœã§ããªãããŒãã«æ§æã®å€æŽãã€ã³ããã¯ã¹ä»äžãªã©ã®äœæ¥ããããã¡ã³ããã³ã¹æéãã«ãã«ãä»åã®ããŒã¿éé¿äœæ¥ã«äœ¿ããªãç¶æ³ã ã£ãã®ã§ã15ããŒãã«ã®ãã¡ã®4ããŒãã«ã容éã«ããŠçŽ300GBã«ã€ããŠããŒã¿éé¿ãè¡ãäœæ¥èšç»ãç«ãŠãåœæ¥ã®ã¡ã³ããã³ã¹ã«èšã¿ãŸããã ã¡ã³ãéå§æçŽåŸãã¡ã³ã衚瀺ã®äžå
·å調æ»ã§äœæ¥æéã30åãªããªã ããã§ããïœãšæããããããªãã®ã§ãããã¡ã³ããã³ã¹ã«å
¥ã£ãçŽåŸã«ã¡ã³ããã³ã¹ç»é¢ã®è¡šç€ºïŒã¡ã³ããã³ã¹æãæ¥æïŒã«èª€ããããããšãçºèŠããŠãåå ç®æã®ç¹å®ã§30åã»ã©æå³ããªãäœæ¥ãçºçããŠããŸããŸããã宿çã«ã¡ã³ããã³ã¹ãè¡ã£ãŠããªããšãã¡ã³ããã³ã¹æã®ãã¬ããžãé³è
åããŠããŸããã®ãããªåé¡ãçºçããŠããŸãããã§ãã 調ã¹ãŠåãã£ãããšãªã®ã§ãããã¡ã³ããã³ã¹ã®æ¡å
ã®ããã¹ããªã®ã§ããã©ãããè€æ°ç®æã§èšå®ããŠããããããä»åã¯çæ¹ã®ããã¹ãèšå®ãæŒãããã衚瀺誀ããçºçããŠããããã§ãã ããŒã¿éé¿äœæ¥ãéå§ãã ãã®åŸDBäœæ¥ãã§ããããã«ãªã£ããããã»ãã®äœæ¥ãšäžŠè¡ããªããdumpã§ããã¯ã¢ãããååŸããŠãã®åŸããŒã¿éé¿ãè¡ã£ãŠãã£ãã®ã§ããããªããããŒãã«ã®dumpã®å®è¡é床ãé
ããçµå±4ããŒãã«äž3ããŒãã«ããµã€ãºã«ããŠçŽ265GBãŸã§ããå®è¡ã§ãããæ®ã1ããŒãã«ã«ã€ããŠã¯2床ç®ã®èšç»ã¡ã³ããã³ã¹ã«åããŸããã 第2åç®ã®èšç»ã¡ã³ããã³ã¹ãè¡ã 第2åç®ã®èšç»ã¡ã³ããã³ã¹ã¯ç¬¬1åç®ã®èšç»ã¡ã³ããã³ã¹ã®2é±éåŸã«å®æœããŸããã ãã®ã¡ã³ããã³ã¹ã®ãŽãŒã«ã¯ååããŒã¿éé¿ã®ã§ããªãã£ã1ããŒãã«ãå«ã12ããŒãã«ãããŒã¿ãµã€ãºã«ããŠæ®ãã®çŽ265GBãæ¬çªDB ã€ã³ã¹ã¿ã³ã¹ ããéé¿ããããšã§ãã ååã®åçç¹ãšããŠãæ¬çª ã€ã³ã¹ã¿ã³ã¹ ã®dumpååŸã«ãããæéãäºåæ€èšŒãå
ã«ç®åºããæéãè¶
ããŠããŸã£ãŠãããããä»åã¯äœæ¥æéã®åæžã®ããã«è€æ°ããŒãã«ã䞊è¡ããŠå®æœããŸããã ã¡ã³ãéå§æçŽåŸãã¡ã³ã衚瀺㮠ã¹ããŒã¿ã¹ã³ãŒã ã§ãã©ãã å®ã¯ä»åã®ã¡ã³ããã³ã¹ã«åãããŠã¡ã³ããã³ã¹ã¢ããŠã³ã¹æã«ãã©ãŠã¶ã«è¿ãHTTPã® ã¹ããŒã¿ã¹ã³ãŒã ã®å€æŽãããä¿®æ£ãå
¥ããã®ã§ãããããæ£åžžã«åäœããŠããããã©ãŠã¶è¡šç€ºãšããŠã¯æ£åžžãªã®ã§ãããè¿ããŠãã ã¹ããŒã¿ã¹ã³ãŒã ãç°ãªããšããåé¡ãèµ·ãããåå 調æ»ã®ããDBäœæ¥éå§ãå°ãé
ããŸããã ããŒã¿éé¿äœæ¥ãç¡äºå®äºãã ãã®åŸãè€æ°ããŒãã«äžŠè¡ããŠdumpãšããŒã¿éé¿ãè¡ãäœãšãä»åè¡ãããã£ãåèš15ããŒãã«ãããŒã¿éã«ããŠçŽ515GBã®ããŒã¿éé¿ãå®äºããŸããã äœãã第1åç®ã®ã¡ã³ããã³ã¹æã«æ¢åããŒãã«ã«å¯Ÿããã€ã³ããã¯ã¹ã®è¿œå äœæ¥ããã£ãããDB容éã¯çŽ80GBå¢ããŠããŸãæçµçã«ã¯çŽ1.2TBã®DB容éãšãªããŸããã ãŸãšã ä»åã®æèšãšããŠã¯ âµèšç»ã¡ã³ããã³ã¹ãæ¬åœã«æ©äŒæå€±ã§çµ¶å¯Ÿã«ã¡ã³ããã³ã¹ãå
¥ããããªãããããã¯åæ°ãã§ããéãæå°ã«ãããã®ã§ããã°ãäœã§ãããã§ãDBã«çªã£èŸŒãã¹ããããªãã ãªããªãããŒã¿åé€ã®éã«ã¹ã¬ãŒãé
å»¶ãèµ·ããã®ã§ãµãŒãã¹çšŒåäžã«æ¶èŸŒãã§ããªããããæ¥åã«ãã䜿çšããªãã®ã§ããã°ããã¹ãã§åããŠãããã§å¥DBã«çªã£èŸŒããšãããæ¹ã¯ããããã â¡è«çåé€ãåæãšããèšèšã極åããªãã ãªããªãdeleteã§ã¯idbãã¡ã€ã«ã®ãµã€ãºãæžããããããªãããã â¢ãšã¯ãã£ãŠãèšç»ã¡ã³ããã³ã¹ãè¡ããªãã¯è«å€ã ç®æšãšããŠç®æãã¯ãããã©ãã¡ã³ãäžã§ãªããšåºæ¥ãªãããšã¯äºå®ãšããŠããããå
éããç¶ãããšä»åã¿ãããªããšã«ãªãããããŒã¿ä¿ç®¡ã³ã¹ããçºçããã 以äžã§ãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€Ÿã®éŽæšã§ãã ã SHOPLISTã®è±ã¬ã¬ã·ãŒã·ã¹ãã ãã®èšäºã4åç®ãšãªããŸããã ç§ã®æå±ããæè¡çµ±æ¬éšã®æ
åœæ¥åã®äžã€ã«åéçºéšã«æå±ãããšã³ãžãã¢ã«å¯Ÿããæè¡æ¯æŽãããããã®äžã§ãããŒã«ã«éçºç°å¢ã¯æããåãåãããå€ãæ©ã¿ã®çš®ã§ããã ä»åã¯ãã€ã³ãã©æ§ç¯ã®ã³ãŒãåã®æ©æµãšããŠãããŒã«ã«éçºç°å¢ã®æ§ç¯ãã§ãããšãã話ãå
±æããŠããããšæããŸãã åœç€Ÿã®ããŒã«ã«éçºç°å¢ã®å€é· ïœ2011幎é ãç¡ãã æŒ¢ãããéçºç°å¢ãå Žåã«ãã£ãŠã¯çŽæ¥æ¬çªç°å¢ãçŽæ¥ä¿®æ£ããŠããæä»£ã§ããã ïœ2014幎é ãXAMPPå©çšæä»£ ã¯ã©ã€ã¢ã³ãPCã®OSäžã«XAMPPãå
¥ããŠéçºã«å¿
èŠãª ããã«ãŠã§ã¢ ãåãããŠããæä»£ã§ããã OSãã§ãã ããã«ãŠã§ã¢ ããŒãžã§ã³ã ãã£ã¬ã¯ã ãªã»ãã¬ãŒã¿ãªã©ãããããªéšåã§æ¬çªç°å¢ãšã¯åŸ®åŠã«ç°ãªããçµå±éçºç°å¢ä»¥éã®ç°å¢ãšæåãéãããŸã Mac ãŠãŒã¶ã«å¯ŸããŠããªãã£ã·ã£ã«ã§ãµããŒãç¡ããåéçºè
㯠MAMP ãèªåã§ããã«ãŠãšã¢ãå
¥ããŠããã ïœä»ãŸã§ã Oracle VirtualBox å©çšæä»£ ããŒã«ã«äžã«ä»®æ³ç°å¢ãçšæããŠããã®äžã«ã²ã¹ãOSãšããŠãµãŒãã¹ã§å©çšããŠãããã®ãšåãOS/ ããã«ãŠã§ã¢ ãåãããŠããŸãã ããèŠã ã§ããåœæ VMware Fusion ãš Oracle VirtualBox ã®2補åäž¡æ¹ãæ€èšŒããŠããã¹ãOSãã ã³ãã³ãã©ã€ã³ äžã§æäœã§ãããã®ãå€ããšããçç±ã§ Oracle VirtualBox ãéžå®ããèšæ¶ããããŸãã  ããŒã«ã«éçºç°å¢ã«ãããåé¡ç¹ æè¡çãªè©±ãšããããã¯ãæ°èŠã«åç»ããéçºè
ãäžçªåãã«ç°å¢æ§ç¯ãè¡ãéã«äœæ¥æéãããããæ§ç¯äžåé¡ãçºçããéã«ãã©ãã«ã·ã¥ãŒãã«æéãããããšããåé¡ããããŸããã ãã㯠VirtualBox ã®ä»®æ³ãããã¯ãŒã¯èšå®ãã²ã¹ãOSèµ·ååŸã«ã²ã¹ãOSäžã§è¡ãWebãµãŒãäžã®ã¢ããªã±ãŒã·ã§ã³éšåã®éçºç°å¢ã®æ§ç¯ãªã©ãæäœæ¥éšåããããªãã®äœæ¥éãããã®ãšããšã¯ãã£ãŠããã®åéã¯å
šãã€ã³ãã©ãè§Šã£ãŠããŠãªãéçºè
ããèŠããšãã©ãã«ãçºçããéã«èªåèªèº«ã§ ãã©ã€ã¢ã³ããšã©ãŒ ãè¡ãæ£åžžã«åäœãããŸã§ãã£ãŠããã®ã«ãããªãã«æéãããã£ãŠããŸããéãæªããšïŒæ¥ããïŒæ¥ããŒã«ã«éçºç°å¢ã®æ§ç¯ã«ãã£ãŠãŠããŸãç¶æ³ã§ããã  vagrant ãšansibleã§æ§ç¯ã ã³ãã³ãã©ã€ã³ åãã ã€ã³ãã©ã®ã³ãŒãåãçŸåšé²ããŠãããä»®æ³ç°å¢åºæã®éšåã vagrant ã§æ§ç¯ããããšã§ãéçºç°å¢æ§ç¯ç°¡çŽ åã§ããããããªãããšãã話ãéšå
ã§åºãŠä»¥éããã®ããæ¹ã§è¡ã£ãŠããŸãã  å°å
¥ããŠã¿ãŠ å人çã«ã¯ãæ§ç¯ãããæ¥œã«ãªã£ããããïŒããšããææ³ã§ãã ãããŸã§ãå¿ããæã«éã£ãŠPCãå£ããŠç°å¢äœãçŽããªã©ããŠãããããã³ãã³ã2åå®è¡ã§OKãªããšã1æé匱åŸ
ã€ã ãã§ç°å¢æ§ç¯ãå®äºã§ããã®ã¯ãã®ãããé
åã«æããŠããŸãã äžæ¹ãåœããåãšããã°åœããåãªã®ã§ããããã¹ãOSåŽã«å
¥ãã vagrant ãªã©ã®ãœãããŠã§ã¢ã®ããŒãžã§ã³ç®¡çãã€ã³ã¹ããŒã«ãèšå®æŒãããããš vagrant ã³ãã³ããæ£åžžã«åäœããªãã ã¯ã©ãŠã æä»£ã«æ
£ããããŠ1æéã§ããé·ãæãããšãããããªã©èª²é¡ããããåè
㯠PowerShell ãªã©ã§ãã¹ãOSåŽã§ã®ã€ã³ã¹ããŒã«äœæ¥ã®èªååãåŸè
ã¯ã²ã¹ãOSã®æ§ç¯æ¹æ³ã®å€æŽããååã«CloneããŠãã ãœãŒã¹ã³ãŒã ããã³ç»åãªãœãŒã¹ã®æé©åãä»åŸããŠããæ¹åããŠãããããšèããŠããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã  以åã®ã SHOPLISTã®ã·ã¹ãã ãã¢ãã³ãªã¢ãŒããã¯ãã£ã«å€ããããšãããäºæ³ä»¥äžã«éãæ·±ãã£ã話  ãã§ãæžããã®ã§ãããçŸè¡ã®SHOPLISTã«ãããOSã ããã«ãŠã§ã¢ ããšã«ããå€ãç¶æ
ã§ããã ä»åã¯OS ããã«ãŠã§ã¢ ãããŒãžã§ã³ã¢ãããã話ã«ã€ããŠå
±æããŠããããšæããŸãã OS/ ããã«ãŠã§ã¢ ã®ããŒãžã§ã³ã¢ããã¯ã€ã³ãã©çãªå±±å Žã®äžã€ã§ãã CentOS ã®6.4ã¯2020幎ã®11æã§ãµããŒãçµäºãPHP5.4ã¯2015幎ã«çµäºããŠããã»ãã¥ãªãã£é¢ãçç£æ§é¢ã§å€§ããªèª²é¡ãããç¶æ³ã§ãããã»ãã¥ãªãã£é¢ã¯åœç¶ã®ããšãšããŠã AWS SDK for PHP ã google - api - php -clientãªã©äž»èŠã©ã€ãã©ãªã PHP ã®ããŒãžã§ã³ãå€ãããŠäœ¿ããªãããšãWeb API ãåŒã³åºããŠäœ¿ãã«ããŠãlibcurlã®åé¡ã§ SSL connect errorãçºçããŠåŒã³åºããªãããã®ä»æç®ããªãã調ã¹ããã«ããããäžã®æç®å°ãªããªã£ãŠãããããŸãã«ã¯æ°èŠã«åç»ããã¡ã³ããããSHOPLISTã®ãã®ã·ã¹ãã ãåç³ã§ããããšèšãããŠããŸããç¬ãã«ç¬ããªãç¶æ³ã§ããã ä»åã©ããŸã§ããŒãžã§ã³ã¢ãããããïŒ èšç»æç¹ã®Stable ææ°çãéžå®ããŸããã â OSããCnetOS 6.4ãâã Amazon Linux release 2 (Karoo) â Webã Apache2.2ã âã Apache 2.4.43 â PHP ã PHP5.4ã âãPHP7.4 â DBã MariaDB10.0.3 âãMariaDb10.5.5 â redis redis2.8.3-1 âãredis4.0.10 æ§ç¯ãè¡ãéã«è°è«ãšãªã£ãããš ãœãããŠã§ã¢ããã±ãŒãžã管çãã ãªããžã㪠ã«ã€ã㊠ä»åOSãAmazonLinuxã§ã amazon - linux -extrasã©ã€ãã©ãªãæ£ãšããããšãã¹ããªã®ã§ããã以äž2ç¹ã®åé¡ãããã以äžã®æ¹éãšããŸããã ïŒïŒ amazon - linux -extrasã® php ã®ããŒãžã§ã³ã¿ã°ã«php7.4ã®ããŒãžã§ã³ã¿ã°ãstableãšãªã£ãŠããŠãªããžã§ã³ããªãåé¡ âstableã§ä»£çšããªã®ã§ãªããžã§ã³åäœã§èŠããšç°å¢å·®ç°ãçãŸããå¯èœæ§ã¯ãããå容ããã ïŒïŒå¿
èŠãªãã¹ãŠã®ã©ã€ãã©ãªã amazon - linux -extraså
ã«ååšããªãåé¡ âãããåŸãªãã®ã§ãã®ãããªãã®ã¯ pecl ã pear ã䜿ããã©ã amazon - linux -extrasã«ãããã®ã¯ããããã€ã³ã¹ããŒã«ããã ä»åŸã®ããŒãžã§ã³ã¢ããã®é »åºŠããã®æã®ããŒãžã§ã³ã®éžå®ã«ãŒã«ã«ã€ã㊠è°è«ã®çºç«¯ãšããŠã¯å ããã«ãŠã§ã¢ ããšã«EOLãç°ãªãããšã§ãã äŸãã°ïŒå¹Žããã«ææ°å®å®çã«ã¢ããããŒããè¡ããšããæ±ºãããšã«ããå Žåã PHP ã® ã¢ã¯ãã£ããµããŒã ã¯2011幎ã®11æã«çµäºãšãªãããµããŒãåãç¶æ
ãšãªããŸãããEOLã®é·ããã®ãäŸãã° MariaDB ãªã©ã«ã€ããŠã¯ãµããŒãç¯å²å
ãªã®ã§ä»ã®ãŸãŸã§ãç¹æ®µè¿œå ãããæ©èœããä»äœ¿ã£ãŠããããŒãžã§ã³ã§åé¡ãç¡ããã°ç¡çã«ããŒãžã§ã³äžããå¿
èŠãªãã®ã§ã¯ãªãããšãã話ã§ãã ãã®ä»¶ã«ã€ããŠã¯çµè«ããããŸããªéšåã¯ããã®ã§ãã以äžã®æ¹éã§ããã®ã§ã¯ãªãããšèããŠããŸãã ïŒïŒ PHP ããã³ PHP ã©ã€ãã©ãªã¯2幎ããšã«ææ°å®å®çã« ïŒå¹Žããã«ããŒãžã§ã³ãå®å®ææ°çã«ããããçç±ãšããŠã¯ PHP ã® ã¢ã¯ãã£ããµããŒã ã2幎ãã»ãã¥ãªãã£ãµããŒãã3幎ãªã®ã§ã2幎ããã«ããèšç»ãç«ãŠãŠããã°ä»®ã«ãã©ãã£ãŠå€å°è¶³ãåºããšããŠãã»ãã¥ãªãã£ãµããŒãçµäºãŸã§ã«ã¯ã¢ããããŒããå®äºã§ããããŸãããŒãžã§ã³ã¢ããã«äŒŽãéæšå¥šé¢æ°ã®æžãçŽããªã©ããœãŒã¹äžã®ååç®æãäžå®æ°ãããã®ãªã®ã§ã宿çã«ããŒãžã§ã³ã¢ãããèšç»ããããã«åããŠéåžžæ¥åã«ãããŠãéæšå¥šé¢æ°ã®æžãæããè¡ãéçšãäœããªã©ãå®åžžæ¥ååããæ¹ãããŒãžã§ã³ã¢ããåã«èŠåŽããããšãæžãã®ã§ã æ©æ¢°ç ã«2å¹Žã§ææ°å®å®çã«ãããããšãèšç»ããã®ããã«æ¥ã
æºåããŠããæ¹ãé©åãšå€æã ïŒïŒãã以å€ã¯å¿
èŠãªå Žåã¯2幎ããã« è¿œå æ©èœèŠæã®ãããã®ããããã¯ãµããŒããåããããšãèŠèŸŒãŸãããã®ã«ã€ããŠã¯2幎ããã® PHP ããŒãžã§ã³ã¢ããã®éã«åæã«è¡ãããã以å€ã«ãããŠã¯ããŒãžã§ã³ã¢ããã¯è¡ããªãã ïŒïŒé倧㪠èåŒ±æ§ ãèŠã€ãããã·ã¹ãã å
šäœã§èŠãŠã ãªã¹ã¯ãããž ã®ææ®µããªããã®ã¯å³æã CVNãNVDã¯æ¥æ¬¡ç¢ºèªããŠããããã®äžã§ãã® èåŒ±æ§ ã ããã«ãŠã§ã¢ åäœã®èšå®å€æŽããWAFãALBãªã©ãã®ä»ãµãŒãã¹ã®çµã¿åããã§ãé²ããªããã®ã«ã€ããŠã¯å³æããŒãžã§ã³ã¢ããã ããŒãžã§ã³ã¢ããã®é²ãæ¹ å®æœã®ã¹ã±ãžã¥ãŒã«äžæ°ã«é²ããŠããŸããšåé¡ãçºçããéã«åå ã®åãåãã§ããªããªãã®ã§ä»¥äžã®æ®µåãã§é²ããŸããã ïŒïŒããŒã«ã«ç°å¢åã³éçºç°å¢ã®OS/ PHP ãå«ã ããã«ãŠã§ã¢ ãããŒãžã§ã³ã¢ããããŠEC2 ã€ã³ã¹ã¿ã³ã¹ ãããããäœæããã ïŒïŒGitäžã§PHP7åäœç¢ºèªçšã®ãã©ã³ããå®çŸ©ããŠããããã®ãã©ã³ãã« ãœãŒã¹ã³ãŒã ããããã€ãããŠå Žåã«ãæ°ããŒãžã§ã³ã«å¯Ÿå¿ããEC2 ã€ã³ã¹ã¿ã³ã¹ ã«ãããã€ããPHP7ã«ãã圱é¿ç¯å²ã®æŽãåºããšããã°ã©ã ã®ååãåãªã£ãŠãããreleaseãã©ã³ãããPHP7åäœç¢ºèªçšã®ãã©ã³ãã«ã¯å®æçã«pullããŠæ©èœå·®åãåããŠããã ïŒïŒãŸãå
ã«æ¬çªç°å¢ã®DB ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ããããå
ã«è¡ãããã®åŸã«Webãšããã ã€ã³ã¹ã¿ã³ã¹ ãµãŒãã®ããŒãžã§ã³ã¢ãããè¡ãããã ãã®åã« äžèŠãªããŒãã«ã»ããŒã¿ã§åé€ã§ãããã®ã¯æ¶ã ãïŒäºåã«ããã¯ã¢ããDB ã€ã³ã¹ã¿ã³ã¹ ã§ããŒãã«ããã³ããŒã¿åé€ã«ãããæéãèšæž¬ãããšããæ°æéèŠæš¡ã ã£ãã®ã§ãããŒã¿åé€ã®ããã«èšç»ã¡ã³ããã³ã¹ãäžåºŠè¡ãã ïŒïŒèšç»ã¡ã³ããã³ã¹ãè¡ãæ¬ çªç°å¢ã®DB ã€ã³ã¹ã¿ã³ã¹ ã®ããŒãžã§ã³ã¢ãããå
ã«è¡ã ããã®æç¹ã§Web ã€ã³ã¹ã¿ã³ã¹ ãCentOS6.4/PHP5.4ç°å¢ãDB ã€ã³ã¹ã¿ã³ã¹ ãAmazonLinux2/MariaDB10.5.5ç°å¢ã«çœ®ãæãã£ãŠããã ïŒïŒPHP7察å¿ã®ãœãŒã¹ãšreleaseãã©ã³ãã®ããŒãžã®ãããæ°èŠæ©èœãªãªãŒã¹ãäžå®æé忢ããreleaseãã©ã³ã = php7.4察å¿ã®ç¶æ
ã«æŽçããŠããã ïŒïŒèšç»ã¡ã³ããã³ã¹ãè¡ããWeb ãšããã ã€ã³ã¹ã¿ã³ã¹ ãPHP7.4ã«å¯Ÿå¿ãã ã€ã³ã¹ã¿ã³ã¹ ã«åãæ¿ããŠããããã®æç¹ã§Webãšããã ã€ã³ã¹ã¿ã³ã¹ ãAmazonLinux2/PHP7.4ç°å¢ã«çœ®ãæãã£ãŠããã ïŒïŒããã§äœãåé¡ãçºçããªããã°æ§ããŒãžã§ã³ã® ã€ã³ã¹ã¿ã³ã¹ ãTerminateããŠçµäºã  ã¡ãªã¿ã«äžèšã®ïŒãŸã§ã¯æ¯èŒçé 調ã«é²ã¿ãŸãããïŒä»¥éã¯äœãããã®åé¡ãçºçãé£åããŸããã Â çµæ§é·ããªã£ãŠããŸããŸããã æ¬¡å以éã®èšäºã§ãçºçããåé¡ãšè§£æ±ºæ¹æ³ãæžããŠãããããšæããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ä»åã¯SHOPLISTã«ããã AWS ã®ã€ã³ãã© ã¢ãŒããã¯ã㣠ãèŠçŽãã話ã§ãã 以åãã SHOPLISTã®ã·ã¹ãã ãã¢ãã³ãªã¢ãŒããã¯ãã£ã«å€ããããšãããäºæ³ä»¥äžã«éãæ·±ãã£ã話 ãã§ãèšèŒã®ãšãããSHOPLISTã®ã€ã³ãã©ç°å¢ã¯ãªã³ãã¬ãã¹ã®ç°å¢ã2014ã« ã¯ã©ãŠã ç§»è¡ãããã®ãªã®ã§ãããåœæã¯æéçãªå¶çŽããååã« AWS ã«é¢ããç¥èŠãªããªã©ã«ããããªã³ãã¬ç°å¢ããšãããã ã¯ã©ãŠã ã«ç§»è¡ããç¶æ
ã§ããã®åŸElastiCache ãlambdaã API Gateway ãšãã£ãEC2以å€ã®ãµãŒãã¹ãåŸã
ã«å°å
¥ããŠãããã®ã®ãåºæ¬çã«ã¯ç©çæ©åšããä»®æ³ãµãŒãããšãä»®æ³ãããã¯ãŒã¯ãã«çœ®ãæãã£ãŠãããããªç¶æ³ã§ããã ä»åOSã» PHP ã®ããŒãžã§ã³ã¢ããã«åãããŠãã€ã³ãã©èšèšã®èŠçŽããè¡ã£ãŠããå
·äœçã«ã©ã®ãããªå€æŽãè¡ã£ãŠãã£ããã«ã€ããŠå
±æããŠããããšæããŸãã  SHOPLISTã ã¢ãŒããã¯ã㣠ã®é¢ããèŠãèª²é¡ ãµããŒãåãOSãªã©ã®è©±ããããŸãããå
šäœã®ã€ã³ãã© ã¢ãŒããã¯ã㣠ãšããŠèããå Žå以äžã®èª²é¡ãååšããŠããŸããã ïŒïŒWeb/DBãªã©ãµãŒãã¹çšŒåã«å¿
èŠãªäž»èŠãµãŒããSingle-AZæ§æ åœç¶ã®ããšãšããŠWebãµãŒã㯠åé·å ãããDBãMaster-Slaveæ§æã«ã¯ãªã£ãŠãããã®ã®ãMulti-AZæ§æã«ã¯ãªã£ãŠãããããŸãŒã³é害ã«å¯Ÿããéå®³èæ§ãäœãç¶æ
ã§ããã ïŒïŒãµãŒãã®æåæ§ç¯ïŒè¿œå ãå¿
èŠïŒæå
¥ãŸã§ã«æéããããïŒ åœæã¯ãäŸãã°ã¡ã¬ã»ãŒã«ïŒSHOPLISTã§éå¬ããŠããå€§èŠæš¡ã»ãŒã«ã€ãã³ãïŒãéå¬ãããïŒé±éåã«ãæè¿äœæããEC2ã®ã€ã¡ãŒãžãã管çã³ã³ãœãŒã«äžã§æåã§ ã€ã³ã¹ã¿ã³ã¹ ãäœæããBalancerã®Target Groupã«è¿œå ããéçšã«ãªã£ãŠããŸããã ãªã®ã§ã¡ã¬ã»ãŒã«ã®ããã«èšç»ãããŠããã»ãŒã«ã«ã€ããŠã¯ãŸã é 匵ãã°æºåã§ããã®ã§ãããã»ãŒã«éå§æã«èšç»ãäžåããªã¯ ãšã¹ ããæ¥ããªã©ãšãã£ãå Žåã ã€ã³ã¹ã¿ã³ã¹ ã®æ§ç¯ãšè¿œå ã«æ©ããŠãçŽ30åã»ã©ããã£ãŠããç¶æ³ã§ãæè»ã«ã¹ã±ãŒã«ããã€ã³ãã©åºç€ã§ã¯ãªãç¶æ³ã§ããã ïŒïŒWebãµãŒãè¿œå æã«GIPã®æŽæ°æŒãã®çºçïŒãªããã¹ãèªçºããããèšèšïŒ SHOPLISTã§ã¯æ±ºæžä»£è¡äŒç€Ÿãã¯ãããšããæ§ã
ãªã·ã¹ãã 飿ºãè¡ã£ãŠãããWebãµãŒãããå瀟ã®ãµãŒãã«å¯Ÿã API éä¿¡ãè¡ã£ãŠããã®ã§ãããéä¿¡å
IPãå¶éããŠãã飿ºå
ãµãŒããåœç¶ãããŸãã éä¿¡çµè·¯ãšããŠã¯åœç€ŸWebãµãŒãâå€éš API (IPå¶éãã)ãšãªãã®ã§ãããæ£ç¢ºã«ã¯åœç€Ÿã® ä¿æ ããElasticIPã«å¯ŸããIPå¶éã§ãããããæåã§ ã€ã³ã¹ã¿ã³ã¹ ã远å ããéã« ä¿æ æžã¿ã®ElasticIPãæ¯æžããŠæ°èŠå²ãåœãŠãããå Žåããã®IPã§ API éä¿¡ãã§ããªãããŸã ã€ã³ã¹ã¿ã³ã¹ ã®å
¥ãæ¿ããè¡ã£ãéã«IPã®çŽã¥ããã¹ãããã API éä¿¡ãã§ããªããšãã£ããããªãªããã¹ãçºçãããããã€ã³ãã©æ§æãšãªã£ãŠããŸããã ããã¯ãªã³ãã¬ãã¹ã§ãµãŒããéçšããŠããæä»£ã®åæ®ãã§ãåœæLoad BalancerãDSR圢åŒã§éçšãããŠãããæ»ãã®ãã±ãããBalancerãçµç±ããçŽæ¥ã¯ã©ã€ã¢ã³ãã«è¿åŽããããã«åWeb ã€ã³ã¹ã¿ã³ã¹ ã¯ãã¹ãŠGIPãæã£ãŠããããåçš® API ãåŒã³åºãéã®åºå£ã®IPãåWebãµãŒãã®GIPãšãªã£ãŠããŸã£ãŠããã ãã§ãã ïŒïŒDBã§ãããïŒ ã¹ããŒã ãè·šãçµåãããåé¡ ããã¯ã€ã³ãã©ãšããããã¯ã¢ããªã±ãŒã·ã§ã³å®è£
ã®åé¡ã§ã¯ããã®ã§ãããåœæïŒ ã€ã³ã¹ã¿ã³ã¹ ã«7ã€ã®ããŒã¿ããŒã¹ãããŒã¿ããŒã¹åèšã§çŽ1,800ã®ããŒãã«ããããŠDB容éãçŽ1.6TBãšããéåžžã«å€§ããªå®¹éããã㊠ã¹ããŒã ãè·šãçµååŠçãå€ã忣ã§ããªãç¶æ³ã«ãªã£ãŠããŸããã ïŒïŒDBãªã¯ ãšã¹ ããå€ãããŠãªã¯ ãšã¹ ã課éã®ããRDS for Auroraãæ¡çšãããšã€ã³ãã©ã³ã¹ããäžæ°ã«è·³ãäžããåé¡ ããã¯ã€ã³ãã©ãšããããã¯ã¢ããªã±ãŒã·ã§ã³èšèšã®åé¡ã§ã¯ããã®ã§ãããã¯ãšãªçµæãRedisãã¯ãããšããKVSã«ãã£ãã·ã¥ãã¥ããèŠæ±ä»æ§ã§ãã£ãããã£ãã·ã¥ã®å®è£
ãè¡ãããŠããªãã£ãããªã©ã®çç±ã§ãDBãžã®ãªã¯ ãšã¹ ãæ°ãå€ããDBã®ããŒã¿ãµã€ãºãšçžãŸã£ãŠDBããããŒãžããµãŒãã¹ãæ¡çšããããšãããšã€ã³ãã©ã³ã¹ããäžæ°ã«å¢å€§ãããšããåé¡ã«æ©ãŸãããŠããŸããã ïŒïŒ SSH ã§ãµãŒãã«å
¥ããªããšåºæ¥ãªãããšãå€ãåé¡ åç°å¢ãžã®ãããã€ã¯git ã³ãã³ãã ã·ã§ã«ã¹ã¯ãªãã ããã°ç¢ºèªã¯tailfã³ãã³ãããžã§ãã¹ã±ãžã¥ãŒãªã³ã°ã¯crondã§è¡ã£ãŠããããã SSH æ¥ç¶ãè¡ããªããšéçºæ¥åãè¡ããªãç¶æ
ã§ããµãŒãã« SSH æ¥ç¶ã§ãã人ã¯ç¹å®å°æ°ã§ã¯ãããã®ã®ããµãŒãäžã§è¡ããããšãå€ãããããªããã¹ãæžããèŠç¹ã§èŠããšãµãŒãã«ãã°ã€ã³ã§ãããŠãŒã¶ãããã«çããããªãšèããŠããŸããã ä»åã® ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã®ããã«èšèšãšããŠèŠçŽããç¹ å
·äœçã«ã¯ä»¥äžã®èŠçŽããè¡ã£ãŠããŸãã ïŒïŒEC2 ã€ã³ã¹ã¿ã³ã¹ ã®Multi-AZåãã Multi-AZæ§æã§ããã°å€§äžå€«ãªã®ããšããç¹ã«ã€ããŠã¯è°è«ã¯ãããã®ã®ããµãŒãã¹ã®å¯çšæ§äžãããéžæè¢ãããã®ã«å®çŸã§ããŠããªãç¹ã«ã€ããŠã¯èª²é¡ã§ããããŸãã¯Multi-AZæ§æã«å€æŽããã ïŒïŒ AWS Auto Scaling ã䜿ããµãŒã墿žã®æè»ããåäžããã æåã§ã® ã€ã³ã¹ã¿ã³ã¹ æ§ç¯ãããã管çã³ã³ãœãŒã«äžã®èšå®ã®ã¿ã§ ã€ã³ã¹ã¿ã³ã¹ æ§ç¯ãšãµãŒãã¹æå
¥ãŸã§ãèªååããæ¥ãª ã€ã³ã¹ã¿ã³ã¹ 远å ãçž®éã«ãèãããèšèšãšããã ïŒïŒWebãµãŒãã«GIPãæãããªã åWebãµãŒãããšã«ããããGIPãæãããªããã°ãåçš® API ãšã®é信㯠Gateway ã®IPã«éçŽããããããåWebãµãŒãã«GIPãæãããããšããããã ïŒïŒãããã€ãGitlab CIåããã åãµãŒãã« SSH ãã°ã€ã³ãããªãããã®æœçãGitlab Runnerçµç±ã§ãããã€ãããããšã§ãGitã³ãã³ãããã·ã§ã«ã³ãã³ããåãµãŒãã§å®è¡ããªããŠãæžãããã«ããã ïŒïŒCloudwatch Logsã䜿ã£ãŠãã°ãéçŽãã åãµãŒãã« SSH ãã°ã€ã³ãããªãããã®æœçãåãµãŒãã«ãã°ã€ã³ãtailã§ãã°åéããªããŠã AWS 管çã³ã³ãœãŒã«äžã§ãã°ã®é²èЧãã§ããããã«ãã ïŒïŒDBã®ç³»çµ±ãåãã ãšã³ãžãã¢ã® ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã«äŸåããéšåã¯å€ããã©ããµãŒãã¹äžã§ã®åç
§é »åºŠã«å¿ããŠDBã®ç³»çµ±ãåãç¬ç«ãã ã€ã³ã¹ã¿ã³ã¹ ã«ããŒã¿ãæ ŒçŽããããšã§å ã€ã³ã¹ã¿ã³ã¹ ã®å®¹éã®åæžãšIO忣ãè¡ãã ïŒïŒãžã§ã管çããŒã«ãå°å
¥ããcronãå€åºããã åãµãŒãã« SSH ãã°ã€ã³ãããªãããã®æœçãcronèšå®ãå ã€ã³ã¹ã¿ã³ã¹ äžã§è¡ããããžã§ã管çããŒã«ã§äžå
管çããæ¹åŒã«å€æŽããã å
·äœçãªå
容ã«ã€ããŠã¯åæçš¿èšäºã«è©³çްãèšèŒããŠãããŸãã®ã§ãèå³ããããŸãããèŠãŠã¿ãŠãã ããã ä»åæå³çã«èŠéã£ãããš RDSã®å°å
¥ã«ã€ããŠã¯èŠçŽãã®äžã§å®æœãããã£ãã®ã§ãããèŠéããŸããã çç±ãšããŠã¯ãRDSå°å
¥ã®éã®ããšããŠããŸãã¯æ°åã®ã¡ã³ããã³ã¹ã«åããŠäžèŠããŒã¿ã®Deleteãè¡ãã DBMS ã®ããŒãžã§ã³æŽæ°æã®ããŒã¿ç§»è¡ãå®ããããã¡ã³ããã³ã¹æéå
ã«äœè£ããã£ãŠå®äºã§ããç¶æ³ã«ããæ°ããæ§ç¯ãããæ°ããŒãžã§ã³ã® DBMS ã«ããŒã¿ç§»è¡ãè¡ããããã«ããããDBãžã®ãªã¯ ãšã¹ ãæ°ãæžããããã«ããã°ã©ã ãçºè¡ããŠãã SQL ãææ¡ãããã£ãã·ã¥åã§ãããã®ãšåºæ¥ãªããã®ãåãåããå¿
èŠæ¥å¿ããŠããŒã¿ã®æã¡æ¹ãå€ããŠåããŠåãæ¿ããå¯èœãšãªããšããããŸãã«ã壮倧ãªè©±ã«ãªã£ãŠããŸãããã§ãã ãªã®ã§ä»åã¯ãŸãã¯ããŒã¿å®¹éãæžãããŠã DBMS ã®ä¹ã£ãŠãã ã€ã³ã¹ã¿ã³ã¹ ã®äžä»£æŽæ°ãšã DBMS ã®ããŒãžã§ã³ã¢ãããŸã§ãã¹ã³ãŒããšããŸããã ãã€ãå¿
ããªãã³ãžããŸãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã ååã®æçš¿ã SHOPLISTã®ã·ã¹ãã ãã¢ãã³ãªã¢ãŒããã¯ãã£ã«å€ããããšãããäºæ³ä»¥äžã«éãæ·±ãã£ã話 ãã®ç¶ãã§ãã ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã®ããããŸã㯠ãªãã¡ã¯ã¿ãªã³ã° ã§ã§ããéãã®ããšãããããšãã話ãªã®ã§ãããããã¯æ¹éãæ±ºããã«ãããŸããã ä»åã¯ãSHOPLISTã«ãã㊠ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã®ããã«ã©ã®ãããªèšç»ãç«ãŠãŠãäœããã©ã®ããã«é²ããŠãããã«ã€ããŠå
±æããŠããããšæããŸãã  ãŸã㯠å
µç« ïŒãµããŒããšããŠæäžã§ããããã»ã¢ãã»ã«ãïŒã確ä¿ããããšãã ç§ãäžçªåãã«èããã®ã¯ å
µç« ã§ããã ã¬ã¬ã·ãŒè±åŽãè¡ãããã«ã¯ãç§1人ãç§ã®æå±ããæè¡çµ±æ¬éšã®äººå¡ã ãã§ã¯å°åºé²ããããŸããã ãŸããæ¢åã·ã¹ãã äžã§ãµãŒãã¹ãåãããªããæ¹ä¿®ãããŠããããšãèãããšé·ææŠã«ãªãããšãäºæ³ããããããâ äžé£ã®æŽ»åã«å²ããããã»ã¢ãã»ã«ããã©ã®çšåºŠããã â¡èšç»ã¡ã³ããã³ã¹ã®ããã«ã¬ã¬ã·ãŒè±åŽã® ãã¬ãŒããªã ãšããŠããžãã¹ãµã€ãã®ã¹ã¿ãããã©ã®çšåºŠååãåŸããããïŒäŸãã°äžå®æéã¯æ°èŠéçºãæ¢ãããããšãå容ã§ãããã宿ã¡ã³ããã³ã¹ãè¡ãããïŒ â¢ PHP ããŒãžã§ã³ã¢ãããè¡ãã«éããŠãããµãŒããžç§»è¡çšŒåæéããããã®ã§ããµãŒãè²»çšãšããŠãªãŒããŒã©ããã§ããäºç®ãã©ã®ãããå¿
èŠãã⣠ãªãã¡ã¯ã¿ãªã³ã° ã广çã«è¡ãäžã§å¿
èŠãªæ¯æŽã¯äœããããŸãèããŸããã ã©ããªã«çŽ æŽãããæŠç¥ãäœæŠãããããšããã§ å
µç« ãèãã«ãããšçµµã«æããé€
ã«ãããªããªãããã§ãã å°ãäœè«ã«ãªããŸãããæ¥æ¬äººã¯ å
µç« ãçãã«ããç¯ããããšç§ã¯æã£ãŠããŸãã ç¬¬äºæ¬¡äžçå€§æŠ ã«ãããŠæ¥æ¬è»ã¯å¥è¥²ããããèŠèãèªç©ºæ©ãæ°å€ãç Žå£ããããšã«ã¯æåãŠãããã®ã®äžæ¹ã§ãããã°ã®ç Žå£ã¯è¡ãããå
é äžèœ ç¶æ
ã§ãã£ã空æ¯ãšãŒã¯ã¿ãŠã³ããã®ããã°ã§ä¿®çããããããŠãšã€æµ·æŠã«åæŠããŠãããšããäºå®ããããŸããæ¬æ¥ã¯æ¥æ¬ã¯ïŒé»ã®ç©ºæ¯ã§ïŒé»ã®ç©ºæ¯ãæŠããšããã å
µç« ã軜èŠããçµæãšããŠãšãŒã¯ã¿ãŠã³ãåæŠããããšãèš±ã圢ãšãªãããã çç æ¹Ÿæ»æ ã§ããã°ãç Žå£ããŠããã°æŠå±ã¯å€ãã£ãŠãããããããªãã®ã§ãã è©±ãæ»ããŸããä»åé²ãæ¹ãšããŠã¯ ïŒïŒå¿
èŠãšãªã å
µç« ã®èŠç© ããããââ ïŒïŒåé¡ã«å¯Ÿããç·æ¥åºŠãåªå
床ä»ã ããããââ ïŒïŒè§£æ±ºçã®é²ãæ¹ã®ã¹ããŒã¯ãã«ãåæ ãšãã圢ã§é²ããŠããŸãã ã¬ã¬ã·ãŒã·ã¹ãã ã®è§£æ±ºçãšããŠãŸãè¡ã£ãã㚠解決çã¯å€§ããåããŠé·æçæœçãšçæçæœçãããã®ã§ããããŸãäžçªåãã«è¡ã£ãããšã¯ã以äžïŒç¹ã«ã€ããŠäŒç€Ÿä»£è¡šããã³åéšã®éšé·ãšåæåœ¢æãåãããšã§ããã â æ·±å€ã¡ã³ããã³ã¹ãä»åŸã¯3ã«æã«è¡ããããã«ããããŸãåœé¢ã®éã¯ïŒé±éããã«æ·±å€ã¡ã³ããã³ã¹ãè¡ããããã«ããã â¡ãšã³ãžãã¢è·çš®ã€ããŠã¯é±ã«4æé ãªãã¡ã¯ã¿ãªã³ã° ãã¯ãããšããã·ã¹ãã å質ã®ç¶ææ¹åã«å
ãŠãããæéã確ä¿ããã ïŒïŒèšç»ã¡ã³ããã³ã¹æéã®ç¢ºä¿ SHOPLISTã¯å®ã¯ä»ãŸã§èšç»ã¡ã³ããã³ã¹ã®æéãã»ãšãã©ãšã£ãŠããŸããã§ãããå€ããŠã幎ã«1ïœ2åã§ããã®çç±ã«ã€ããŠãElastiCacheãã¯ãããšãã AWS ã®PaaSã®ã¡ã³ããã³ã¹ã«äŒŽãäºå忢ã§ããã ãã®çç±ã«ã€ããŠæããSOHPLISTã«ãããšã³ãžãã¢ã« ãã¢ãª ã³ã°ãããšããããã¡ã³ãã³ãã³ã¹ãè¡ããšãã®éã®å£²äžãæå€±ããã®ãšããã©ã³ãæ§ãžã®èª¿æŽã倧å€ãªã®ã§å®æœããããã©ã§ããªãããšããåçãè¿ã£ãŠããŸããã èŠããã«ãã¡ã³ããã³ã¹ãè¡ããè¡ããšå£²äžãæžå°ããã®ã§ãèªç€ŸããèŠãå Žåã«ã¢ã³ã³ã³ãããŒã©ãã«ãª AWS ã®ã¡ã³ããã³ã¹ä»¥å€ã®çç±ã®ã¡ã³ããã³ã¹ãããžãã¹ãµã€ãããèš±å¯ãããŠããªãç¶æ³ãé·å¹Žç¶ããŠãããšããç¶æ³ã ã£ããšããããšã§ãã ãã®ãããæ¬æ¥åœç¶è¡ãããã¹ãOSã ããã«ãŠã§ã¢ ã¢ããããŒããè¡ãããããŒã¿ã¡ã³ããã³ã¹ãå€§èŠæš¡ãªã€ã³ããã¯ã¹ä»å ãè¡ããªãç¶æ³ãšãªããçµæãšããŠããµããŒãåãOS ããã«ãŠã§ã¢ ã®åé¡ããè¥å€§åããDBãçãŸããããšãšãªã£ãŠããããã§ãã ãŸããå®éã«ã©ã®çšåºŠå£²äžãéžå€±ãããã«ã€ããŠååãªè°è«ããªãããŠããªãçŸç¶ãèŠããŠããŸãããã¡ã³ããã³ã¹ãè¡ãæé垯ãèæ
®ããã°ããããïŒåãããã® éžå€±å©ç ã£ãŠããããæ°åäžåãããªãã§ãããã€ãã¡ã³ããã³ã¹äžã«è³Œå
¥ã§ããªãã£ããŠãŒã¶ãŒãå¥ã®ECãã©ãããã©ãŒã ã§è³Œå
¥ããåæã§ãããã¡ã³ããéããŠåœç€Ÿãµã€ãã§è³Œå
¥ããå²åã0%ã§ãããšããåæã§èããŠã®å Žåã§ãã æ¬åœã«å·éã«èãããšã¡ã³ããã³ã¹ã® éžå€±å©ç ãšEBSã®ã³ã¹ãåæžå¹æã£ãŠåããããããªããããã以äžãããããããªãããã ã売äžãæžãããšãå°ããšããã ãã§ã¡ã³ããã³ã¹ãå
¥ãããªãç¶æ³ã«é¥ã£ãŠããã®ã§ãã ãªã®ã§ãããŸãïŒãæããã«ã¡ã³ããããããããšããããããäºå®ã§èšç»ãããä»ç€Ÿã¯ãããªã«ãã£ãŠãªããšãæããããããªããã©ããã¡ã¯ãã¡ãããã¯ãããå
šã ã¢ãŒããã¯ã㣠ãéãã·ã¹ãã ãæšªäžŠã³ã§æ¯èŒããŠãæå³ããªãã®ã§ã¡ã³ããããåæã§ã¹ã±ãžã¥ãŒã«ãçµãŸããŠãã ãããã§ãããã¡ã³ããããªããŠãæžãã°å£²ãäžã倱ããªããŠã©ãããŒã§ããããšãã話ãšããçŸç¶çè² åµãšããŠããµããŒãåãOSã» ããã«ãŠã§ã¢ åé¡ãšDBè¥å€§ååé¡ããããã§ãåœé¢ã®ãã¡ã¯ïŒé±éããã«æ·±å€ã¡ã³ãããããŠãã ãããããšããïŒç¹ã«ã€ããŠç€Ÿå
ã§ã³ã³ã»ã³ãµã¹ãåãã«è¡ããŸããã ïŒïŒ ãªãã¡ã¯ã¿ãªã³ã° ãã¯ãããšããã·ã¹ãã å質æ¹åæéã®ç¢ºä¿ ããã¯ã3Mã®ã15%ã«ã«ãã£ãŒãã Google ãAtlassianã§ã20%ã«ãŒã«ãã®ã·ã¹ãã å質çã®ãè¡ãããšããåãçµã¿ã§ãã SHOPLISTã®ããã«äºæ¥æé·ã®ããã売ãäžãã«çŽçµããéçºä»¥å€ãåŸåãã«ãªã£ãŠããŸãã®ã§ããã°ãçŽæ¥çã«å£²ãäžãã«è²¢ç®ããªããã©ãéèŠåºŠã®é«ããœãããŠã§ã¢å質ã®ç¶æã®ããã®æŽ»åãè¡ãæéãåãããšãçµå¶è
ãšæç¢ºã«æ¡ã£ãŠããŸããããšèããŸããã ãã¡ããæ¬å®¶ã®ããã«ã€ãããŒãã£ããªä»äºã«äžå®æéãåœãŠãããšãã話ã§ã¯ãªããæè¡çè² åµã®è¿æžã«äžå®æéå
ãŠãããšãã話ã§ããå³å¯ã«ã¯éããŸãã ãã ãããã§æéãèšããæå³ãšããŠã¯ã売äžã«çŽçµããªããã©ãã·ã¹ãã å質ãäžããæŽ»åããšã³ãžãã¢ãè¡ããæéãšãã·ã¹ãã å質ãç¶æåäžãããããšãæåãšããŠæ ¹ä»ãããããšããšããã·ã¹ãã å質ãç¶æåäžãããããã®äžé£ã®æŽ»åãéããŠãçã£ãç¶æ
ã«ãªã£ãŠãã æ£åžžæ§ãã€ã¢ã¹ ãåã£æãããšãã®ïŒç¹ã§ããã ãªã®ã§ç€Ÿå
ã§ ãªãã¡ã¯ã¿ãªã³ã° æ ãšèšãããŠããé±ïŒæéã®æé確ä¿ããŸã確ä¿ããŸããã ã¡ãªã¿ã«é±ïŒæéã«æç¢ºãªçç±ã¯ãªãã§ããããã¯å®éã«4æéã§ã©ããŸã§ã·ã¹ãã ã® ãªãã¡ã¯ã¿ãªã³ã° ãè¡ãããã©ãããšããããšããããæå圢æãš æ£åžžæ§ãã€ã¢ã¹ ãåãé€ãããšãç®çãšããŠããããã§ãã ã©ãé²ãããïŒ èšç»ã¡ã³ããã³ã¹æéã®ç¢ºä¿ãšã ãªãã¡ã¯ã¿ãªã³ã° æéã確ä¿ããååã« ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã«å
ãŠããæéããªãœãŒã¹ã確ä¿ãããšããã§ãå
·äœçã«è¡ãã¹ãäºæã以äžã®ïŒç¹ã§æŽçãããŸããã ïŒïŒã·ã¹ãã åè³ªç¶æåäžã®ããã«æ°žç¶ããŠè¡ãå
容ïŒé·æçæœçïŒ ã»ïŒã«æã«äžåºŠã®å®æã¡ã³ããã³ã¹ ã»æ¥ã
ã®ãªãªãŒã¹ã®äžã§ ããã¯ãã° ãšããŠç©ãã ãªãã¡ã¯ã¿ãªã³ã° äœæ¥ã ïŒïŒ2020幎äžã«ãã¹ãã§å®äºãããã¹ãå
容 ã»ã€ã³ãã© ã¢ãŒããã¯ã㣠ã®èŠçŽã ã»ã€ã³ãã©æ§ç¯ã®ã³ãŒãå(ansibleã«ããç°å¢æ§ç¯ã®èªåå) ã»ããŒã«ã«éçºç°å¢ã®æ§ç¯ã³ã¹ãã®åæž( vagrant +ansibleã«ããæ§ç¯èªååïŒ ã»OS/ PHP / MariaDB ã®ããŒãžã§ã³ã¢ãã ã»ãããã€æ¹æ³ã®å€æŽïŒGitLab CIã«ãããããã€ïŒ ã»Git ãªããžã㪠äžã®äžèŠãªãã©ã³ãåé€ ã»DBäžã®ãµãŒãã¹äžäžèŠãªããŒã¿ã®åé€ ã»éçºã«ãŒã«ã ã¬ã€ãã©ã€ã³ ã®ææå ïŒïŒ2020幎äžã«ã§ããéãã§å®äºãããã¹ãå
容 ã»ãã°äžã«ååšããNotice/Warning朰ã ã»ãããã³ãŒãã®åé€ ã»ãªãœãŒã¹ãã¡ã€ã«ç®¡çåŒéããGit LFS ã®å°å
¥ ïŒïŒ2020幎äžã«ãããäœåããã察å¿ããã¹ãå
容 ã»ãã°äžã«ååšããNotice/Warning朰ã ã»ãããã³ãŒãã®åé€ ã»ãªãœãŒã¹ãã¡ã€ã«ç®¡çåŒéããGit LFS ã®å°å
¥ ã»ãžã§ã管çããŒã«ã®å°å
¥(cronã®å€ã ã) ïŒïŒ2020幎äžã«ãããªãå
容ïŒèª²é¡ãšããŠæã¡è¶
ãå
å®¹ïŒ ã» iOS ã®ãã€ãã£ãå®è£
ãSwiftã«ã®çµ±äžããããš ã» Android ã®ãã€ãã£ãKotlinã«çµ±äžããããš ã»ãµãŒãã®ç¬èª ãã¬ãŒã ã¯ãŒã¯ ãå
¥ãæ¿ããããš ã»DBãEC2 ã€ã³ã¹ã¿ã³ã¹ ããRDSã«å
¥ãæ¿ããããš Â åé
ç®ã§å
·äœçã«äœãè¡ã£ãŠãã£ããã«ã€ããŠã¯ä»åŸå
¬éãããèšäºãåç
§äžããã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã
ããã«ã¡ã¯ãã¯ã«ãŒãºæ ªåŒäŒç€ŸCTOã®éŽæšã§ãã 2020幎ã®7æããCROOZ SHOPLISTæ ªåŒäŒç€Ÿã®æè¡çµ±æ¬éšé·ãå
ŒåããŠãããæ¥ã
ã·ã¹ãã ãšéçºçµç¹ã®æ¥åæ¹åã«çŸå Žã®ãšã³ãžãã¢ãšãšãã«åãçµãã§ãããŸãã ä»ååœç€Ÿãéå¶ããŠãããã¡ãã·ã§ã³ ECãµã€ã ãSHOPLIST.com by CROOZãã«ãŠçµ¶è³æ Œéäžã®ã·ã¹ãã å質æ¹åã®è©±ãæ°åã«åããŠã話ãããããšæããŸãã  SHOPLISTã®ã·ã¹ãã ãæ¹åããããšãªã£ããã£ãã ãä»ã®SHOPLISTã®ã·ã¹ãã ã£ãŠãŒããããªãã¥ãŒã¢ã«ãããšãããããããããã®ïŒã SHOPLISTã®æ¥åãå
Œåããããã«ãªã£ãŠãäžçªåãã«ç€Ÿé·ã«èãããããšã§ããäœããããªãåºã ãã®ããšè©³çްãèããŠãããšããéçºãšã³ãžãã¢æ°åã«ãã€ãªã³ã°ãããšãããã·ã¹ãã ãã¬ã¬ã·ãŒéããŠéçºãè¶
ãã¥ãããããããªãã¥ãŒã¢ã«ã§ãŒãããŒã¹ã§äœãçŽããããªãããšããæèŠããã£ãããŸãçŸç¶ã©ããªèª²é¡ãããã®ã調ã¹ãŠã»ãããšã®ããšã SHOPLISTã«ã€ããŠã¯ãCROOZæ ªåŒäŒç€Ÿããå瀟åããäŒç€Ÿã§ãããšããšã®ã·ã¹ãã ã¢ãŒããã¯ãã£ ã¯ææ¡ããŠãŸãããããŸã宿çã«ãšã³ãžãã¢ã®å®äŸãè¡ã£ãŠããã®ã§å
šãå
æ
ãææ¡ããŠããªããšããããã§ã¯ãªãã£ãã®ã§ãããæ¹ããŠã·ã¹ãã äžäœãåé¡ãªã®ãã«ã€ããŠçŸç¶ã® ãœãŒã¹ã³ãŒã ãã€ã³ãã©æ§æãéçºäœå¶ãªã©ããããé¢ã§çŽïŒã«æçšåºŠãããŠèª¿æ»ããŠã¿ãŸããã ãããŠä»¥äžãå
·äœçã«èŠããŠããåé¡ã§ããïŒåé¡ã®ç²åºŠã¯ãã©ãã©ã§ãïŒ Â SHOPLISTã®åé¡ãã®â ïŒä»æ§ã®è€éãïŒä»æ§æžã®ç¡ãïŒãããã³ãŒãã®çµã¿åããã§ã調æ»åã³å®è£
ãæããããããã©ã³ãšã³ãžãã¢ããå¹ççã«è¡ããªãåé¡ã äžçªã¯ããã ãšå人çã«ã¯æã£ãŠããŸãããšã«ãã仿§ææ¡ã«æéãããããå
¥å£ã®Controllerããé ã«èªãã§ãããšDBããäœãã®å€ãšã£ãŠãã®å€ã«å¿ããåå²ãè€æ°ãããåå²ãäžåäžå远ã£ãŠãããšãçµå±DBã®æ€çŽ¢çµæãnullã§ããã¹ãŠã®æ¡ä»¶åå²ãæããçµå±ãã£ãŠãããšã£ãŠTOPããŒãžã«ãªãã€ã¬ã¯ãããŠãã ããããâŠãããã§ãã®è©±ãå€ããããããšã³ãžãã¢ã«èãããããã®äººç¥ã£ãŠããããšå¥ã®ãšã³ãžãã¢ã«èãããã«èšããããã®ãšã³ãžãã¢ã«èããšå®ã¯ïŒå¹Žåã«çµäºããæ©èœã§ãçµå±Controllerã®äžã®100è¡ã®åå²å¶åŸ¡ã§ãããªãã§ããïœãã¿ãããªããšãå®éã«ãããŸããã ä»ã«ãDBã® CRUD ã§èŠããšããŒã¿ã¯çæãããŠããã ãã©ãåç
§ãããŠãªããªãïŒã¿ãããªãã®ãããã®ããŒãã«äœïŒã¿ãããªãã®ããã£ãŠãšã«ãããããããããã³ãŒããªãã ãã©ãäœã®ç®çã§ãã®åŠçãããã®ãã仿§æžãšããŠããœãŒã¹ã³ã¡ã³ããšããŠãæ®ã£ãŠãªãã®ã§ããããããªãããšã¯ãã£ãŠãçŸç¶ã ãšãã¹ãã³ãŒããªã©ããªãCICDç°å¢ãç¡ãã®ã§ãåŠçãæ¶ããçµæã§äžå
·åãèµ·ãããªã¹ã¯ã«å¯Ÿãã ãªã¹ã¯ãããž ã®æ¹æ³ããªãèœåçã«ååãã¥ãããšãã話ãèããŸããã æ±ºã㊠ãœãŒã¹ã³ãŒã ãæ±ãããã§ã¯ãªãã§ããCROOZã§ã¯éå»ã« SNS ã ãœãŒã·ã£ã«ã²ãŒã ãéå¶ããŠãããŸãããããã£ãœã©ãã£ã¡ã®æ¹ããœãŒã¹ã¯æ±ãã£ãã§ããSHOPLISTåºæã®åé¡ãšããŠã¯ä»æ§ã®è€éãïŒä»æ§æžã®ç¡ãïŒãããã³ãŒãã®çµã¿åããã ãšèããŠããŸãã  SHOPLISTã®åé¡ãã®â¡ïŒOSã» ããã«ãŠã§ã¢ ãå€ãïŒãµããŒãåãç¶æ
ïŒåé¡ SHOPLISTã®ã€ã³ãã©ã¯ã2014幎ã«ãªã³ãã¬ãã¹ãã AWS äžã«ç§»è¡ããã®ã§ããããã®éOSã» ããã«ãŠã§ã¢ ããã®ãŸãŸã®ããŒãžã§ã³ã§ ã¯ã©ãŠã ã«ç§»è¡ããŠããŸãããªã®ã§EC2ã䜿ã£ãŠã¯ãããã®ã®ãæ¬åœã«ãªã³ãã¬ãã¹ã®ãµãŒããä»®æ³ãµãŒãã«çœ®ãæãã£ãã ãã§ã ã¯ã©ãŠã ãæèããããã°ã©ã å®è£
ã«ã¯ãªã£ãŠããªãéšåãå€ãç¶æ³ã«ãªã£ãŠããŸããã ããã¯ããã§åé¡ãªã®ã§ããããã£ãšåé¡ãªã®ã¯OSã» ããã«ãŠã§ã¢ ããŒãžã§ã³ãå€ãããšãäžäŸã§ããOS㯠CentOS 6.4ç³»ã PHP ã«è³ã£ãŠã¯5.4ç³»ã§ãããã¡ãªã¿ã«PHP5.4ç³»ã®ãµããŒãã¯2015幎ã«çµäºããŠããã»ãã¥ãªãã£é¢ãçç£æ§é¢ã§å€§ããªèª²é¡ãããç¶æ³ã§ããããã£ãšãã»ãã¥ãªãã£ã®è©±ã ãã§ããã° Apache ã®èšå®ã AWS WAFãªã©ãè€æ°ã®ãµãŒãã¹ã ããã«ãŠã§ã¢ ã®çµã¿åããã«ãã ãªã¹ã¯ãããž ã¯ãŸã ã§ããéšåãããã®ã§ãããåœç¶ãã¹ãŠãã»ãã¥ãªãã£ãªã¹ã¯ããŒãã«ã¯ã§ããªãã§ãããçç£æ§ã®è©±ã§ãããšåœããåã§ããæè¿ã©ã€ãã©ãªã SDK ã¯ãµããŒãåãã® PHP ã«å¯Ÿå¿ããŠããããããªãã®ã§æ©æµãåãããéçºã«èŠåŽããããšã«ãªããŸãã äžçªã®åé¡ã§ã®äžçªã®èª²é¡ã¯ã ãšã³ãžãã¢ã® å¿çç ãªè² è·ã倧ããããš ããŸãcomposerã§äœãå
¥ããããšããŠã PHP ã®ããŒãžã§ã³ãå€ããŠã€ã³ã¹ããŒã«ã§ããªããã»ãã¥ãªãã£ãµããŒããçµãã£ãŠããŠãé倧㪠èåŒ±æ§ ãèŠã€ãã£ãŠãçŽããªãå¯èœæ§ãããç¶æ
ã ãšã å¿çç ãªè² è·ã¯å€§ããã§ãã å®éã«ãµããŒãåãããŒãžã§ã³ã䜿ãç¶ããããšã«èããããããããŠããŸã£ããšã³ãžãã¢ãããããã§ãã ãã®ä»SHOPLISTãæ±ããŠããåé¡ Â SHOPLISTã®ã·ã¹ãã ã«ã¯ãã®ä»ã«ãæ°ã
ã®åé¡ããããŸãããäž»ã ã£ããã®ã ãåæãããšã ã»ãããã€ã rsync ã§è¡ã£ãŠããŠãªãªãŒã¹çŽåŸã«äžå
·åãåºãéã«åãæ»ãã«èŠåŽããåé¡ã ã»ããŒã«ã«éçºç°å¢ã®æ§ç¯ã«äººã«ãã£ãŠã¯1æ¥æœ°ããåé¡ã ã»Gitãéãåé¡ã ã» PHP ã®Warning / Noticeä»¶æ°ã1ãªã¯ ãšã¹ ãããã300ãè¶
ããŠããåé¡ã ã» PHP ã®å®æ°å€ãããŠç®¡çã§ããªããªã£ãŠããããããªããçæïŒåé¡ãšããããã¯çæïŒã ã»è¶
å±äººåããŠããŠã ãã©ãã¯ããã¯ã¹ ã«ãªã£ãŠããåé¡ã ã»CI/CDç°å¢ãååšããªãïŒCI/CDãå®è·µã§ããªãåé¡ã ã» iOS ã®å ŽåSwiftãšObject-Cã Android ã®å Žå Java ãšKotlinãæ©èœæ¯ã«æ··åšããŠããåé¡ã ãªã©ãªã©ããããããããŸããã SHOPLISTã®æ ¹åºã«ããåé¡ã¯ãªã«ãïŒ åé¡ãã²ãšãšããåºãããšããã§ãæ£çŽãªææ³ãèšããšãããã話ã ãªãšæããŸããã ãããã ã¬ã¬ã·ãŒã·ã¹ãã ã®è©±ã§ãã äºæ¥æ¡å€§ã売äžãäžããããã«ç¶ãè¶³ãç¶ãè¶³ãã§éçºãç¶ããçµæãããã¥ã¡ã³ãäœæãçµäºããæ©èœã®ããã°ã©ã ãããŒã¿ã®åé€ã ãªããžã㪠äžããã®äžèŠãã©ã³ãã®åé€ã» ããã«ãŠã§ã¢ ã®ããŒãžã§ã³ã¢ãããªã©ã売äžã«çŽçµããªãããšãåŸåãã«ããããåŸãªãç¶æ³ãšãªãããããŠåŸåãã«ãããã®ãæ°žé ã«çæã§ããªããªã£ãŠæè¡çè² åµãšããŠèç©ãããã ãªã®ã§ããã ãã ã£ããæ¥æé·ãããµãŒãã¹ã§ã¯ããèã話ãªã®ã§ããããã°ããªãšæããã®ã¯ ãã®åé¡ãåããçºçããŠããã®ã«ãé¢ãããé·ãéæŸçœ®ãããŠãããããçŸå Žã®ãšã³ãžãã¢ããã©ã³ããŒïŒWEBãã£ã¬ã¯ã¿ãŒïŒã圹å¡ã®äžã§ æ£åžžæ§ãã€ã¢ã¹ ãåããŠåé¡ã«å¯ŸããŠæ¥œèгçãªèŠéãã«ãªã£ãŠããããš ã§ãã å
·äœçãªè©±ã§ãããš ã» ãœãŒã¹ã³ãŒã ã¬ãã«ã®èª²é¡ã å·¥æ° ãç§»è¡èšç»ãååã«æ€èšããªã段éã§ãªãã¥ãŒã¢ã«ãããããªãããªãã¥ãŒã¢ã«ããã° ã¬ã¬ã·ãŒã·ã¹ãã ããè±åŽã§ããã ã»DBãµãŒãã®å®¹éã倧ãããªã£ãŠãããããžã§ãã³ã°ã«å¯Ÿå¿ããEBSã ãã容éã®åé¡ã¯ãã£ãã倧äžå€«ã ãªã©ããã¡ããããã¯ããã ãã©ã¡ãã£ãšå·éã«èãããšãã«éçŸå®çã ã£ããããã¹ãŠã®åé¡ãã¯ãªã¢ã§ããªãã£ãããããããŸãããªããïŒãšæããšããããããã¯ããã®ãã£ããã®è©±ã«æ»ããšç€Ÿé·ãã質åã®ãã£ããªãã¥ãŒã¢ã«ãããšããããããããããã®è³ªåã«ã€ããŠã¯ããè¶
æŠç®ã§ãããããããããã©ã çŸç¶ã®ããã¥ã¡ã³ãããªãè¶
å±äººåããŠããç¶æ³äžã§ããã®ã»ãã®æ©èœéçºãè¡ããªããé²ããã®ã¯æ¥µããŠéçŸå®çã§ããŸã㯠ãªãã¡ã¯ã¿ãªã³ã° ããŒã¹ã§ã§ããéšåãŸã§ã¬ã¬ã·ãŒãªéšåçŽããŠãããŸããããã ãšããè©±ãææ¡ããŸããã  ä»åã¯ãããŸã§ã 以éãæ°åã«åããŠSHOPLISTã«ããã ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã«åããã·ã¹ãã æ¹åã®è©±ãæçš¿ããŠãããŸããããã®èšäºãèªãã§ããŠä»ãŸãã«æé·ããŠãããµãŒãã¹ã®éçºã«æºãã£ãŠãããšã³ãžãã¢ãããã£ããããŸããããæ¬åœã«ä»ã®ãã¡ã« ãªãã¡ã¯ã¿ãªã³ã° ãã¹ãã§ãã ãŸãæ¢ã«åããããªç¶æ³ã«ãªã£ãŠããäŒæ¥ã®æ¹ããããŸããããïŒãããŸã§ãäžäŸã§ããïŒåœç€Ÿã® ã¬ã¬ã·ãŒã·ã¹ãã è±åŽã«åãå®è·µããããšãåèã«ãªãã°å¹žãã§ãã ------------------------------------------------------------------------------------------------- â»2020幎ã®å
容ãèšäºã«ããŠããã2020幎11æä»¥éPHP7ãµããŒãåããã¯ãããšãã èåŒ±æ§ ãªã¹ã¯ãžã®å¯ŸåŠã¯å®äºããŠãããŸãã Â