2023/3/24ãEncraft #1 ããã³ãã¨ã³ãÃè¨è¨ã«ã¦çºè¡¨ããè³æã§ãã

2023/3/24ãEncraft #1 ããã³ãã¨ã³ãÃè¨è¨ã«ã¦çºè¡¨ããè³æã§ãã
ãããã«ããã·ã¹ãã æ§æå³ã¨ã¯ ãããªã·ã¹ãã æ§æå³ãæ¸ãã¦ãªãã§ããããï¼ ãã®ã·ã¹ãã æ§æå³ã®ãããã«ããç¹ãï¼ã¤ããã¾ãããã㯠製ååã¯æ¸ãã¦ããããå½¹å²ããæ¸ãã¦ããªã ãã¼ã¿ã¨å¦çãåºå¥ã§ããªã ãã¼ã¿ã®æµãã¨å¶å¾¡ã®æµããåºå¥ã§ããªã ã®ï¼ã¤ã§ãã ããããããã·ã¹ãã æ§æå³ ãããï¼ã¤ã®ãããã«ããç¹ãæ¹åããããããããã·ã¹ãã æ§æå³ãâã§ã ãã¤ã³ãã解説ãã¦ããã¾ã ãã¤ã³ã1. 製ååç§°ã§ã¯ãªããå½¹å²ããæ¸ã ã·ã¹ãã æ§æå³ã«ã¯è£½ååç§°ã§ã¯ãªãã·ã¹ãã ã³ã³ãã¼ãã³ãã®ãå½¹å²ããæ¸ãã¾ãã å½¹å²ã¨ã¯ãä¾ãã°ãããã¼ã¿ãããå¦çã¨ãã£ããã¨ã§ããããããèªãã ãã§ã·ã¹ãã ã®åããçè§£ã§ããæååã§ããå½¹å²ããããã«è£½ååç§°ã®ã¿ãæ¸ãã¦ãã¾ãã¨ããã®è£½åãç¥ããªã人ãè¦ãã¨ãã«çè§£ã§ãã¾ãããä¾ãã°ãCloud Pub/Subãã¨ãã製åã¯GCPã¨ãããããªãã¯ã¯ã©ã¦ãã®å
ãã®è¨äºã¯ Gunosy Advent Calendar 2017ã®5æ¥ç®ã®è¨äºã§ããååã®è¨äºã¯Gunosyã®ãã¼ã½ãã©ã¤ãºãæ¯ããæè¡ -ã¯ã¼ã¯ããã¼ç·¨-ã§ããã Goã§APIãæ¸ãã¨ãã®åé¡åã®å¨ç±ããGunosyã¯Goãæï¼ï¼ï¼ããæ¬çªæ¡ç¨ãã¦ããã¾ãã¦ããã¦ãã¦ãæ½¤æ²¢ã«æºã¾ã£ã¦ãã伿¥ã ã¨è¨ãã¾ãã ããããcontextã®æ±ãããã¹ããªããã±ã¼ã¸æ§æããã¹ããnet/httpã§APIãæ¸ããã¦ãã¦ãªã©ãªã©ãè¿·ããã¨ã¯å¤ã ããã¾ãã ããã¯å¼ç¤¾ç¹æã®äºæ ã§ã¯ãªããGoã®ãµã¼ãã¼ãµã¤ãã¨ã³ã¸ãã¢å ¨å¡ã«ã¨ã£ã¦ã®åé¡ã§ããä¸ã§ããããã±ã¼ã¸æ§æãã©ãããã°ããã®ãï¼ç¸äºåç §ããã«å¿«é©ã«éçºãé²ããããããã±ã¼ã¸æ§æã¨ã¯ï¼ãè¦ã¤ããã®ã¯çµæ§é£ãããåã ã®ãã¼ã ã«ãä»»ããã¨ããç¶æ³ã§ãã ä»åã¯ä¸è¨ã®åé¡ã®ãã¡ãããã±ã¼ã¸æ§æã«è¸ã¿ããã§è¦ããã¨ãããã¾ããä¼ç¤¾ã§ãããããã±ã¼ã¸æ§æãã©ã
ããã¾ã ä»å¹´ï¼2016å¹´ï¼ï¼æï¼ï¼æ¥ãã¤ã®ãªã¹ã§å ¨ãæ°ããéè¡ãèªçãã¾ããã ã¤ã®ãªã¹ã®éèå½å±ãPRA ãããMonzo Bank Ltdããå¶éä»ãã§èªå¯ãï¼ï¼ï¼ï¼å¹´ï¼æã«è¨ç«ä»¥æ¥ãå¥ã®ã«ã¼ãä¼ç¤¾ã¨ææºãã¦ããªãã¤ãã«ã¼ããçºè¡ãããã®å©ç¨ç¶æ³ãã¹ããçã§å³æã«ç¢ºèªã§ãããµã¼ãã¹ãéãããé¡§å®¢ã«æä¾ãã¦ãã¾ããããããããå½å±ã¨ã®èª¿æ´ãé²ããï¼ï¼ï¼ï¼å¹´ååãç®å¦ã«éè¡ã¨ãã¦ã®æ¥åãéå§ãã¹ãæºåãé²ããã¨ã®ãã¨ã§ãã æè¡è¦ç´ éå»ã«Uberã®ç«¶åã§ããHailoããã¤ã®ãªã¹ã®ãªã³ã©ã¤ã³ã«ã©ãªã±ãµã¼ãã¹çã§ã¨ã³ã¸ãã¢ãåããç¾å¨ Monzo ã® Head of Engineering ã§ãã Oliver Beattieæ°ããå ¬å¼ããã°ã§ãBuilding a Modern Bank Backendãã¨é¡ããæè¡è¦ç´ ã«ã¤ãã¦ã®èª¬æããã¦ããã®ã§ããã®å 容ãç°¡åã«ç´¹ä»ãã¾ãã ãã¤ã¯
DBã¨ã³ã¸ãã¢ã®ããã®æè¡åå¼·ä¼ï¼ç¬¬3åï¼ã§ä½¿ç¨ããè³æã§ãã主ã«ãªã¬ã¼ã·ã§ãã«ã¢ãã«ã¨æ£è¦åã«ã¤ãã¦è§£èª¬ãã¦ãã¾ãããªã¬ã¼ã·ã§ãã«ã¢ãã«ã®éçã«ã¤ãã¦æ£ããèªèãã¦ããããªã¬ã¼ã·ã§ãã«ã¢ãã«ãçè§£ããã¨è¨ããã¨æãã¾ãã
æ¯åº¦ããªãã¿ãã¯ã¦ãã®ãããã¨ã³ããªã«ãSIããã¡ã«ããè² ã®ã¹ãã¤ã©ã«ãã¨ããã¿ã¤ãã«ã®ã¾ã¨ããæ²è¼ããããããã æ°ã¨ã¯ããªãè¦ç¹ã¯éããã®ã®ãéçºç¾å ´ã®åé¡ç¹ã«ã¤ãã¦ã¯å°ãæãã¨ãããããã®ã§æè¦ãæ¸ãã¦ã¿ããã¨æããã¨è¨ã£ã¦ãã以ä¸ã®è©±ã®å 容ã¯ãã¼ã¿ãã¼ã¹ã¢ããªã±ã¼ã·ã§ã³ã«éå®ãã話ã§ãããã¾ãSIerã ãã«éã£ã話ã§ã¯ãªãã®ã§ãã®ç¹ã¯ã容赦é ãããããã¡ããSIeråä½ã®æ¡ä»¶ã¯ãã¼ã¿ãã¼ã¹ã¯å¿ é ãªã®ã§ãæ¬ã¨ã³ããªã§è§¦ããåé¡ç¹ã«ã¯è©²å½ããã ããã Q.ãªãçä¸ããã®ãï¼ A.æ£ãããã¼ã¿ãã¼ã¹è¨è¨ãã§ãã¦ããªãããçµè«ããè¨ããããã¼ã¿ãã¼ã¹ã¢ããªã±ã¼ã·ã§ã³ã®éçºãçä¸ããã®ã¯æ£ãããã¼ã¿ãã¼ã¹è¨è¨ãã§ãã¦ããªãããã ãããã§ãããæ£ãããã¨ã¯ãè«ççã«è¨¼æã§ããæ£ããã¨ããæå³ã§ã¯ãªãããæ¬æ¥ããããã¹ããã¨ãã£ãæå³ã§æãã¦æ¬²ããã ãçä¸ãã¨ããã®ã¯ãä¾ãã°ãã¹ããéããªããã
ããã¶ãæéãããã¦ãã¾ã£ããã©ãå¤§è¦æ¨¡ã³ã³ã·ã¥ã¼ãåããµã¼ãã¹RDBè¨è¨ã®ç¶ãã åã¯ãã®ããã¸ã§ã¯ããèªåã®RDBã®ç¥èã使ã£ã¦é©æ°ãã¦ãããã¨æã£ã¦è¨ãã ã ãããçµæã¨ãã¦éã«ãã³ã³ã·ã¥ã¼ãåããµã¼ãã¹ã«æé©åãããRDBã®ä½¿ãæ¹ã«ã¤ãã¦æãããã¨ã«ãªã£ãã â» ãã¨ãKVSã§ãããããã£ã¦è¨ã£ã¦ã人ããããã©ãããã¯KVSå°å ¥ã®è¦å´ãç¥ããªã人ã ã¨æããKVSã®è¦å´ã¯å¾ã§æ¸ãã åããæè¿æããã¦ããã®ã¯ãã¨ã¦ãå¤§è¦æ¨¡ãªã³ã³ã·ã¥ã¼ãåããµã¼ãã¹ã ã 100ä¸äººã®å¥ç´ã¦ã¼ã¶ã使ãã1ãã¼ãã«ã«1åã¬ã³ã¼ã以ä¸ã®ãã¼ã¿ã貯ãã24æéæ¢ãããã¨ã許ãããã è¦æ±ããå¿çã¾ã§ã®ã¿ã¼ã³ã¢ã©ã¦ã³ãã¿ã¤ã ã1ç§ä»¥å ã¨ããå³ããSLAã®ãµã¼ãã¹ã§ããã ä¸ã§ãåã¯DBããã¬ã¼ã ã¯ã¼ã¯ã®è¨è¨ã¨ã¢ã¼ããã¯ãã£ã½ããã¨ãæ å½ãã¦ããã åããã®ç¾å ´ã«æ¥ã¦ã驿ããæåã2ã¤ãã ããã¯ãJoinç¦æ¢
éçºç¾å ´ã¯æ¥ã ã®ä»äºã®å ´ã§ããã¨ã¨ãã«ãå¦ã³ã®å ´ã§ããããå 輩ã¨ã³ã¸ãã¢ãéå»ã«ç´é¢ããå°é£ã®æ°ã ãããããå¦ãã ã¹ãã«ãèãæ¹ãç´¹ä»ããã ææ¸ä½ãã¯å¥½ãã§ããï¼ ä»åãããã®é£è¼ãæ å½ãããã¾ããã¢ã¯ã»ã³ãã¥ã¢ã»ãã¯ããã¸ã¼ã»ã½ãªã¥ã¼ã·ã§ã³ãºã®å®®æ¬åæ´ã§ãã ã·ã¹ãã éçºããã¸ã§ã¯ãã§ã¯ããã¾ãã¾ãªææ¸ãä½ããã¾ããç§ã®é£è¼ã§ã¯ãã®ææ¸ã«æ³¨ç®ãããææ¸ããªãã³éçºãã¨ããèãæ¹ãç´¹ä»ãããã¨æãã¾ãã ææ¸ããªãã³éçºã¯ç§ã®é èªã§ãããææ¸ã使ããããã¨ã«ãããå ·ä½çãªéçºä½æ¥ãé²è¡ãã¦ããããã¨ãæå³ãã¦ãã¾ãã å¤ãã®ITã¨ã³ã¸ãã¢ã¯ãææ¸ä½ãã§ã¯ãªããåããã®ãä½ããã¨ã«æ¥½ãããè¦ãã ãã¨æãã¾ãããã®ä½æ¥ã®æ¥½ããã®ä¸ã«ã¯ãã·ã¹ãã ã®è¨è¨ã«æ©ã¿ãåä½å®è¨¼å®é¨ãç¹°ãè¿ã楽ãããå«ã¾ãã¦ããã®ã§ã¯ãªãã§ãããããããã®ä»çµã¿ã§ã¡ããã¨åãããªï½ãã©ãããªï½ãã¨è©¦ãã¦ã¿ããã¨ããã¯ã¯
ã¿ã¤ãã«ã¯ç ½ãå ¥ã£ã¦ã¾ããã ä»®ã«åçãã¼ã¸ãçæããã®ã«ãããæéã1ç§ããã®ãã¡ãã¼ã¿ãã¼ã¹ãmemcachedçãªã¢ã¼ããµã¼ãã¸ã®åãåããæéãé¤ãããCPUã®å¦çæéã0.1ç§ã¨ãããã¾ãããã¼ã¯ã®ãªã¯ã¨ã¹ãå¦çéã¯ãå¹³åã®ï¼åã¨ããã ããããã¨ãã¯ã¢ããã³ã¢ã®ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã§å¦çã§ãããªã¯ã¨ã¹ãã¯ã 4 core * 10 reqs/sec * 86,400 sec/day * 30 day/mon / 2 = 51,840,000 reqs/mon ã¨ãç´5,000ä¸PV/æãï¼å°ã§æãããã¨ã«ãªãã CPUãåãã¦ããæéã¯å ¨å¦çæéã®10åã¨ä»®å®ããããã ãããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã®æå¤§åææ¥ç¶æ°ã¯ 4 core * 10 = 40 ç¨åº¦ããã°ãããã¨ã«ãªããå®éã«ã¯ãå®å ¨ä¿æ°ãï¼åãã㦠80 ã¨ãããªã¯ã¨ã¹ãã®å¦çã«å¿ è¦ãªã¡ã¢ãªéã 100MB ã¨ããã¨ã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}