ããã«ã¡ã¯ãã¹ã¯ãšãã®ã€ã®ãªã¹æ¯ç€Ÿããã³ãã³ãªãã£ã¹ã§åããšã·ãã¿ããªã§ããã¢ããªãã£ã¯ã¹&ã€ã³ãµã€ãéšçœ²ã®ããŒã¿ãµã€ãšã³ã¹éšãæ
åœããŠããŸããããŒã¿ãšAIã§ã¹ã¯ãšãã®ãã¡ã³ãšã²ãŒã ã®é¢ä¿æ§ãæ·±ããããã¿ãäœã£ãŠããŸãã ã¹ã¯ãšãæ¬§å·æ ç¹ã§ã¯Google CloudãæŽ»çšããŠã«ã¹ã¿ããŒããŒã¿ãã©ãããã©ãŒã (CDP)ã®éçºã»éçšãè¡ã£ãŠããŸããå
æ¥ããã®åãçµã¿ã«ã€ããŠGoogle Cloudäž»å¬ã®Google Cloud Next London 2023ã«ãŠçºè¡šããŸãããä»åã¯ãããã§ã®çºè¡šå
å®¹ãæ¥æ¬èªã§ãå
±æããããã«ããã®ITãšã³ãžãã¢ããã°ã«å¯çš¿ããããšã«ããŸããã ã«ã¹ã¿ããŒããŒã¿ãã©ãããã©ãŒã (CDP)ãšã¯ CDPã¯ããžãã¹å
šäœã®ããŒã¿ãåéãæŽ»çšããŠããã·ã¹ãã ã§ããäžè¬çã«ã¯ãã客æ§äžäººã²ãšãã®ããŒã¿ãåéãã管çããåæããã ãã§ãªããããŒã±ãã£ã³ã°ãããã¢ãŒã·ã§ã³ã«æŽ»çšããŸãã ã¹ã¯ãšãæ¬§å·æ ç¹ã®CDPéçºã®çµç·¯ ãã³ãã³ã®ã¢ããªãã£ã¯ã¹&ã€ã³ãµã€ãéšçœ²ã¯ã2009幎ã«ã¹ã¯ãšãã«è²·åãããã¢ã€ãã¹ãšããã²ãŒã éçºäŒç€Ÿã®ããŒã¿åæããŒã ã®ã«ãŒããæã¡ãŸããã¢ã€ãã¹ã¯2007幎ã«ã²ãŒã ãã¬ã€ããŒã¿ã®åéãåæãæ©æ¢°åŠç¿ã®é©çšãã²ãŒã æ¥çã«ãããŠãã¡æ©ãå°å
¥ããã¹ã¯ãšãã«çµ±ååŸããã®æŽ»åãç¶ç¶ããŠããŸãã 2007å¹ŽåœæãããŒã¿åæåºç€ãšããŠMicrosoft SQL Serverãå©çšããŠããŸãããã2013幎é ã«ã²ãŒã ã®ãªã³ã©ã€ã³åã«äŒŽãããŒã¿éã®å¢å ã«äŒŽãPlutoãšããAWSããŒã¹ã®å
補ã·ã¹ãã ã«ç§»è¡ããŸããã CDPéçºã®çŽæ¥ã®ãã£ããã®äžã€ã¯2018幎ã«å°å
¥ãããæ°ãããã©ã€ãã·ãŒæ³(GDPR)ã§ããããã以åã«äž»æµã§ãã£ãããŒã±ãã£ã³ã°ææ³ã¯ããŠãŒã¶ãŒããŒã¿ãæäŸããäŒç€ŸããããæŽ»çšããããŒã¿é£ååã®æ¢æãœãªã¥ãŒã·ã§ã³(äŸãã°ãData Management Platformãªã©)ã«äŸåããŠããŸãããããããGDPRã®å°å
¥ã«ãããããã®ææ³ãå¶éãããèªç€Ÿã§ããŒã¿ãéããå¿
èŠæ§ã«çŽé¢ããŸããããã®çµæãæ¢åã®ã²ãŒã ããŒã¿åæã·ã¹ãã ã§ããPlutoã眮ãæãã圢ã§ãGoogle CloudãããŒã¹ãšããSingle Gamer View(SGV)ãšããã·ã¹ãã ãéçºãããããŒã±ãã£ã³ã°ããŒã¿ããŠãŒã¶ãŒããŒã¿ãã²ãŒã ããŒã¿ãäžå
åãããŸããã CDPã®åææŽ»çšã»ã¢ã¯ãã£ããŒã·ã§ã³ ããŒã¿ãçµ±åããããšã§ããŠãŒã¶ãŒã®è¡åã®ãã¹ãŠãã€ãŸãã¡ãŒã«ãåºåãžã®ã¯ãªãã¯ã賌å
¥ãã²ãŒã ãã¬ã€ãããªãã³ã·ã§ã³ãŸã§ãåæã§ããããã«ãªããŸãããããã«ãã²ãŒã ã¯å€ãã®äººã«ãšã£ãŠç涯ã«ãããæ
ç±ã§ããããšãèžãŸãã5ïœ10幎åäœã§ã®ãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åæãè¡ã£ãŠããŸãã ãŸãããã®ã·ã¹ãã ã¯ããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãšãã¡ã³ãšã®é¢ä¿æ§ç¯ãæäŸããeCRM CDPæ©èœãå®çŸããŠããŸããäžæ¹ããœãŒã·ã£ã«ãã£ãã«ãã¡ãã£ã¢ã®ã¢ã¯ãã£ããŒã·ã§ã³ãžã¯æ¢æã®CDPãã³ãã¯ã¿ãŒãšããŠæŽ»çšããããšã§å¯Ÿå¿ããŠããŸãã AIããªãã³ã»ããŒã±ãã£ã³ã° CDPã®æ¬åœã®äŸ¡å€ã¯ãåã«ããŒã¿ãåæããã ãã§ãªãããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ãã®åäžã«åœ¹ç«ãŠãããšã«ãããŸããããŒã¿ãµã€ãšã³ã¹ããŒã ã§ã¯ãæ§äœã²ãŒã ã®äœéšçã®ã¬ã³ã¡ã³ãããããã¬ã€äžã®ã²ãŒã ã®ç¶ç¶ä¿é²ããããã¬ã€ã¹ã¿ã€ã«ã®çè§£ãšé©åãªã¡ãã»ãŒãžã³ã°ããªã©ãè¡ã£ãŠããŸãã ããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãšãã£ãŒãããã¯ã«ãŒã ãŠãŒã¶ãŒããŒã¿ã«åçš®è¡åããŒã¿ãçŽã¥ãããšã§ãå®éã®ãŠãŒã¶ãŒã®è¡åãããªã¬ãŒãšããã³ãã¥ãã±ãŒã·ã§ã³ãèªåã§è¡ããããã«ãªããããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãå®çŸããŸãããããã«ãã¡ãã»ãŒãžãåãåã£ã人ã®ãšã³ã²ãŒãžã¡ã³ããåäžãããã©ãããäŸãã°ãã¬ã€ãæ¢ããã²ãŒã ãå床起åãããã©ããããã£ãŒãããã¯ãããèªåã§ã¡ãã»ãŒãžãæé©åãããŠãããŸãã äœéšçã®ã¬ã³ã¡ã³ã ã¹ã¯ãšãã®æ§äœã®ã«ã¿ãã°ã¯è±å¯ã«ãããŸããããã®æ°ã¯ããŸãã«ãå€ãããŠãŒã¶ãŒãéã³ããã²ãŒã ãšå·¡ãåããªããšããããšã課é¡ãšæããŠããŸãããã®èª²é¡ã®è§£æ±ºã®ãããä»éãã§ããã²ãŒã ã®ã¹ããŒãªãŒãã¯ãªã¢ããããšãã²ãŒã ããŒã¿ããæ€ç¥ããã¿ã€ãã³ã°ã§å人ã«åãããã¿ã€ãã«ã®äœéšçã®ã¬ã³ã¡ã³ããŒã·ã§ã³ãè¡ãä»çµã¿ãéçšããŠããŸããã¢ãã«ã¯ãã¬ã³ã¡ã³ãããäœéšçãå®éã«ãã¬ã€ããããã©ãããããã¬ã€æéããã£ãŒãããã¯ãšããŠåãåããåŠç¿ããæé©åããŸãã ãã¬ãŒã€ãŒã®ç¶ç¶ã»åŸ©åž°ã®åäž ã²ãŒã ã賌å
¥ããŠããã£ãŠçµããã§ã¯ãªããå®éã«ãã¬ã€ããŠãããããã®é
åãäœæããŠãããããšãããã¡ã³ãšã®é·æçãªé¢ä¿æ§ç¯ã«ã€ãªãããšèããŠããŸãã ããã§ãã¬ã€ã¹ã¿ã€ã«ã奜ã¿ã®ãã£ã©ã¯ã¿ãŒãèå³ãæã€ã³ã³ãã³ããç¹å®ãããã¬ã€ã€ãŒã®ããŒãºã«åãããåå¥ã®ã³ãã¥ãã±ãŒã·ã§ã³ãè¡ã£ãŠããŸããäŸãã°ãPvPã奜ããã¬ã€ã€ãŒã«PvPã³ã³ãã³ãã®ææ°æ
å ±ãæäŸããããšã§ããã¬ãŒã€ãŒã®ãšã³ã²ãŒãžã¡ã³ããç¶ç¶çãé«ããããšãã§ããŸããå®éããã®ããŒã¿ããªãã³ãªã¢ãããŒããå°å
¥ããåŸãç¹å®ã®ã²ãŒã ã«ãããŠç¶ç¶ã»åŸ©åž°ãããã¬ã€ã€ãŒã倧å¹
ã«å¢å ããŸããã 2024幎ã®ããŒã±ãã£ã³ã°ROI枬å®ïŒCookieèŠå¶ãšMMMæŽ»çš ããžã¿ã«åºåã®ãã©ã€ãã·ãŒèŠå¶ãå³ãããªããç¹ã«ãµãŒãããŒãã£Cookieã®æ®µéç廿¢ãé²ãäžãããŒã±ãã£ã³ã°è²»çšå¯Ÿå¹æã®æž¬å®ãé£ãããªã£ãŠããŸãããã®çµæãããŒã±ãã£ã³ã°ããã¯ã¹ã¢ããªã³ã°ïŒMMMïŒãåæ³šç®ãããŠããŸããMMMã¯ãæ§ã
ãªããŒã±ãã£ã³ã°æœçã売äžã«äžãã圱é¿ãæšå®ããããããã®æœçã®è²¢ç®åºŠãè©äŸ¡ããããã«äœ¿çšãããå€å
žçãªçµ±èšææ³ã§ãã 瀟å
ã§ããŒã¿ãäžå
åãããŠããªãå Žåã¯ãMMMãããžã§ã¯ãã¯å¿
èŠãªããŒã¿ã®å®çŸ©ãããŒã¿ä¿ç®¡å Žæã®ç¹å®ã»æé
ãããŒã¿ã¯ãªãŒãã³ã°ãæŽåœ¢ãªã©ãã¢ããªã³ã°ã®æºå段éã ãã§æ°ãæãèŠãããã®ã§ããã çŸåšã¯CDPäžã«ããŒã¿ãçµ±å管çãããŠãããããå¿
èŠãªããŒã¿ã«å³åº§ã«ã¢ã¯ã»ã¹ããçŽ æ©ãã¢ãã«ã®PoCäœæ¥ã«çæããããšãã§ããããã«ãªããŸããããŸããGoogle Cloudãæ¡çšããŠããããšã§ãSupermetricsãšãã£ãããŒã¿ã®äžå
åããŒã«ããGoogle Trendã®ãã¬ã³ãããŒã¿ãžã®ã¢ã¯ã»ã¹ã容æã«ãªããã¢ãã«ã®ç²ŸåºŠãé«ããŠããŸãã Single Gamer Viewã®CDPæ©èœã®æè¡çãªã»ããã¢ãã åºæ¬çã«ã¯Google Cloudã®ãµãŒãã¹ãç¹ã«ãµãŒããŒã¬ã¹ãšåŒã°ãããµãŒããŒç®¡çãäžèŠãªãµãŒãã¹ãéžãã§æ§ç¯ããããšã§ãå°äººæ°ã§ã®éçšãå®çŸããŠããŸãã ããŒã¿ãœãŒã¹: ã²ãŒã ã GA360ãã¡ã³ããŒã·ãããã¡ãŒã«ãã»ãŒã«ã¹ããŠã§ãåºå(Supermetrics) ãã€ãã©ã€ã³: Pub/Subã Dataflowã BigQuery ãŠãŒã¶ãŒã¢ã¯ãã£ããŒã·ã§ã³: Vertex AI (ãããã¯CI/CD Docker->GKE)ããã¡ãŒã«ããŠã§ãåºåã«ãŠãŒã¶ãŒãªã¹ããå
±æ ããŒã éã®é£æºãšAIã·ã¹ãã ã®ã¢ãžã£ã€ã«ãªãªãŒã¹ ãã©ã³ããããžã£ãŒãã³ãã¥ããã£ãããžã£ãŒãããŒã¿ã¢ããªã¹ããããŒã¿ãµã€ãšã³ãã£ã¹ããããŒã¿ãšã³ãžãã¢ãããŒã¿ãããã¯ã·ã§ã³ãŸã§ãç°ãªãéšçœ²éã®é£æºäœå¶ãäœããçµç¹ãšããŠAI掻çšã«ææŠããŠããŸãããããžã§ã¯ãã¯éåžžãããŒã¿ã¢ããªã¹ãããããžã§ã¯ãã®ææ¡æžãäœæããããžã§ã¯ãã®äŸ¡å€ã詊ç®ããããšããå§ãŸããŸãããã®åŸãã³ãã¥ããã£ãããŒãžã£ãŒããã©ã³ãããŒã ãã¬ãã¥ãŒãããã¬ã€ã€ãŒãã³ãã¥ããã£ã®ããŒãºã«åã£ãŠããã確èªããŸãã
ããã«ã¡ã¯ããã·ã€ã§ãã è¿å¹Žã“ãªã³ãã¬ååž°” ãšããèšèãããèãããããã«ãªããŸããã 人ã
(ãšã·ã¹ãã ) ã¯ãã¯ã©ãŠããããªã³ãã¬ã«åž°ã£ãŠããŠããã®ã§ãããã? ãªã³ãã¬ååž°ãšãã話é¡ã«ãããŠãå Žåã«ãã£ãŠè©±é¡ã®äžå¿ãå¿
ãããåèŽããŠããªãããšãããããã«æããŠããŸãã倧ããã¯ãå®éã«ã¯ã©ãŠããããªã³ãã¬ã«ç§»è¡ã宿œããã»ãã人ã®èгç¹ãšãããã倧ããªçŸè±¡ãšããŠèгå¯ããŠãã人ã®èгç¹ã®å·®ã§ãããããã«æããŸãã 仿¥ã¯ãããããã¶ãã®èããšããŠãŸãšããã¹ãæžãåºããŠã¿ãŸãã (èŠèãããæ
å ±ã®åœ±é¿ãå€åã«å«ãŸããŸããããã€ãæ«å°Ÿã«åèã«ãããŠããã ããæ
å ±ãžã®åç
§ã眮ããŠãããŸã) “ãªã³ãã¬ååž°” ã¯å¢å ããŠãã ãŸãããã§èšããªã³ãã¬ã«ã€ããŠãèªåã§ç®¡çããã€ã³ãã©ã®ããšãæããŠãããšããŸããäŒç€Ÿã®ããã¢ããµãŒããŒã«ãŒã ãåçšããŠå°æç®¡çããããŒã¿ã»ã³ã¿ãŒã®äžè§ãªã©ãå«ãŸããã§ãããã ãã®ãªã³ãã¬ãž “ååž°” ãšããããšã§ãããããªã³ãã¬ã«åž°ã£ãŠããŠãããšããããšã§ããåž°ã£ãŠãã (ãã) ãšããããšã¯ããã®åã«ã©ããã«è¡ã£ãŠãã (ãã) ãšããããšã§ãããã®å€ãã¯ãã¯ã©ãŠããããæ£ç¢ºã«ã¯ãããªãã¯ã¯ã©ãŠãããã®ååž°ã§ãããã çŸåšã®ãããªãã¯ã¯ã©ãŠãåžå Žã¯å¹Žã
æé·ããå©çšè
ã»å©çšéã¯ãŸã ãŸã å¢å ããŠããéäžã§ããæ°å¹Žãéäžããšããããªãã¯ã¯ã©ãŠãã«è¡ãã·ã¹ãã ãä»ã»ã©å€ãã¯ãããŸããã§ããããæ»ãã«ããŠããŸã å€æãæ©ãããã¿ã€ãã³ã°ã§ããã å¿
ç¶çã«ãã¯ã©ãŠãç§»è¡ãé²è¡ããŠããçšåºŠæéããã£ãä»ã ããããååž°ã®æ°ããŸãå¢ããŠãããšããèŠæ¹ãã§ããã§ãããããããç®ç«ã£ãŠããªã³ãã¬ååž°ãéå°ã«ã»æ³å以äžã«å¢å ããŠãããšãšãããããŠããé¢ãããã®ã§ã¯ãªãã§ããããã ããã§èšãã¯ã©ãŠããšã¯? ããŠããã§ãååž°ã®å
ã§ãããã¯ã©ãŠãã«ã€ããŠèããŠã¿ãŸãããã ãããã®å€ãã¯ãäžã«æžããããã«ãããªãã¯ã¯ã©ãŠãã ã£ããšæãããŸããèŠããã«ãAWS ã Google CloudãAzure ãªã©ã§ããä»ã«ããããããããŸãã ãããšã¯å¥ã«ããã©ã€ããŒãã¯ã©ãŠããšããåºåããããŸããããã¯ãããªãã¯ã¯ã©ãŠãåæ§ã«ä»æã§éåãããããã®ããããŸããããªã³ã㬠(ã«åºåãããèšå) ã«æ§ç¯ããå Žåãå€ããåºåçã«ã¯ãªã³ãã¬åŽ (ãããã¯ãã®ãã®) ãšèããã¹ãã§ãããã ãšããã§ãæè¿ã¯ã¯ã©ãŠããã€ãã£ããšããèšèãå€ãçšããããããã«ãªããŸãããããã¯ã·ã¹ãã ã®çœ®ãå Žæã«é¢ä¿ãªãã¯ã©ãŠããããèšèšã»éçšãããããšãæãèšèã§ãããã€ã³ãã©ãæããŠã® “ã¯ã©ãŠãããã®ç§»è¡” ã®ãããªæèã§äœ¿ããããã®ãšã¯éããŸããåŸã§ãè§ŠããŸããããªã³ãã¬ååž°ããã«ããã£ãŠãã¯ã©ãŠããã€ãã£ãã¯å
±åã§ãããã®ã§ãã ååž°ã®çç± å€ãããããªãã¯ã¯ã©ãŠãããã®ååž°ãæããŠãããšããŠããã®çç±ã¯äœã§ããããã 以äžãå€ããšèããããŸãã(ãŸããäžéã§èšãããŠããããã§ã) è²»çš ã»ãã¥ãªãã£ã»ã¬ããã³ã¹ æ§èœã»å質 ããããã¯ã©ãŠããžç§»è¡ãã以åã®ã»ããåªããŠããããŸãã¯ã¯ã©ãŠãã§æã£ããããªæ¹åã»å¹æãåŸãããªãã£ãããååž°ãããšããããšã§ãããã ããã§åºãŠããåé¡ã¯ãããªãè€éã§ãã äžèšã¯ãããããã¯ã©ãŠããžã®ç§»è¡ã詊ã¿ãéã«è©Šç®ããããã©ã³ãã³ã°ããããããã®ã§ãããç§»è¡å
ã§ã®å©ç𿹿³ãšããªããããªæ³å®ãããŠããªãã£ãããšããã®ãã²ãšã€ãéèŠãªç¢ºèªãã€ã³ãã§ãã ããšãã°ãè²»çšã§èšããšããªã³ãã¬èšåã¯æžäŸ¡ååŽæéãå®ããŠãäžå®ã®æéã§äœ¿çšããåæã®èšç®ãããŸãããã®å Žåã䜿ãéã«ãããããè²»çšãããã£ãŠããŸãã®ã§ãæ¯æ¥ 100% 䜿ããããªäœ¿ãæ¹ãããã¯ã§ãããããã¯ã©ãŠãã§ãããããªãããã«èŠç©ãã£ãŠããŸããšãæ°å¹Žéãã®ãªãœãŒã¹ãå°æã§äœ¿ãã£ã±ãªããšããæ³å®ã«ãªããããã§ã¯ã¯ã©ãŠããµãŒãã¹ã§ã¯éåžžã«é«é¡ã«ãªã£ãŠããŸããŸãã å¿
èŠãªãšãã«å¿
èŠãªã ã䜿ããã®ãã¯ã©ãŠãã®ãããªã®ã§ãæ¬æ¥ã¯ãã®ããã«æ³å®ãã€ãã£ãŠèšç®ããå¿
èŠããããŸãã(ãšã¯ãããããé£ããã®ã§ãã) ã»ãã¥ãªãã£ã«ã€ããŠãåæ§ã§ãå
ã
ãå®å
šãªå Žæããã¹ã¿ãŒãããŠãããªã³ãã¬ãšã¯éã£ãå®å
šç¢ºä¿ã®èšèšãå¿
èŠã«ãªããŸãããŒããã©ã¹ãã®ãããªèãæ¹ã¯ãããã£ããšããããçãŸãããã®ã§ãããã ååž°ã®çµæ ããŠãã©ããã£ãçç±ã«ããããªã³ãã¬ã«åž°ã£ãŠãããšããŸãã ãã®çµæã¯ãã¯ã©ãŠãç§»è¡ã®å€±æãééã»è³æºã®åªå€±ãæéã®ç¡é§ã ã£ãã®ã§ãããã? ããã§ã¯æ²ããããŸãã ã¯ã©ãŠãç§»è¡ã«ãããåŸããããã®ã«ç®ãåããŠã¿ãŸããããããã¯ãããšãã°æ¬¡ã®ãããªãã®ã§ãããã ã¢ããªã±ãŒã·ã§ã³ã®æè»ãªæ§æ ãã°ããããã〠åçã¹ã±ãŒãªã³ã°å¯Ÿå¿ ãŸãŸãªããªãã€ã³ãã©ãžã®èæ§ãšéçšç¥èŠ äœ¿çšãããã¬ãŒã ã¯ãŒã¯çã®ã¢ããããŒããžã®è¿œåŸ ãã¹ãŠã§ã¯ãªããŠããã¯ã©ãŠãç§»è¡ã®ããã«ãããã£ãããšã®å¯Ÿå¿ãè¿«ãããã®ã§ã¯ãªãã§ããããããããŠããããã¯ãããªãã¯ã¯ã©ãŠãã§ããæå¹ãªãã®ãšããããã§ã¯ãªããã¢ãã³ãªã¢ããªã±ãŒã·ã§ã³ã«ã¯å¿
é ãªæ©èœã§ãããç¹åŸŽã§ãã ã¯ã©ãŠãã§ãããã«å¯Ÿå¿ã§ããŠããã°ããªã³ãã¬ååž°ãããšãã«ãããããæã£ãŠåž°ãããšãã§ããã®ã§ãã
â»æ¬èšäºã®ç»åã¯ã https://logmi.jp/tech/articles/327868 ãããåŒçšããŠããŸãã ç¡ç äžè¶³ã®dskã§ãã ãããªãã§ãããã¯ã©ãŠããããã€ããŒãšèããŠæãæµ®ãã¶ã®ã£ãŠ AWS , Azure , GCP ãå€ããšæããŸãã ããããããã§ããããŸã¯ãããã£ãã GCP ã«æºããããšãå€ãã®ã§ããŸã£ããã« viva GCP! ãšçããŠããŸããšæããŸãã ãããªäžãegressããã¡ããã¡ãå®ãïŒ ã謳ãæå¥(ä»ã«ããããšããããã©)ã® Linode ã䜿ã£ãŠã¿ãŸããïŒ Linode ãšã¯ Linode ã¯Akamai瀟ãæäŸãã IaaS ãã©ãããã©ãŒã ãããã€ããµãŒãã¹ã§ããããªããŒãããšèªã¿ãŸãã ãªãåç§°ã«ãIaaSããããããä»ããŠãã®ããšãããšããããŒãžããµãŒãã¹ããçŸåšã¯ã»ãšãã©ãªãããã§ãããã ãªã®ã§ããLinode ã ãã§ããã³ããšã³ãããããã¯ãšã³ããŸã§æ§æãããã®ã¯ã¡ãã£ãšææå°æ©æã¯åŠããŸããã ãããã©ããããŠãŒã¹ã±ãŒã¹ãããã®ããšãããšã (ã¡ãã£ãšãã)ããŒã¿å å·¥ãšåæ ä»äŒæ¥ãä»ããŒã ãšã®ã³ã©ãã¬ãŒã·ã§ã³æã®ã¯ãŒã¯ããŒãå®è¡ç°å¢ è² è·è©Šéšå®è¡ç°å¢ è匱æ§èšºæãã»ãã¥ãªãã£ãã¹ã宿œç°å¢ ãšèšã£ãããã±ãŒã·ã§ã³ãåããªãå°èŠæš¡ç°å¢ãã䜿ã£ãŠã¿ãã®ããããšããããŸãã ã¡ãªãã ãŸãæµ®ãã¶ã®ã¯ã³ã¹ããå®ãã£ãŠããšã§ããã ãšèšã£ãŠã â ã«èšèŒããéããå°èŠæš¡ç°å¢ã§ã®å©çšããããšæã£ãŠããã®ã§ãããããã³ã¹ããããªã«ããã£ãŠãªãããããïŒãšãã声ãèãããŠãããã§ãã ãããã Linode ã䜿ãããããšãã芳ç¹ã§ãããã ç°å¢ã§äœ¿ã£ãŠã¿ãã®ã§ãã³ã¹ããå®ããšãã宿ã¯ãŸã åŸãããŠããŸããã ãããããå
±æ/å°æCPUãã®éžæãããæ¬¡ã«ããã©ã³(ãã·ã³ã¿ã€ã)ãã®éžæãããããã§ããããã©ã³ã®äžã«ã¹ãã¬ãŒãž(SSD)ãšè»¢é(egress)ãå«ãŸããŠããã§ãã äž»èŠã¯ã©ãŠããããã€ããŒãšã®äŸ¡æ Œæ¯èŒã§ãããã4vCPU/8GBããã©ã³ã«ããšããšä»åž¯ãããŠããã¹ãã¬ãŒãžãšè»¢ééãå å³ããã³ã¹ãã·ãã¥ã¬ãŒã·ã§ã³ã§ãã 现ããéšåã¯çœ®ããŠãããŠãããã ãèŠããšç¢ºãã«ã³ã¹ãã¡ãªãããæããããšãã§ããŸããïŒ ã¡ãªã¿ã«ä»åãã³ãããŒã¯ã¯åã£ãŠããŸããããã©ã®ãããã®æ§èœåºãã®ïŒããšæ°ã«ãªãã²ãšããããšãããã®ã§ããã®èŸºã¯æ¬¡åã«ã§ãã ãã¡ãªãã ãã£ã±ããµãŒãã¹ã©ã€ã³ãããã®å°ãªãã§ããããã ããããäž»èŠã¯ã©ãŠããããã€ããŒãšã¯äº€ãããªãå±€ãã¿ãŒã²ããã«ããŠããã®ã§ããã°çãéããªã®ãããããŸãããã ãªã³ãã¬ãä»ã¯ã©ãŠãããã®ãã€ã°ã¬ãŒã·ã§ã³å
ãšããŠå©çšããéžæè¢ã«ã¯ãŸã å
¥ã£ãŠããªããšããããŸãã ãã®ä» Terraform 䜿ããŸãã Terraform ãµã³ãã«ã³ãŒããå
¬éãããŠãããŸãã
ããã«ã¡ã¯! å幎ã¶ãã®å·çãšãªããŸããnose ã§ãã æšå¹Žããšããã²ãŒã ã¿ã€ãã«ã§ Web ãã©ãŠã¶äžã§ãã¬ã€ã§ãã ã¯ã©ãŠãäœéšç ããªãªãŒã¹ããŸãããä»åã¯ãã®ã¯ã©ãŠãäœéšçãªãªãŒã¹ã«çºãã話ãããŠãããããšæããŸãã æ¬èšäºã®å
容 æŠèŠ ã·ã¹ãã æ§æ ããŒãã£ã«ãããã«ã€ã㊠ã¯ã©ãŠãäœéšçããªãªãŒã¹ããçµæ ãŸãšã â»ãããŒãã£ã«ãããã«ã€ããŠã㯠ãªãã«ã ãå·çããŠããŸãã1 æŠèŠ ä»åã¹ããªãŒãã³ã°ã§åºããã²ãŒã 㯠STAR OCEAN THE SECOND STORY R ã§ãã ããåºãéãã§ããããã£ããã¥ãããšã㊠Web ãã©ãŠã¶ã§ããã¬ã€ã§ããããä»ãã©ãããã©ãŒã ãšåæã«ã¯ã©ãŠãäœéšçã 2023幎9æ15æ¥ ã«ãªãªãŒã¹ããŸããããã¡ãã®ã¯ã©ãŠãäœéšç㯠2024幎3æ ã«ã¯ããŒãºãçŸåšã¯éã¶ããšãã§ããŸããã ã·ã¹ãã æ§æ ã·ã¹ãã æ§æãšããŠã¯äºã€ã®æ çµã¿ã«åããããŸãã web ãµã€ã ã²ãŒã ã¹ããªãŒãã³ã°ãµãŒãã¹ 1 ã®éšåã§ã¯äž»ã« S3 ãš CloudFront ã䜿ã£ãŠããã 2 ã®éšåã§ã¯ Ubitus ã® GameCloud ãµãŒãã¹ãå©çšããŠããŸãã åè:Ubitusã¯ã¹ã¯ãŠã§ã¢ã»ãšããã¯ã¹ãSTAR OCEAN THE SECOND STORY Rãäœéšçã®ã¯ã©ãŠãé
ä¿¡ããµããŒã 1 ã«æ¥ããŠãŒã¶ããã®ã¢ã¯ã»ã¹ã 2 ã®ã¹ããªãŒãã³ã°ãµãŒãã¹ã«åãæž¡ããšãã£ãå²ãšã·ã³ãã«ãªäœãã«ãªã£ãŠããŸããä»åã¯ã¯ã©ãŠãäœéšçãšããããšããããŠãŒã¶ã®èå¥ãªã©ãããŠãããã»ãŒããåºæ¥ãªãäœãã«ããŠããŸããæ§æå³ãšããŠã¯ä»¥äžã®ããã«ãªããŸãã
yotaã§ãã ç§ã®ããŒã ã§ã¯CI/CDããŒã«Concourseäžã§Mavenã䜿ã£ãJavaãããžã§ã¯ãã®ãã«ãç°å¢ãæ§ç¯äžã§ãã ãã®èšäºã¯ãã¡ãã®èšäºã§èšåããã å®ã¯åŸã«Connection timed outã®æ ¹æ¬çãªåå ã倿ããã®ã§ãããããã¯å¥éæçš¿ããŸãã ã«ããããã®ã§ãã ä»åã®åé¡ã¯ãMavenã«ããJavaãããžã§ã¯ãã®ãã«ããææConnection timed outã§ãšã©ãŒã«ãªãããšã§ããã 以äžã®ãããªãšã©ãŒã§ããã察象ãšãªããã©ã°ã€ã³ãã©ã€ãã©ãªã¯åžžã«åããšããããã§ã¯ãããŸããã§ããã [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M8:test (default-test) on project <ãããžã§ã¯ãå>: Execution default-test of goal org.apache.maven. plugins:maven-surefire-plugin:3.0.0-M8:test failed: Plugin org.apache.maven. plugins:maven-surefire-plugin:3.0.0-M8 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-surefire-plugin:jar:3.0.0-M8 -> org.apache.maven. surefire:maven-surefire-common:jar:3.0.0-M8: Failed to read artifact descriptor for org.apache.maven. surefire:maven-surefire-common:jar:3.0.0-M8: Could not transfer artifact org.apache.maven. surefire:maven-surefire-common:pom:3.0.0-M8 from/to (https://<瀟å
ãã©ãŒãªããžããª>): transfer failed for https://<瀟å
ãã©ãŒãªããžããª>/org/apache/maven/surefire/maven-surefire-common/3.
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã¹ãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»åã¯ãããã°ãªåŒïŒ éçšãããã GitHub ãš Terraform Cloud ã®èšå®äŸ ïœTerraform ã³ãŒãä»ãïœ ããå±ãããŸãïŒ çªå€ç·šã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ä»åã¯äžèšãšé¢ä¿ã®èã GitHubãTerraform Cloud ã«ã€ããŠã®èšäºã§ãããããçªå€ç·šã«åé¡ããŠããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš Terraform Cloud 飿ºã®ããã®éçšãããã Terraform HCL åºæ¬ã³ãŒã Terraform Cloud 飿ºã®ããã®éçšãããã GitHub åºæ¬èšå® Terraform Cloud ã®éçšããããåºæ¬èšå® ããããå®çŸãã HCL ã³ãŒã ãã®èšäºã§æžããªãããš GitHub ãš Terraform Cloud ã® OAuth app 飿º Terraform HCL ã³ãŒãã®å¿çšãè§£èª¬ãæ£ãããã¹ããã©ã¯ãã£ã¹ GitHub èšå®ã®å¿çšãè§£èª¬ãæ£ãããã¹ããã©ã¯ãã£ã¹ Terraform Cloud èšå®ã®å¿çšãè§£èª¬ãæ£ãããã¹ããã©ã¯ãã£ã¹ å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã çè
ã®å°éå€ã®å
容ã«ã€ããŠã¯æå®ãé¿ããŠãããŸããããããããééããååšãããããšã¯ãæ¿ç¥ãããã ããã èšäºã®å
容ã¯ãèšäºå·çæç¹ (2024/2) ã§ã®æ
å ±ã§ãããæ¿ç¥ãããã ããã GitHub ãš Terraform Cloud 飿ºã®åºæ¬ ã¯ã©ãŠãã€ã³ãã©ã® IaC 管çãäžè¬çã«ãªãã€ã€ããæšä»ãã³ãŒã管çã»planã»ã¬ãã¥ãŒã»apply ãšããäžé£ã®æµãã¯ã¯ã©ãŠãäžã§å®æœãããã§ãããã
yotaã§ãã ç§ã®ããŒã ã§ã¯CI/CDããŒã«Concourseäžã§Mavenã䜿ã£ãJavaãããžã§ã¯ãã®ãã«ãç°å¢ãæ§ç¯äžã§ãã ïŒConcourseã«ã€ããŠã¯æ¬ããã°ã®å¥èšäºãåç
§ãã ããïŒ ãã®äžã§ãMavenã«ããäŸåã©ã€ãã©ãªãåçš®ãã©ã°ã€ã³ã®ããŠã³ããŒããConnection timed outãšãªãããã«ãå
šäœããšã©ãŒã«ãªããšããäºè±¡ãçºçããããã«ãªããŸããã 以äžã®ãããªãšã©ãŒã§ããã察象ãšãªãã©ã€ãã©ãªããã©ã°ã€ã³ã¯åžžã«åããšããããã§ã¯ãããŸããã§ããã [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M8:test (default-test) on project <ãããžã§ã¯ãå>: Execution default-test of goal org.apache.maven. plugins:maven-surefire-plugin:3.0.0-M8:test failed: Plugin org.apache.maven. plugins:maven-surefire-plugin:3.0.0-M8 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-surefire-plugin:jar:3.0.0-M8 -> org.apache.maven. surefire:maven-surefire-common:jar:3.0.0-M8: Failed to read artifact descriptor for org.apache.maven. surefire:maven-surefire-common:jar:3.0.0-M8: Could not transfer artifact org.apache.maven. surefire:maven-surefire-common:pom:3.0.0-M8 from/to opd (https://<瀟å
ãã©ãŒãªããžããª>): transfer failed for https://<瀟å
ãã©ãŒãªããžããª>/org/apache/maven/surefire/maven-surefire-common/3.0.0-M8/maven-surefire-common-3.0.0-M8.pom: Connect to <瀟å
ãã©ãŒãªããžããª>:443 failed: Connection timed out (Connection timed out) -> [Help 1] ãã® Connection timed outã®åå ã¯ããã«è§£æã§ããªãã£ãã®ã§ããããã®ãšãMavenã®å®è¡ããšã«åžžã«ãã¹ãŠã®ã©ã€ãã©ãªãããŠã³ããŒãããæ§æã«ãªã£ãŠããŸãããããã§ãéœåºŠããŠã³ããŒãããªãããã«å€æŽããŠConnection timed outãèµ·ããæ©äŒãæžããããšãšããŸããã
ã¿ãªãããããã«ã¡ã¯ïŒåæçš¿ã® hamachan ã§ãã ç§ã¯ãã¯ã©ãŠãã®æè¡ã§ãäžäŸãšã㊠æ¥å¢ãããŠãŒã¶ã¢ã¯ã»ã¹ãè¯ãæãã§æã(CMçã®ããã¢ãŒã·ã§ã³æã€ãïœ â ã©ã®ããããµãŒãå¢åŒ·ããŠãããŸããããã¿ãããªè°è«ããäžæ¯ã ãšæã£ãŠãŸãããããªèŠç©ããããšãŠãé£ããã§ãããïŒ) åçš®ã¡ã³ããã³ã¹ãäžèŠ(ã»ãã¥ãªãã£ãããé©çšãããããŒãžã§ã³ã¢ãã察å¿ãªã©ãªã©é¢åãããã®ã§ãã) ãšãã£ãããäœãããªããŠè¯ãç¶æ
ãã«æ¥µåãããäººãæ§ãã人ã§ãïŒ ããŠããŠãä»ãåŒç€Ÿã®è€æ°ã®ãªã³ã©ã€ã³ã²ãŒã ã¿ã€ãã«ã§ãGCPã®Cloud Runãæ¡çšãããŠããŸãããä»åã¯ãããåããŠå°å
¥ãããšãã®ã話ã§ãã èæ¯ãªã© ãšãããªã³ã©ã€ã³ã²ãŒã ã¿ã€ãã«ã§ãåœç£ã¯ã©ãŠããããGCPãžç§»èšãããä»äºããããŸããããã®éããŠãŒã¶æ§ããã®ã¢ã¯ã»ã¹ãåããããã³ãéšåã«é¢ããå¥ãããã¯ã(æµè¡ãããã£ãŠGKE)ã«ããããšããæµãããã£ãã®ã§ãããçµæCloud Runã«ããŸããããããåããŠã®å°å
¥ã§ããã Cloud Runã¯åé èªå·±ç޹ä»éšåã«ãæžãã æ¥å¢ãããŠãŒã¶ã¢ã¯ã»ã¹ãè¯ãæãã§æã åçš®ã¡ã³ããã³ã¹ãäžèŠ ãå¶ããŠãããå¯èœæ§ããããç§ã®æšããããã¯ãã§ããã ãã®åå°å
¥ãå®çŸããããããã£ãšãã®Cloud Runãè§Šã£ãŠããææããããŸãããããã¥ãŒãµãŒ, éçºæ
åœ, ããŒã ã¡ã³ããã«ãã®è¯ãã説æããå
±æããŠããããåå°å
¥ãå®çŸããã«ã¯èªåã§æãåãããªããšã§ãããã ãããªãããªã§ä»åã¯ã æšããããã¯ã(ä»åã ãšCloud Run)ããã£ãŠãæ¬çªç°å¢ã«å°å
¥ããŠã¿ãã ãã®æšããããã¯ãã®è¯ããé¢é£ã¡ã³ãã«äŒããã éçºæ
åœãªã©ãèªå以å€ã®äººãæå®ãããããã¯ããèšããããšããæºåããã®ã§ã¯ãªããäžç³ãæããã ã¿ãããªããšãèããŠãã人ã«ã¯åºãããããããªãå
容ãšãªã£ãŠããŸãã ãªããæ¬èšäºã§ã¯ãTCOïŒTotal Cost of OwnershipïŒã®è©Šç®ããCloud Runã®èª¬æãæ§ç¯/å°å
¥æé ãšãã£ããã®ã¯å²æãããŠããã ããŸãã ãã ãç§»èšåã®åœç£ã¯ã©ãŠãã§çšŒåããŠããããšãããã¢ã¯ã»ã¹èŠæš¡ãšãæ£ç¢ºã«åãã£ãã®ã§ãè²»çšèŠç©ããã¯ããæãã£ãã§ããã æ¬é¡ãæšããããã¯ã(Cloud Run)ãé¢é£ã¡ã³ãã«äŒããæé ã 以äžã®ã¹ãããã§ãé¢é£ã¡ã³ã(ãããã¥ãŒãµãŒ,éçºæ
åœ,ããŒã ã¡ã³ãã)ã«èª¬æçãè¡ããå£èª¬ãèœãšããŠãããŸããã ããããããã®ãé¢é£ã¡ã³ããããã¿ããªãŒïŒããšããçãã§åŒã³ãŸãã ã¿ããªãŒïŒãããã€ãšãäœéšããŠã¿ãŠãŒïŒ ãŸãé·ããµãŒãã¹éçšã®äžã§çããããããã€äœæ¥ãçã«äœéšããŠè²°ããŸããã äœéšçšã®ããã°ã©ã ãªã©ã¯ç§ã®æ¹ã§æºåããäžããã³ãã³ããå©ãã°ãã²ãšãšããã®æµããæŽãã…ãšããäœéšç°å¢ãæŽåãã以äžã®ããã«æ¡å
ããŸããã äœéšçšããã°ã©ã ãªã©(java,Dockerfileãšãã£ããã®)ã¯é©åãªäœçœ®ã«èšçœ®æžã§ããã çããã«å©çšã®æµããäœéšããŠãããããã®æé ã«ãªã£ãŠããŸãã æåŸãŸã§é²ããã°ããã€ãã£ãã€ã¡ãŒãžã®ãã«ãâGCRãžã®æ ŒçŽ âCloud Runãžã®ãããã€ã®æµããã€ãããŸãã 1. âäœæ¥ãã£ã¬ã¯ããªã«ç§»åããŸã $ cd ~/getting-started.spring/spring-graal-native/spring-graal-native-samples/webflux-netty 2. âãã€ãã£ãã€ã¡ãŒãžããã«ãããŸã $ ./build.sh â以äžã®ãããªæååãåºãŸã === Building webflux-netty sample === Packaging webflux-netty with Maven Unpacking webflux-netty-0.
ããã«ã¡ã¯ãçãæ·±ããã·ã€ã§ãã è€æ°ã®æ©èœãçµã¿åãããŠã·ã¹ãã ãæ§ç¯ãããšããããããã®æ©èœå士ã®éä¿¡ã¯å¿
èŠã ããã®ä»ã®éä¿¡ã¯çŠæ¢ããããšããããšã¯ãããããŸããããšãã°… éçºäžã®ããã°ã©ã ã§ãæ³å®ããŠãã以å€ã®éä¿¡ãç¡ãããšã確èªããã å
¬éãããŠãããœãããŠã§ã¢ (OSS ã container image ç) ãã¡ãã£ãšè©ŠããŠã¿ãããããã®çŽ æ§ãå®å
šã«ã¯ç¢ºèªã§ããŠããªãã®ã§ãå€éšãšã®éä¿¡ã鮿ããç°å¢ã§å®è¡ããŠã¿ãã ç¹ã«åŸè
ã®ãããªçšéã§ã¯ãå®è¡ç°å¢ããšéé¢ã§ãããšäœããšäŸ¿å©ã§ããä»å㯠Docker ã䜿ã£ãŠãã£ãŠã¿ãããšæããŸãã Docker ã®å®è¡ option ã䜿çšãã docker run ãããšãã«ã--net=none ãã€ããã ãã§ãcontainer 㯠network ããéé¢ãããŸãã åè: None network driver ⯠docker run -it --rm --entrypoint=ash --net=none alpine / # ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000 link/ipip 0.
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã¹ãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»åã¯ãããã°ãªåŒïŒ Jira issue äœæåã Python ã§æžããŠã¿ã ããå±ãããŸãïŒ åçŽã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ä»åã¯äžèšãšé¢ä¿ã®èãçæç³» AI ã«ã€ããŠã®èšäºã§ãããããçªå€ç·šã«åé¡ããŠããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš GPT-4 API ã䜿ã£ã Jira issue ãäœæããããã°ã©ã ããã°ã©ã ã®æ¡åŒµæ¡ ãã®èšäºã§æžããªãããš GPT-4 ã®è§£èª¬ python ã³ãŒãã®è§£èª¬ AI ãããã°ã©ã ã®ç²ŸåºŠã®æ€èš ããã°ã©ã ã®æ¡åŒµæ¡ã®æ¯èŒæ€èš å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã çè
ã®å°éå€ã®å
容ã«ã€ããŠã¯æå®ãé¿ããŠãããŸããããããããééããååšãããããšã¯ãæ¿ç¥ãããã ããã èšäºã®å
容ã¯ãèšäºå·çæç¹ (2024/1) ã§ã®æ
å ±ã§ãããæ¿ç¥ãããã ããã GPT-4 API ã䜿ã£ã Jira issue äœæåã Python ã§æžããŠã¿ã å··ã§è©±é¡ã® GPT-4 ããã£ãããªãæ¥åã«çµã¿èŸŒã¿ããã§ãããã
ã¿ãªãããããã«ã¡ãïŒåæçš¿ã®ããªã¢ã§ãã 2011幎ã«AWSã®æ±äº¬ãªãŒãžã§ã³ã2016幎ã«GCPã®æ±äº¬ãªãŒãžã§ã³ãéèšãããŠãã ã¯ã©ãŠãç°å¢ãå©çšããæ©äŒãå¢ããã®ã§ã¯ãªãã§ããããã æè»ãªã€ã³ãã©ãªãœãŒã¹ã®æŽ»çšã«å ããŠæ§ã
ãªãããŒãžããœãªã¥ãŒã·ã§ã³ãçºè¡šãããäžã§ ã¯ã©ãŠãã®ã»ãã¥ãªãã£ã¯ã©ãããŠããã®ïŒãšæ°ã«ãªãæ¹ããããšæããŸãã®ã§ æ¬æ¥ã¯ã¯ã©ãŠãã®ã»ãã¥ãªãã£è£œåãè§Šã£ãŠã¿ãããšã«ã€ããŠæžããŠã¿ãããšæããŸãã ã¯ã©ãŠãã®ã»ãã¥ãªãã£ãšãã£ãŠãã©ããã£ããã®ãããã®ïŒ ã¯ã©ãŠãã»ãã¥ãªãã£ãšãã£ãŠãåã¯ã©ãŠããæäŸããŠãã補åã 3rdãã³ããŒãæäŸããŠãã補åãé²åŸ¡ç¯å²ãå€çš®å€æ§ã«ããããšæããŸãã ä»åã¯ã¯ã©ãŠããã©ãããã©ãŒã ãæäŸããŠãã GCPã®SCC(Security Command Center)ã«ã€ããŠãã¹ãããããšæããŸãã â»AWSã®é¡äŒŒè£œåã¯Guard Dutyãšãããã®ããããŸãã SCCã£ãŠãªãŒã«ïŒ Google Cloud Platformåãã®ã»ãã¥ãªãã£ãšãªã¹ã¯ç®¡ç補åã§ãã Security Command Center æ€ç¥é
ç®ã¯300è¶
ãããäžæ£ãªDNSãžã®ã¢ã¯ã»ã¹ãFWã®èåŒ±æ§æ
å ±ãã¢ã«ãŠã³ãã®ç°åžžå©çšãªã© æ§ã
ãªã»ãã¥ãªãã£æ
å ±ãæ€ç¥ããŠãããŸãã æå¹åããŠã¿ã ãªããšãªã補åã¯èããããšããããªããšãªãç¥ã£ãŠããã©ãããã£ãŠäººãå€ããšæãã®ã§ ç¹å®ã®orgé
äžã§ã詊ãã«æå¹åããéã®ç»é¢ã貌ã£ãŠããŸãã æ¡æ°ã¯äŒããŸããã倧éã«æ€ç¥ãããããšãåãããŸããã ããããã®ã¯ãã§ãGoogleãGCPãããžã§ã¯ãäœææã« ããã©ã«ãã§äœã£ãŠãããDefalutã®ãããã¯ãŒã¯ãDefaultã®Firewallãªã© å©çšããŠããªããŠãSCCãæ€ç¥ããŠãããã±ãŒã¹ã倿°ãããŸããã â»çµç¹ããªã·ãŒã§defaulté¡ã®äœæãææ¢ããŠããå Žåããã®éãã§ã¯ãªãã ãã®æ°ãæ€ç¥ãç¶ãããšéçšãæãç«ããªã è²ã
ãšæ€ç¥ããŠãããã®ã¯è¯ãããšã§ã¯ãããŸãã Googleã®ã»ãã¥ãªãã£åºæºãšèªåãã¡ã®ã»ãã¥ãªãã£åºæºã¯å瀟ç°ãªããšæããŸãã®ã§ èªåãã¡ãæ€ç¥ãããã«ãŒã«ãå®ããŠãåãã©ã¡ãŒã¿ããšã«ã¬ãã«åããããããšããå§ãããŸãã åèãŸã§ã«æã
ãSCCã®æ€åºçµæãã©ããã£ããããã¯ãã§ãã£ã«ã¿ãªã³ã°ã æ€ç¥ãããŠããããæ§æãèŒããŠãããŸãã SCCã§ã¯ããã€ãã®æ©èœãæäŸãããŠãããŸãã®ã§ãSCCäžã§åæ©èœã®æå¹/ç¡å¹ ããã³åãããžã§ã¯ãã§æ€ç¥ãã/ããªãã®ãã¥ãŒãã«ãŒã«ãå®çŸ©ã Cloud Functionäžã§ãéç¥åªå
床ãå®ããŠããŸãã ãŸãšã ã¯ã©ãŠãã»ãã¥ãªãã£ãšãã£ãåºç¯å²ãªåèªã§ã¯ãããŸãã ãããã£ããããã¯ããå©çšããããšã§ãã¬ãŒãã¬ãŒã«ãæ·ãããšãã§ããŸãã ãã¡ããåœè©²è£œåãå°å
¥ããã°ã»ãã¥ãªãã£ãå®ç§ãšããããã§ã¯ãªãã§ãã äžã€ã®éžæè¢ãšããŠå©çšããããšãæ€èšããŠã¿ãŠããããããããŸããã ãããªäººã«ãããã ã¯ã©ãŠãã»ãã¥ãªãã£ã«å€§ããŠæŒ ç¶ãšããäžå®ããã人 GCPãããžã§ã¯ã暪æã§ã墚ä»ããæ¬²ããŠã人 å€å°ãªããã¯ã©ãŠãã»ãã¥ãªãã£ãšããŠæè³ãåºæ¥ãäŒæ¥ ãããªäººã¯ããå°ãèããŠããããã SCCãæå¹åããããç°¡åã«äœã§ãããŠãããéæ³ã®æãæ¢ããŠã人 æå¹åããŠãã幟å€ã®ãã©ã¡ãŒã¿ãšæ®Žãåããå§ãŸãã(ãã¡ããäºåèšèšå€§äº) IPSãªã©ã®é²åŸ¡è£œåãæ¢ããŠãã人 SCCãæ
åœããŠããã®ã¯äžæ£äŸµå
¥æ€ç¥ããªã¹ã¯ç®¡çã§ããããšãããæ€ç¥åŸã®ã¢ã¯ã·ã§ã³ã¯ããã¥ã¢ã«å¯Ÿå¿ãå¿
èŠã§ããã ããã«ãŠã§ã¢ã®è匱æ§ãŸã§æ€ç¥ããŠã»ãã人 ä»åŸã¹ãã£ã³ããŒã«ãšã®é£æºãåºãŠãããããããŸããããSCCåäœã§ã¯çŸæç¹ã§å¯Ÿå¿ããŠããªãã(ãšæã)
ããã«ã¡ã¯ããã·ã€ã§ãã æ©æ¢°åŠç¿ãæ¥åã«å
¥ã蟌ãã§ãGPU ã€ãã® PC ããµãŒããŒãå
±ææ©ãšããŠäœ¿çšããããšãå¢ããŸããã以åããèªåãã¹ãçã®çšéã§éèŠã¯ãã£ãããšæããŸãããæ¥éã«é²ãã§ããããã«æããŸãã 仿¥ã¯ããããã£ãŠå¢ããŠãããã¹ãã® GPU ã®ã¿ãªããããå
æ°ããåããŠããæ§åã確èªããããããä»çµã¿ãçšæããŠã¿ãããšæããŸãã Observability ã«é¢ããŠã¯ä»¥åãJMX MBean metrics ã®å¯èŠåã詊ã ãæžããŸããããŸããCloud Monitoring ã§ custom metrics ãæŽ»çšãã ãšããèšäºã§ãCLI output ã parse ã㊠custom metrics åã«ã€ããŠãæžããŠããŸãã ä»åããã®ãããã®ä»çµã¿ã䜿ããcustom metrics ãã€ããã°ã§ãããã 㪅 ãšæã£ãŠããŸãããnvidia-smi ããããèŠã人éã«èªã¿ããã圢åŒã ãã§ã¯ãªã monitoring ãœãåºåã«ã察å¿ããŠããããã§ããã ãããïŒweb æ€çŽ¢ããŠãããšããã¯ãã¿ããªãã·ã€ãšæã£ãŠãããã®ã¯ãã§ã«ã€ããããŠãããã®ã§ããä»åã¯ãã¡ãããããããå©çšãããŠããã ãããšã«ããŸãããã NVIDIA DCGM Exporter ã䜿çšã㊠GPU ã® monitoring ãããŠã¿ããµã³ãã« NVIDIA 瀟ã DCGM Exporter ãšãããPrometheus çã« metrics ãåéãããããã®ãœãããŠã§ã¢ãæäŸããŠããŸããGitHub äžã® repo ã確èªãããšãlicense 㯠Apache License 2.0 ãšãããŸããã åé ã«ãæžããŸãã 以åã®èšäº ã®å
å®¹ãæµçšããDocker compose ã䜿ã£ãŠ Prometheus + Grafana ãšãšãã« ãã® exporter ã䜿ããæ
å ±ã®å¯èŠåãããŠã¿ãŸãããã
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã¹ãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»åã¯ãããã°ãªåŒïŒ AWS Linux ãã°ã€ã³ RTA ããå±ãããŸãïŒ åçŽã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš AWS ã§ Linux ã«ãã°ã€ã³ããããã®æçæé ãã®èšäºã§æžããªãããš AWS VPC ã®ãã¹ããã©ã¯ãã£ã¹ AWS EC2 ã®ãã¹ããã©ã¯ãã£ã¹ AWS ã§ Linux ã«ãã°ã€ã³ããããã®çã®æçæé å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã çè
ã®å°éå€ã®å
容ã«ã€ããŠã¯æå®ãé¿ããŠãããŸããããããããééããååšãããããšã¯ãæ¿ç¥ããäžããã èšäºã®å
容ã¯ãèšäºå·çæç¹ (2023/12) ã§ã®æ
å ±ã§ãããæ¿ç¥ããäžããã Linux ãã°ã€ã³ RTA IT ã€ã³ãã©ã§æãã¹ã¿ã³ããŒããªãªãœãŒã¹ããã㯠Linux ã§ãããšèšã£ãŠãããã§ãããã æ€èšŒããŠã¿ãããšãããŸã㯠Linux ãèµ·åããŠãã°ã€ã³ãããšããããå§ãŸããŸãã
ããã«ã¡ã¯ããã·ã€ã§ãã è²§ä¹æ§ãªã®ã§ãä»äºäžã¯ãããŠãè²»çšã®ããšãèããŠããŸãã ä»åã¯ãæ©æ¢°åŠç¿ã€ã³ãã©ã«ãé¢é£ããèšäºã§ããAI ã«é¢ããŠã¯ SQUARE ENIX AI æè¡ããã° ããããŸãã®ã§ããèå³ããããŸããããã²ã芧ãã ããïŒ GPU ããå®ãã奜ããªãšãã«å¥œããªã ãå©çšããã AI ã®è©±é¡è±çãã®æšä»ãã¢ããªã±ãŒã·ã§ã³ã§ GPU ãå©çšããæ©äŒãå¢ããŠããŸãããGPU ã®çšéããããããšãããŸãããæè¿ã§ãããåšèŸºã®éèŠãšããŠç¹ã«å€ãã®ã¯ãæ©æ¢°åŠç¿ã§ãããã£ããèšããšã¿ã¹ã¯ã«å¯ŸããŠãã©ã¡ãŒã¿ãŒãããŒã¿ãäžããŠããçšåºŠã®æéãèšç®åŠçããããã®ã§ã (ãªãã§ããããšèšãã°ããã§ãã)ãããã§ã®åé¡ã¯ãGPU ã¯åºæ¬çã«é«äŸ¡ã§è³Œå
¥ããããšã«æ·å±
ãããããã«ãããããã¹ãã«çµã¿èŸŒãã§ãã€å
±æãªãœãŒã¹ãšããŠå©çšãããšããã®ã¯ãªããªãé£ãããšãããã®ã§ãã ä»åã®èšäºã§ã¯ãããã¹ããŒãã«è§£æ±ºããäŸãã€ãã£ãŠã¿ãããšæããŸããGKE Autopilot ã§ã æå㯠Cloud Run ã調ã¹ãã®ã§ãããéåžžã® Cloud Run ã§ã¯ GPU ã䜿ããªãããã§ãã (GKE node ã䜿ãã°ã§ããã)ãGPU ã䜿ããéžæè¢ãšããŠèãããã GCE ã GKE Standard ã§ã¯ããŒããã scale ãããä»çµã¿ãã€ãããããšãªããšã远å ã®å·¥å€«ãå¿
èŠããã§ããGKE Autopilot ã§ã¯ cluster ãåžžæç¶æããå¿
èŠã¯ãããŸãããGPU å«ããŠãªãœãŒã¹ç®¡çããã·ã¹ãã è²»çšãšèãããšãã
ãã¶ã劥åœãªè²»çšãšæããŸãã â» Vertex AI ãäœ¿ã… ãšãã声ãèãããŠããŸãããããã§ã¯èãããªãããšãšããŸããGCP 以å€ã§ããããããšäŸ¿å©ãªãµãŒãã¹ã¯ãããïŒãšããããã¯ãã©ããã§ãäŒããããšãã«æããŠãã ãã ð ã¡ãªã¿ã«ä»åã®èšäºãããªãé¡äŒŒããå
容ããã¡ã â GKE ã§ GPU 䜿ãã®ãã£ã¡ãç°¡å (Google Cloud Uchimaããã®èšäº) ã«ããã®ã芳枬ããŠãããŸããAutopilot ãªã©ã«ã€ããŠã¯ãã¡ãã§è©³ãã説æãããŠããŸãã®ã§ãããããŠãåç
§ãã ããã æ³å®ã¢ããªã±ãŒã·ã§ã³ã·ããªãª ä»åã¯ã以äžã®ä»®æ³èŠä»¶åãã«ãœãªã¥ãŒã·ã§ã³ãã€ãã£ãŠã¿ãŸãããã ãšã³ããŠãŒã¶ãŒã«ã¯ web UI ãæäŸãããã®æäœã«å¿ããŠæ©æ¢°åŠç¿ã®åŠçãå®è¡ããã¢ããªã±ãŒã·ã§ã³ãšããŸãããã®ãšãããªã¯ãšã¹ããåãä»ããããã« web ã¢ããªã±ãŒã·ã§ã³ã® Pod ã¯åžžæèµ·åããŠããå¿
èŠããããŸãããæ©æ¢°åŠç¿ã®åŠç㯠GPU ã䜿çšããããããããšåå±
ãããšã¯ã©ãŠãè²»çšãé«é¡ã«ãªã£ãŠããŸããŸãããšããããšã§ãæ©æ¢°åŠç¿åŠç㯠web ããã¯åå²ããŠã䜿ããšãã ãèµ·åããããã«ããŸãã
ã¯ããã« ããã«ã¡ã¯ãæ
å ±ã·ã¹ãã éš SRE æ©æ¬ã§ãã ä»åã¯Qiitaã®New Relic Advent Calendar 2023ã®14æ¥ãã®èšäºãšããŠæžããŸããã æ
åœããŠããã·ã¹ãã ã§ãµãŒãã¹ç£èŠãSLI/SLOãçšããŠãã©ã®ããã«ããŠãµãŒãã¹ã®å¥å
šæ§ãç¥ãã®ãïŒãšããã®ãèããŠããäžã§New Relicã課é¡è§£æ±ºã«ç¹ãããããããªããšæããçŽè¿ã§ããŒã ã§è©äŸ¡ãè¡ããŸããã ãã®èšäºã§ã¯ãã©ã®ãããªèª²é¡æãæã£ãŠããã®ããšããã®ãšããã®èª²é¡æã«å¯ŸããŠåœè©²ãããã¯ããã©ãåºãã£ãã®ããç°¡åã«ã話ããããšæããŸãã ãµãŒãã¹ãšãã®ä¿¡é Œæ§ BtoBãBtoCãªã©ã§éãã¯ãããšæããŸããããµãŒãã¹ãããïŒäžå€®ïŒããµãŒãã¹ã®æäŸè
ïŒäžïŒããµãŒãã¹ãå©çšããã客æ§ãªã©ã®å©çšè
ïŒäžïŒãšãã3ã€ã®é¢ä¿æ§ã§æŽçã§ããŸãã ãã®é¢ä¿æ§ã®äžã§ãæã
ã¯å©çšè
ãæ£åžžã«ãµãŒãã¹ãå©çšã§ããŠããããç¥ããããšããæ¬²æ±ããããŸãã äŒçµ±çãªç£èŠ ããã§èªåãã¡ã®ã·ã¹ãã ã«å¯ŸããŠç£èŠãè¡ãããšã«ãªããŸããPrometheusãZabbixãSensuãMuninãCactiãNagiosãMRTGãetc…ãšããããªããŒã«ããããŸãããã¡ããªã¯ã¹ãååŸããŠã°ã©ãåãããã²ãŒãžãã«ãŠã³ã¿ãŒã®å€ãããšã«ç£èŠãããã©ãŒãã³ã¹èšæž¬ããããããŸãããŸãããã°ãã©ããã«éçŽãããããããã¯ãµãŒãã«çŽæ¥å
¥ã£ãŠãšã©ãŒãçºçããã確èªãããããŸãã ãããããããäŒçµ±çãªç£èŠã ãã§æ£ãããµãŒãã¹é©çšãåºæ¥ãŠãããã倿ããããšã¯å®ã¯é£ããã®ã§ããCPU䜿çšçãé«ããã°ããšã©ãŒãå°ãåºããã客æ§ãæ¬åœã«å°ãã®ã§ããããïŒ å°ã£ãŠãããããããªãããå°ã£ãŠããªããããããŸãããããã ãã§ã¯åãããªãã®ã§ãã å€äžã«ã¢ã©ãŒãã§èµ·ãããããšã³ãžãã¢ã«ãšã£ãŠãã誰ãå°ã£ãŠããªããããããªãããã¢ã©ãŒã察å¿ããŸããã ãšã¯èšãåããªãã®ã§ãã ã¹ãã€ã¯ããŠèœã¡çãã圢跡ãåããã¡ããªã¯ã¹ã®ã°ã©ãã貌ã£ãŠãã°ããã£ããã§ã·ã§ã¢ã㊠ãé芳ããŸãã ãšã ãæžããŠåã³ç ãã«ã€ããçµéšãããã®ã§ã¯ãªãã§ããããã ãŸãã倧ããªé害ãäžãäžçºçããå Žåããšã©ãŒãåºãŠãããã©ãã ãã®æ·±å»åºŠåããªã®ãã峿ã«å€æã§ããããšã¹ã«ã¬ãŒã·ã§ã³ãã©ããŸã§è¡ãã¹ããè¿·ã£ãããšããããããããŸããã Site Reliability Engineering ããã§çްããªã¡ããªã¯ã¹ããã°ãçšããç£èŠã§ã¯ãªããSLI/SLOãçšãããã©ã¯ãã£ã¹ã§ãµãŒãã¹ã®æ£åžžæ§ã枬ãããšãã話ãåºãŠããŸãã SLI/SLOãšãå©çšè
ãã©ã®ããã«ãµãŒãã¹ãå©çšããŠããããçŸã ãŠãŒã¶ãŒã»ãžã£ãŒããŒïŒUser JourneyïŒ ãé¢é£ä»ããŠèããããšã§ãµãŒãã¹ã®æ£åžžæ§ãèšæž¬ããããšããSREïŒSite Reliability EngineeringïŒã®ãã©ã¯ãã£ã¹ã®äžã€ã§ãããšæããŠããŸãã ãããããã®SLI/SLOã®ä»çµã¿ãäœãåãçµã¿ã¯äžççžã§ã¯ãããŸããã倧å€ãªã®ã§ãã ç£èŠã®ä»çµã¿ãäœããã°ã©ããäœããæ°ããä»çµã¿ãã§ããã°è¿œå ããã¡ããªã¯ã¹ãéèšãããšãŒãžã§ã³ããå
¥ãããã°ã®ãã©ã¯ãŒããŒãä»èŸŒãã§ãéçŽããä»çµã¿ïŒã¢ã°ãªã²ãŒã¿ãŒïŒã®èšå®ãããŠããµãŒãã¹ã®è² è·ãé«ãŸããšç£èŠããã°ãéçŽããä»çµã¿ãè©°ãŸããã¹ã±ãŒã«ãããŠè² è·å¯ŸçãããŠãããã·ã¥ããŒããäœã£ãŠãããäžé±éã®æéããã€ã®éã«ã溶ããŠãããæ°ãã€ãããã³ã¹ãã®åé¡ããããããæŽ»çšãããŠããªããšããæ ¹æ¬èª²é¡ãåºãŠããŠæåã®ä»çµã¿ã¥ããã«æ»ã… ãããŠããããã®ç£èŠã®ä»çµã¿ãããšã«SLIãUJïŒUser JourneyïŒãåæããŠå®ãéèšãããããããã·ã¥ããŒãã«ããŠéçšããªããåŠ¥åœæ§ãèŠæ¥µãã€ã€BizãšäŒè©±ãããŠSLOãæ±ºããŠãããã«åŸã£ãŠéçšããã… æåŸã®éçšãŸã§ãã©ãçããã€ã¡ãŒãžãæ¹§ããŸããã ã·ã¹ãã ãåææ®µéããåŸã
ã«æé·ããŠããã®ã§ããã°åŸã
ã«æé·ãããŠããããããããŸããããŸãããã§ã«å€§ããªSLI/SLOãåãæ±ãä»çµã¿ãããããããã«ä¹ã£ãã圢ã§ããã°ãã¡ããåé¡ãªãããšæããŸãã ããããªããããŸã£ããçœçŽã®ç¶æ
ãããæ¯èŒç倧ããªã·ã¹ãã ã«å¯ŸããŠSREã®ãã©ã¯ãã£ã¹ãé©çšããã®ã¯äžèšã®å€§å€ããä¹ãè¶ããå¿
èŠãããããšãŠãã³ã¹ããããã£ãŠããŸããã®ã§ãããšèããŠããŸããäœãããšããŠãç¶æããã³ã¹ããç¶ç¶çã»çµç¹çã«æ
ä¿ããã®ãå€ãã®å Žåå°é£ã䌎ããã®ãšæãããŸãã 倧äºãªã®ã¯ãµãŒãã¹ãæ£åžžããç¥ãããšã§ãããç¥ãããã®ä»çµã¿ãäœãã»ç¶æããããšã§ã¯ãªãã®ã§ããã “ç¥ãããã®ä»çµã¿"ãã®ãã®ãééçŽ ãªãã®ã«ãªããã¡ã§ãããæ
ã«ç®çãšææ®µã亀åããŠããŸããã¡ã§ããããšæããŸããèªèº«ã®éå»ã®èŠãçµéšã§ããããŸãããä»çŸåšãé²è¡åœ¢ã®èª²é¡ã§ããããŸãã “éçšã®ããã®éçš"ã«ãªããªãããã« æã
ã®ç°å¢ã§ã¯ã·ã¹ãã ã«å¯Ÿãã å¯èŠ³æž¬æ§ïŒãªãã¶ãŒãããªãã£ïŒ ã確ä¿ããããã«Google Cloudã®ãããã¯ããç¬èªã«éçºãããéèšã®ä»çµã¿ãå©çšããŠããŸãã Google Cloudã®ãããã¯ãæ¯èŒçç°¡åã«äœ¿ãå§ããããšãåºæ¥ãŠãäžã€ãå®äŸ¡ã§ãããã®ã§ïŒäžéšå·¥å€«ãå¿
èŠã§ããïŒãšãŠã䜿ãããããããã¯ããæã£ãŠãããšæããŸãã ããããå
ã«è¿°ã¹ãä»çµã¿ã¥ãããç¶æã®è² æ
ãã·ã¹ãã èŠæš¡ã«æ¯ããŠå€§ãããªã£ãŠããŠããã “éçšã®ããã®éçšâ ã«ãªã£ãŠããŠããŸã£ãŠããç¶æ³ãèŠãã€ã€ãããŸããã ãŸããæåŸã® “SLI/SLOã®éçš"ãšãããŽãŒã«ãŸã§ãé·ããªããã ã«æãããŸããã å°ãå眮ããé·ããªããŸãããã以äžãŸã§ãèæ¯ãšããŠNew RelicãPoCããŠã¿ãŸããã å°å
¥ãã€ã³ã æã
ã®ç°å¢ã¯GKE/ã³ã³ããç°å¢ã®ããã³ããšã³ããšãVMã§æ§æãããããŒã¿ã¹ãã¢ãµãŒãããããŸãã
ã¿ãªãããããã«ã¡ã¯ïŒ ããããæ°åãšåä¹ãã®ãããããŸããæ°ããããªãã«ã ã§ãã ãªãã«ã ãããããŒã ã§ã¯ãã€ã³ãã©ã®ç®¡çã«Terraform Cloudã䜿ã£ãŠããŸãã Terraform Cloudãã管ç察象ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã«ã¯(åœç¶ãªãã)èªèšŒæ
å ±ãå¿
èŠã«ãªããŸãã æšä»ãæ°žç¶çãªèªèšŒæ
å ±ã¯ã»ãã¥ãªãã£ãªã¹ã¯ãšããŠåãåãããããã«ãªã£ãŠããŠãããããäŸãã°OIDCãå©çšããŠäžæèªèšŒã䜿ããªã©ãæ°žç¶çãªèªèšŒæ
å ±ãé¿ããæ¹æ³ãéèŠèŠããå§ããŠããŸãã ãšããããã§ä»åã¯Terraform CloudãšOIDCã«ãŸã€ããå°ãã¿ãããã€ã玹ä»ããŸãïŒ ä»åã¯ç®¡çãªãœãŒã¹ã¯AWSãšGoogle Cloudã«ããããšãåæãšããŸãã1 OIDCãå©çšããTerraform Cloudã§ã®ãªãœãŒã¹ç®¡çã®æŠç¥å³ã¯ä»¥äžãæ³å®ããŸãã 以äžã®ãããªæµãã§äžæçãªèªèšŒæ
å ±ãååŸããŸãã Terraform Cloudã®Workspaceã§Plan/Applyãããéã«åã¯ã©ãŠãã®IAMãµãŒãã¹2ã«ã¢ã¯ã»ã¹ããŒãèŠæ± åã¯ã©ãŠãã®IAMãµãŒãã¹ã¯Terraform Cloudã®OpenID Providerã«Workspaceã®æ
å ±ãåãåãã OpenID Providerã¯Workspaceã®æ
å ±ãIDããŒã¯ã³ãšããŠåã¯ã©ãŠãã®IAMãµãŒãã¹ã«æäŸ åã¯ã©ãŠãã®IAMãµãŒãã¹ã¯æäŸãããIDããŒã¯ã³ãããšã«ã¢ã¯ã»ã¹æš©éãèšå®ããæéä»ãã®ã¢ã¯ã»ã¹ããŒãçæãæäŸ OIDCãå©çšããŠTerraform CloudãããªãœãŒã¹ã«äžæèªèšŒã§ã¢ã¯ã»ã¹ OIDCãä»ããŠTerraform CloudãåçèªèšŒæ
å ±ãåŸãã«ã¯ããã€ãã®ã¹ããããèžãå¿
èŠããããŸãã åã¯ã©ãŠãã«Terraform Cloudã®OIDC ProviderãèªèããŠããã åã¯ã©ãŠãã§ã®ã¢ã¯ã»ã¹æš©éèšå® Terraform Cloudã®Workspaceã®ç°å¢å€æ°èšå® é ã远ã£ãŠèª¬æããŠãããŸãã 管çã¯ã©ãŠãåŽã«å©çšããOIDC Providerãèšå® ãŸãã¯ç®¡ç察象ã®ã¯ã©ãŠãã«å©çšããOIDC ProviderãèªèããŠããããŸãããã OIDC Providerã®èªèéšåã§ã©ã¡ããæããŠããã¹ããã€ã³ãã¯ä»¥äžã§ãã Issuer(OIDC Providerã®URL)ãæå® Terraform Cloudã§ã¯https://app.terraform.io Audience(OIDC ProviderãèªèšŒæ
å ±ãçºè¡ãã察象)ã®æå® AWSã§ã¯aws.workload.identity Google Cloudã§ã¯https://iam.googleapis.com/projects/{Project ID}/locations/global/workloadIdentityPools/{Workload Identity Pool Name}/providers/{Provider Name} åã¯ã©ãŠãã§ã®èšå®ãèšå®ç»é¢ã®ã¹ã¯ãªãŒã³ã·ã§ãããåºããªãã説æããŸãã ä»åã¯ãã¹ãŠã³ã³ãœãŒã«ããèšå®ããŸãã AWS ã³ã³ãœãŒã«ããIAM>ID ãããã€ããšé²ã¿ããããã€ãã远å ãã¿ã³ãã¯ãªã㯠ãããã€ãã®åçš®èšå®ãè¡ã ãããã€ãã®ã¿ã€ãã¯OpenID Connectãéžæ ãããã€ãã®URLã«https://app.
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã€ãŒãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»åã¯ãããã°ãªåŒïŒ VPC ããªã©ãã®èšå®é
ç®ããããããããã£ãã解説ãã ïœAWS SDK for Python (Boto3) ã³ãŒãããããïœ ããå±ãããŸãïŒ åçŽã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš AWS VPC ããªã©ãã®åºæ¬çãªèšå®é
ç®ãã©ããããã®ã AWS VPC ããªã©ãã®èšå®é
ç®ããšããããã©ãããã°ããã AWS VPC ãäœæãã AWS SDK for Python (Boto3) ã³ãŒã ãã®èšäºã§æžããªãããš AWS VPC ããªã©ãã®ãã¹ãŠã®èšå®é
ç®ãã©ããããã®ã AWS VPC ããªã©ãã®èšå®é
ç®ã®éžã³æ¹ AWS VPC ããªã©ãã®èšå®é
ç®ã®å¿çš AWS VPC ããªã©ãã®ãã¹ããã©ã¯ãã£ã¹ AWS VPC ããªã©ããš AWS ä»ãµãŒãã¹ãšã®é£æº Python ã³ãŒãã®è§£èª¬ å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã çè
ã®å°éå€ã®å
容ã«ã€ããŠã¯æå®ãé¿ããŠãããŸããããããããééããååšãããããšã¯ãæ¿ç¥ããäžããã èšäºã®å
容ã¯ãèšäºå·çæç¹ (2023/11) ã§ã®æ
å ±ã§ãããæ¿ç¥ããäžããã AWS VPC ããªã©ãã®èšå®é
ç®ããã£ãã解説ãã AWS ã§æãåãã«è§ŠããµãŒãã¹ãšããã° VPC ãããµãããããã«ãŒãããŒãã«ã ãšæããŸãã
ããã«ã¡ã¯ããã·ã€ã§ãã ã¿ãªããã¯ãã©ã®ããã« Kubernetes ãæŽ»çšãããŠããŸããã ãããã Windows container ãšã¯ 以åã«ãDocker ã§ãã£ãŠã¿ã Windows container ãšããèšäºãæžããŸããããããã«ããããããªãã¯ãããããŠãã芧ããã ãããããŠããŸãã§ããããã ãµã ã Docker ã䜿ã£ãŠ container ãå©çšããŠãããšãããšããããŠã㯠Linux application ã®å©çšã§ã¯ãªãã§ãããããå®ã¯ Windows container ãåæ§ã« Docker (for Windows) ã§å©çšãã§ããŸãããšããã®ãååã®èšäºã®å
容ã§ããã ä»åã¯ãKubernetes ãã Windows container ãå©çšããŠã¿ãŸãããã äœã®ããã«? å¿çšã»çšéãšããŠã¯ Windows ã§ããæäŸãããŠããªããœãããŠã§ã¢ã䜿çšã㊠CI jobã»batch åŠçã®ãããªãã®ãå®è¡ããããWindows application ã® build ãããããªã©ãèããããŸãã å
·äœçã«ã¯ Visual Studio ã§ãããšãã… ããããããããã§ããã ãã£ãŠã¿ãã GKE + Terraform ã§ãã£ãŠã¿ãŸãã cluster ã®éšåã¯ç¹å¥ãªããšã¯ãªãã®ã§ node pool ã®éšåã®ã¿æç²ããŸããã²ãšã€ã® cluster ã«ãLinux ãš Windows ã® node pool ãæ··åšãããããšãã§ããŸãã èšå®å
容ã¯äžéã確èªããŠãservice account ãªã©ã®éšåã¯çšéã»å¿
èŠã«å¿ããŠèª¿æŽããŠãã ããã
ã¯ããã« ãã®èšäºãèŠã€ãããã©ãåŸã§èŠãããšæã£ãããã®ããªãïŒ ãã²äžã®ãã¿ã³ãããããã·ã¥ã¿ã° #ããã°ãªåŒ ã§ãã€ãŒãããŠãããŸãããïŒ ããã«ã¡ããã°ãªãè²è€ãããŸã ãã ä»åã¯ãããã°ãªåŒïŒ EC2 ã®èšå®é
ç®ããããããããã£ãã解説ãã ïœAWS SDK for Python (Boto3) ã³ãŒãããããïœ ããå±ãããŸãïŒ åçŽã£ãŠïŒ ããã°ãªåŒã§ã¯ãäžèšã®ããã«ã¬ãã«ãèšå®ããŠããŸãã åçŽè
ïŒåããŠã¯ã©ãŠããµãŒãã¹ãå©çšãã人ã§ãåºæ¬çãªæäœïŒäŸïŒãã¡ã€ã«ã®ä¿åãããµãŒããŒã®èµ·åïŒãã€ã³ã¿ãŒãã§ãŒã¹ãéããŠè¡ãããšãã§ããŸãããŸããã·ã³ãã«ãªã»ãã¥ãªãã£ã«ãŒã«ã®èšå®ããäžéšã®åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«å¯Ÿå¿ã§ããŸãã äžçŽè
ïŒããæ·±ãç¥èãæã¡ãã³ãŒããçšããŠæäœãèªååããããããè€éãªã¿ã¹ã¯ïŒäŸïŒèªåã§ãµãŒããŒã®æ°ã墿žãããïŒãè¡ããŸãããŸããããé«åºŠãªç£èŠããå
šäœã®ã·ã¹ãã èšèšãšå®è£
ã«ã€ããŠçè§£ããããŸãã äžçŽè
ïŒå¹
åºãæ·±ãç¥èãæã¡ãå€§èŠæš¡ã§è€éãªã·ã¹ãã ãèšèšãå®è£
ãç¶æããèœåããããŸããæå
端ã®ãã¯ãããžãŒã掻çšããå®å
šæ§ãèé害æ§ãå¹çæ§ãæå€§åããããã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ããã°ãªåŒã£ãŠïŒ è²è€ãããŸãäœæããããã°èšäºã®ãã©ã³ãåã§ããããŸãæ°ã«ããèªã¿é£ã°ããŠãã ããã äœãæžãã®ïŒ 以äžã®éãã§ãã ãã®èšäºã§æžãããš AWS EC2 ã®åºæ¬çãªèšå®é
ç®ãã©ããããã®ã AWS EC2 ãäœæãã AWS SDK for Python (Boto3) ã³ãŒã ãã®èšäºã§æžããªãããš AWS EC2 ã®ãã¹ãŠã®èšå®é
ç®ãã©ããããã®ã AWS EC2 èšå®é
ç®ã®éžã³æ¹ AWS EC2 èšå®é
ç®ã®å¿çš AWS EC2 ãš AWS ä»ãµãŒãã¹ãšã®é£æº python ã³ãŒãã®è§£èª¬ å
責äºé
ãã®èšäºã«æžãããŠããããšã¯åŒç€Ÿã®æèŠã代衚ãããã®ã§ã¯ãããŸããã ãã®èšäºã«æžãããŠããããšã«ã¯äžå®ã®èª¿æ»ãšæ€èšŒã宿œããŠãããŸãããééããååšãããããšã¯ãæ¿ç¥ããäžããã çè
ã®å°éå€ã®å
容ã«ã€ããŠã¯æå®ãé¿ããŠãããŸããããããããééããååšãããããšã¯ãæ¿ç¥ãããã ããã èšäºã®å
容ã¯ãèšäºå·çæç¹ (2023/10) ã§ã®æ
å ±ã§ãããæ¿ç¥ãããã ããã AWS EC2 ã®èšå®é
ç®ããã£ãã解説ãã AWS ã§æãåºæ¬çãªãµãŒãã¹ãšããã° EC2 ã ãšæããŸãã
ã¯ããã« ããã«ã¡ã¯ãã¯ã©ãŠããšã³ãžãã¢ã®æ»ã§ããæè¿ã¯GCPé¢é£ã®ã€ã³ãã©ãç¹ã«GKEãKafkaã®æ§ç¯ãã¡ã³ããã³ã¹ãšç£èŠåšãã®æ¥åãæ
åœããŠããŸãã æ¬æ¥ã¯ã以äžã®æ§æå³ã®ããã«ãKafkaããåéããã¡ããªã¯ã¹ãå©çšããŠãKubernetesã®HPAãå¶åŸ¡ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãèªåçã«èª¿æŽããæ¹æ³ã解説ããããšæããŸãã Kubernetesã䜿çšããŠã³ã³ããåãããã¢ããªã±ãŒã·ã§ã³ããããã€ããéãã¢ããªã±ãŒã·ã§ã³ã®è² è·ããã©ãã£ãã¯ã®å€åã«æè»ã«å¯Ÿå¿ã§ããããšãéèŠã§ãããã®ããã«ãKubernetesã¯ã©ã¹ã¿ãŒå
ã®ã¢ããªã±ãŒã·ã§ã³ãèªåçã«ã¹ã±ãŒãªã³ã°ã§ããHorizontal Pod AutoscalerïŒHPAïŒãšããKubernetesã®åŒ·åãªæ©èœããããŸãã Kafkaã¯ã忣ã¡ãã»ãŒãžã³ã°ã·ã¹ãã ãšããŠã®åªããæ§èœãšä¿¡é Œæ§ãæäŸããäžæ¹ããã©ãã£ãã¯ã®å€åã«é©å¿ã§ããã¹ã±ãŒãªã³ã°ã¡ã«ããºã ãæ±ããããŸãã å©çšããæè¡ã®äžèЧ Kafka_exporter kafkaã¯ã©ã¹ã¿ãŒã®ã¡ããªã¯ã¹ãåéããããã®exporter Custom-prometheus GKEçšprometheusãšã³ãžã³ããããã€ãããexporterããã¡ããªã¯ã¹ã宿çã«ååŸããMonarchã«ä¿åããããšãå¯èœ Monarch Monarch ã¯ããã¹ãŠã® Prometheus ããŒã¿ã 24 ãæéã远å è²»çšãªãã§ä¿åããããŒã¿ããŒã¹ Stackdriver-adapter ã«ã¹ã¿ã ææšãHPAã«å©çšãããããããã«ããã¢ããã¿ãŒ HPA 管ç察象ãšãªãPodã®æ°ããæå®ããã¡ããªã¯ã¹ïŒäŸãã°CPU䜿çšçïŒã«åºã¥ããŠèªåçã«ã¹ã±ãŒã«ããã å®è£
äŸãšæ³šæç¹ Kafka_exporter SystemãµãŒãã¹ãšããŠKafkaã¯ã©ã¹ã¿ãŒã«å®è£
ãããŸãã æ³šæç¹ GKEã®Podã®cidrããã®TCPã¢ã¯ã»ã¹ãFirewallã§èš±å¯ããå¿
èŠããããŸã(ããã©ã«ãã®ããŒã: 9308)ã Custom-prometheus gkeã§prometheus-engineãå®è£
ããprometheusã®scrape_configsã«äžèšã®äŸã®ããã«èšå®ããŸãã apiVersion:v1kind:ConfigMapmetadata:namespace:gmp-publicname:custom-prometheusdata:config.yaml:|global: scrape_interval: 30s scrape_configs: - job_name: kafka-exporter static_configs: - targets: ['kafka:9308']custom-prometheusã®GUIã®status â targetã§ãkafka-exporterã®ã¹ããŒã¿ã¹ãUPã§ããã°OKã Stackdriver-adapter 泚æç¹ ã«ã¹ã¿ã APIãµãŒãã¹ãäœæããã«ã¯ãControl Planeããstackdriver-adapterããã®ã¢ã¯ã»ã¹ãå¿
èŠãªã®ã§ãFirewall Ruleã«Control Planeã®cidrããnodeãžã®TCPã¢ã¯ã»ã¹(ããŒã:443)ãèš±å¯ããå¿
èŠããããŸã stackdriver-adapterã¯ãµãŒãã¹ã¢ã«ãŠã³ãcustom-metrics-stackdriver-adapterãäœæããå©çšããããããã©ã«ãã§ã¯æš©éããªãããã403ãšã©ãŒãçºçãããè§£æ±ºæ¹æ³ãšããŠã custom-metrics-stackdriver-adapterã«GCPã®ãµãŒãã¹ã¢ã«ãŠã³ãïŒäŸãã° stackdriver-adapter-wi@<project_id>.iam.gserviceaccount.comïŒãšãã€ã³ãããroles/monitoring.viewerã®æš©éãä»äžããŸã å®è£
ãäžæãããã°ã以äžã®ãšããã«K8sã«ã«ã¹ã¿ã APIãµãŒãã¹ãïŒã€äœæãããŸãã custom.metrics.k8s.io/v1beta1 custom.metrics.k8s.io/v1beta2 external.metrics.k8s.io/v1beta1 äžèšã®ã³ãã³ãã§ã«ã¹ã¿ã ã¡ããªã¯ã¹ã®APIã確èªã§ããŸãã