AppMetricaãåéããããŒã¿ã¯ãåæã ãã§ãªãã奜ããªããã«æ©èœãããããšãã§ããŸãã ãŠãŒã¶ãŒã®è¡åã«çŽæ¥ãŸãã¯éæ¥çã«é¢é£ããå€ãã®ããã»ã¹ãèªååã§ããŸãã éçºè
ã®Nikolay Volosatovã¯ãã¢ããããŒãã®èšå®æ¹æ³ã䜿çšã§ããããŒã¿ã®çš®é¡ãLogs APIã®éçºæã«ééããèœãšãç©Žã«ã€ããŠè©±ããŸããã
-ç§ã®ååã¯ãã³ã©ã€ã»ãŽã©ããµããã§ããYandexã¢ãã€ã«éçºéšéã§åããŠããŸãã ç¹ã«ãiOS SDK AppMetricaãéçºããŠããŸãã ç§ã¯3幎以äžåããŠããŸãã
æ¬æ¥ã¯ãAppMetricaãçµ±åããŠããŠããèããããšããªããèããããšããããããããŸããããäžåºŠã䜿çšããããšããªãæ©èœã«ã€ããŠèª¬æããŸãã ãã®ãµãŒãã¹ã¯Logs APIãšåŒã°ããéèšãããŠããªãããŒã¿ãã¢ããããŒãã§ããŸãã ãã®è£œåã®æçšæ§ã䜿çšæ¹æ³ããã®è£œåã«ã€ããŠç¥ã£ãŠããã¹ããã¹ãŠã®ããšã説æããŸãã ãŸããAPIããŒã¿ã®åŠçãèªååããããŒã«ã®éçºäžã«ééããããšã埮åŠãªç¹ãããããã¹ãŠã®èåŸã«ããå°é£ã«ã€ããŠã説æããŸãã 補åèªäœãšãã®æ©èœã®äž¡æ¹ã«èå³ãæã£ãŠããŸããããã«ã€ããŠã¯ã話ãããŸãã
AppMetricaã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³åãã®æ±çšåæããŒã«ã§ãã ã€ã³ã¹ããŒã«ãåºåãã£ã³ããŒã³ããã¯ã©ãã·ã¥ãã°ãŸã§ã®åæãè¡ãããšãã§ããŸããããã ãã§ãã ãŸãããã¹ãŠã®äž»èŠãã©ãããã©ãŒã ïŒiOSãAndroidãWindows PhoneïŒã®SDKãšããŠãæäŸãããŸãã ãŸããUnityãCordovaãXamarinã®ãã©ã°ã€ã³ã®åœ¢ã§ã
SDKèªäœã«ã€ããŠè©³ãã説æããããšã¯ã§ããŸãããããã®ãµã€ãã§ã¯ããã¥ã¡ã³ãããã®ä»ã®ã¬ããŒããèŠãããšãã§ããŸããSubbotnikiã§ãã®è£œåã«ã€ããŠè©±ããŠãããšããã§ãã ããªãã¯ãããåŠã¶ããšãã§ããŸã-ããªãã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§åœ¹ã«ç«ã€ãããããŸããã
æ¬æ¥ã¯ã補åã®ããŸãç¥ãããŠããªãæ©èœãã€ãŸãééèšããŒã¿ã®ã¢ããããŒãã«ã€ããŠã話ããŸãã ããã¯äœã§ãã ãµãŒãã¹ã«ãã£ãŠåéããããã¹ãŠã®ããŒã¿ã䜿çšããŠãWebã§ã¬ããŒããäœæããŸããããã«ãããåŸåãã¢ããªã±ãŒã·ã§ã³ã®åäœãç£èŠãç£èŠã§ããŸãã ãã ãããã®ãã¹ãŠã®ããŒã¿ã¯ãããŒã¿ãä¿åãããŠããééèšåœ¢åŒã§ã¢ã³ããŒãããå¿
èŠã«å¿ããŠãŠãŒã¶ãŒã«æäŸããããšãã§ããŸãã
ã©ã®ããŒã¿ã䜿çšã§ããŸããïŒ ãŸããåºåãã£ã³ããŒã³ã«é¢ããæ
å ±ã ãŠãŒã¶ãŒã¯ãªã³ã¯ãã¯ãªãã¯ããã¹ãã¢ã«ã¢ã¯ã»ã¹ããŠã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ããŸãããã¹ãŠã®æ
å ±ããããŸããããšãã°ãåºåãã£ã³ããŒã³ã®å¹æãåæããããç®æšãèšå®ããããç£èŠãããããããã®å
éšãµãŒãã¹ãšçµ±åãããã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«æ£ç¢ºã«ã©ãããã€ã³ã¹ããŒã«ãããŠãããã«é¢ããæ
å ±ãæ¡åŒµã§ããŸããããã¯å¹ççã«æ©èœããŸãã ããã«ããããæ°ãããã©ããã«é¢ããæ
å ±ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãŸãã¯åã€ã³ã¹ããŒã«ã§ãã
ããåºãã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§éä¿¡ãããã€ãã³ãã«é¢ããæ
å ±ã§ãããWebã§ããã«åæã§ããŸãã
ãŠãŒã¶ãŒã»ãã·ã§ã³ã®éå§ãšãšãã«ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®æäœãéå§ãããšããã»ãã·ã§ã³ãåããŠéãããšãããŸãã¯ã»ãã·ã§ã³ã¿ã€ã ã¢ãŠãåŸã«å±éãããšãããããã®ããŒã¿ã¯ãã¹ãŠãã¢ããªã±ãŒã·ã§ã³å
ã§ã®ãŠãŒã¶ãŒã®è¡åãåæããç»é¢ãã©ã®ããã«æ©ãåãããåæããã®ã«äŸ¿å©ã§ããããããã«å¹æçã«è²©å£²ã«ã€ãªãããã«ã€ããŠé·åŒãã ã»ãŒã«ã¹ãã¡ãã«ã ããªãã䜿çšã§ãããã®ã«å ããŠãããããã¹ãŠã®æ
å ±ã¯ãããªããåºåãã£ã³ããŒã³ãè¡ãããŒãããŒã«ãšã£ãŠæçšã§ãã
å¥ã®èå³æ·±ãæ©èœã¯ãã¯ã©ãã·ã¥ãšãšã©ãŒã®ã¢ã³ããŒãã§ãã ããã«ã¯åµé æ§ã®äœå°ããããŸããããšãã°ã課é¡ãã©ãã«ãŒãšçµ±åããããäŒæ¥ã®ã¡ãã»ã³ãžã£ãŒãšçµ±åããããéç¥ãSlackã«éä¿¡ãããã§ããŸãã æ°ããã¯ã©ãã·ã¥ãçºçããå Žåã¯ããã®æ
å ±ãåéãããã±ãããéå§ããã¯ã©ãã·ã¥ãçºçããåæ°ã«é¢ããã¬ããŒããé±ã«1åããã«æžã蟌ãããšãã§ããŸãã ãŸããã¯ã©ãã·ã¥ãä¿®æ£ããããšãçµ±åã«ãéç¥ãå±ããŸãã
ããã«ãããã·ã¥éç¥ãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ããããã«å¿
èŠãªæ
å ±ãã¢ããããŒãã§ããŸãã åœç€Ÿã®ãµãŒãã¹ã§ã¯ãSDKããŠãŒã¶ãŒããã£ã«ã¿ãªã³ã°ã§ãããã¹ãŠã®ã»ã°ã¡ã³ãã«ããã·ã¥ãéä¿¡ã§ããŸãã ããããããã§ååã§ãªãå ŽåããŸãã¯ããã·ã£ã®éä¿¡ã«é¢ããŠéåžžã«å
·äœçãªå¥œã¿ãããå Žåã¯ãèªåã§éä¿¡ããããèªåã§éä¿¡ãããã§ããŸãã
ã¢ããããŒãã€ã³ã¿ãŒãã§ã€ã¹ã¯éåžžã«ã·ã³ãã«ã§ãã ããã¯ãéçºã ãã§ãªããäžè¬çã«ã³ã³ãã¥ãŒã¿ãŒã§äœæ¥ããããšãããã»ã©é ã人ã䜿çšã§ããŸãã åçŽãªãµã€ããã¡ããªãã¯ãããŒã¿ãšã¯ã¹ããŒããããŒã¿ã¿ã€ãããã©ãŒããããå¿
èŠãªããŒã¿ãæéééããã£ãŒã«ãããã£ã«ã¿ãŒããã®Webãã§ã€ã¹ã CSVããã³JSONã¢ããããŒã圢åŒããµããŒããããŠããŸãã [ããŒã¿ã®çæ]ãã¯ãªãã¯ããããŒã¿åŠçãã¥ãŒãééãããŸã§åŸ
ã¡ãŸãã åçãçæãããéåžžã®ãã¡ã€ã«ãååŸãããŸãã
ããŒãã®äžã«ã¯äœããããŸããïŒ ç«¯æ«ãä»ããŠè¡ãããšã«ããå Žåããªã¯ãšã¹ãã¯éåžžã«ç°¡åã§ãã ãµãŒãã¹ãžã®å®æçãªGETãªã¯ãšã¹ããäœæããŸãã ããã«ã¯ãèªèšŒããŒã¯ã³ãåçŽãªOAuthããŒã¯ã³ãããã³ãã¹ãŠã®åããã£ãŒã«ãïŒå¿
èŠãªããŒã¿ããã£ã«ã¿ãŒããã£ãŒã«ããåïŒãå¿
èŠã§ãã èŠæ±ãè¡ããšã202ã®HTTPå¿çã³ãŒããåãåããŸãããã¹ãŠãæ£åžžã§ããã°ãèŠæ±ã¯ãã¥ãŒã«å
¥ããããããŒã¿ã®çæäžã«èŠæ±ããšã«202ãåãåããŸãã ãŸãã¯ããšã©ãŒã³ãŒããå«ãäœããã®çš®é¡ã®åçïŒ403-èªèšŒãšã©ãŒã200-ãã£ãŒã«ããééã£ãããŒã¿ã«å±ããŠããå Žåã«èª€ã£ãŠçæããããªã¯ãšã¹ãã239-ã¯ã©ãŒã¿ãè¶
ããŸããã
䞊è¡ããŠãã¢ããªã±ãŒã·ã§ã³ããšã«3ã€ã®èŠæ±ãäœæã§ããŸãã è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ãããã«ãªã¯ãšã¹ããè¡ãããšãã§ããŸãã ã¢ããããŒããããããŒã¿ã®ãµã€ãºã¯5 GBãè¶
ããªãããã«ããŠãã ããã ããã§ãå¶éæéãè¶
ããããšãã§ãããšããäºå®ã«é¢é£ããŠãäœããã®æ¹æ³ã§ã¯ãšãªãäžæããéžæãæžããæ¹æ³ãåŠã¶å¿
èŠããããŸãã ãã ããããã°ããŒã¿ãååŸããå¿
èŠããããäœãããã£ã«ã¿ãªã³ã°ããããã£ãŒã«ããå°ãªããããã§ããªãå Žåã¯ããªã¯ãšã¹ããè€æ°ã®éšåã«åçŽã«åå²ããæ©èœã圹ç«ã¡ãŸãã 2ã€ã®æ°ãããã©ã¡ãŒã¿ãŒãparts_countããã³part_numberã ããŒã¿ã»ããå
šäœã1ã€ãã€ç¹°ãè¿ããã¢ããããŒãããŸãã ãµãŒããŒã«ãã£ãŠå¿çãçæããããšã200ãåãåããå¿çã®æ¬æã«å¿
èŠãªãã¹ãŠã®ããŒã¿ãåãåããŸãã
ã·ã³ãã«ã«èŠããŸãããèªååããŠã¿ãŸãããã ã»ãšãã©ã®å Žåã販売ç®æšå°éããã»ã¹ã§ãããã¯ã©ãã·ã¥åæã§ãããåææ¡åŒµæ©èœãéçºããŠãããšãã«èªååããå¿
èŠããããŸãã
ã»ãšãã©ã®å Žåã3ã€ã®éšåã§æ§æãããŸãã ããŒãžã³ã°ãããããŒã¿ãã¢ããããŒãã¹ã¯ãªããèªäœãããã³ã€ã³ã¿ãŒãã§ã€ã¹ãä¿åããããŒã¿ããŒã¹ãå¿
èŠã§ãã ãããäœããã®åæã§ããå ŽåãWebã€ã³ã¿ãŒãã§ãŒã¹ã§ãã ã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒãŸãã¯èª²é¡è¿œè·¡ã·ã¹ãã ãšã®çµ±åã補åã®ä»®æ³ã€ã³ã¿ãŒãã§ã€ã¹ã§ããå Žåãã¬ããŒãããã³ãã¡ããã¯ãšãªãããŒã¿ããŒã¹ã«éä¿¡ããŸãã
å®è£
ããã¢ããããŒãã¹ã¯ãªããã§ã¯ãããŒã¿ããŒã¹ãšããŠäœ¿çšããæãè«ççãªãã®ãšããŠäœ¿çšããããšã«ããŸããã ããã¯ãšã³ãã§äœ¿çšããããã®ã ããã¯ClickHouseããŒã¿ããŒã¹ã§ãããã©ããã§èããããšããããããããŸããã ããããæ¬çªç°å¢ã§äœ¿çšããããšãã§ããŸãã CERNã§ã¯ãããçš®ã®åæãé »ç¹ãªã€ãã³ããä¿åããããã«èšèšãããçŽ æŽãããããŒã¿ããŒã¹ã䜿çšãããŠããŸãã ãã®ããŒã¿ããŒã¹ã«ãããåæ£äœæ¥äžã«ããŒã¿ãæ¿å
¥ãéžæãéžæããããã®é©ãã»ã©é«éãªã¯ãšãªãäœæã§ããŸãã
ããŒã¿ã¯ããã»ã©å€§ãããªããäžåºŠã«5 GBãããããŸãããããããã®çµ±èšãäœå¹Žãã¢ããããŒãããå Žåãæçµçã«ã¯ã¬ããŒããäœæããããã«é«éåãå¿
èŠã«ãªããŸãã 次ã«å¿
èŠãªã®ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãšããã«ã¯ãšãªãäœæããããšã§ãã ããã«ã€ããŠã®èšäºãæºåãããŠãããåã販売ç®æšå°éããã»ã¹ã®ããŒã«ãéçºããMaria Mansurova miptgirlã«ãã£ãŠHabréã§ãªãªãŒã¹ãããŸãã
ä»æ¥ã¯ããã®çš®ã®ããŒã¿ã®ããŒãã®æŽæ°ã«é¢é£ãããã¥ã¢ã³ã¹ã«ãã¢ã³ããŒãã«çŠç¹ãåœãŠãŸãã ãªãŒãã¡ãŒã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®éçºäžã«çºçããå¯èœæ§ã®ããåé¡ã調ã¹ãŠã¿ãŸãããã
æåã«åºäŒã£ãã®ã¯ã倧éã®ããŒã¿ã§ãã 2017幎ã5 GBã®å€§å®¹éãåŒã³åºãããšã¯åaspã§ãããã¢ããããŒãçšã®ã¹ã¯ãªãããéçºããããšã¯ãAmazonã®æå°ã€ã³ã¹ã¿ã³ã¹ã§ããã¬ã¬ãŒãžå
ã®ãã·ã³ã§ããæå°ç°å¢ã§åäœããããšãæå³ããŸãã ã©ãã«ã§ãåãäžããã®ã§ã¯ãªãããã¹ãŠãRAMã«åããå¿
èŠããããŸãã ãŸããåããã·ã³äžã§ClickHouseããŸã å転ããŠããå Žåãåé¡ãçºçããããŒã¿ããŒã¹ã«äžåºŠã«5 GBãæ¿å
¥ã§ããŸããã
åãåã£ãããŒã¿ãç Žå£ããããšãåŠã¶å¿
èŠããããŸãã CSVãã¢ã³ããŒãããŸããããã¯ã¹ããªãŒãã³ã°ã§ãããã©ã€ã³ã«åã€ããšãã§ããŸãã ãããæåã§è¡ãããšã¯éåžžã«å°é£ã§ãã CSVããŒãµãŒãäœæããããã«æžãã人ã¯èª°ã§ããæ°ããè¡ãåå²ããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãããšãç解ããŠããŸãã
ãã³ãã䜿çšããŸããã¹ã¯ãªããã¯Pythonã§èšè¿°ãããŠããŸãã Pythonã§ããŒã¿ãæ±ã人ã¯èª°ã§ããã®ã©ã€ãã©ãªãç¥ã£ãŠããŸãã èªã¿åãCSVã¡ãœããã¯ããã®çš®ã®åé¡ã«å¯ŸããŠååãªæè»æ§ãåããŠããŸãã
ããã¯ã倧ããªãªã¯ãšã¹ãã现ããåå²ããã³ãŒãã®äžéšã§ãã ãããã¯ãŒã¯ããã®ã¹ããªãŒã ã¯ãå
¥åãAPIããã®ã¹ããªãŒã ãããã³åºåã«äŸçµŠãããnè¡ã®ãã£ã³ã¯ãæã€å埩åãååŸããŸãã éåžžã«ç°¡åïŒäžåºŠã«å¿
èŠãªRAMã®éãæžãããŸããã
次ã®åé¡ã¯ããŒã¿ã®æŽæ°ã§ãã ããã§ã¯ããµãŒãã¹ããã®æ§é ãšæ§è³ªã§ã©ã®ãããªããŒã¿ãæäŸãããã確èªããå¿
èŠããããŸãã
äžæçãªæ§è³ªã«å¿ããŠãããã€ãã®ã°ã«ãŒãã«åããããšãã§ããŸãã 1ã€ç®ã¯ããµãŒããŒäžã§çæãããããã«ä¿åããããµãŒããŒããŒã¿ã§ãã æå°éã®é
延ãçºçããŸãã ã€ãã³ããçºçããã¯ãªãã¯ãçºçããLogs APIãä»ããŠã¢ããããŒãã§ããŸãã
ãããšã¯å¥ã«ãããã·ã¥ããŒã¯ã³ããããŸãã 3é±éåã«ããã·ã¥ããŒã¯ã³ãã¢ã³ããŒãããããšã¯ã§ããŸããã ãããã¯çºè¡ãããé¢é£æ§ãããã ãã§ãç¹å¥ãªæš©å©ã«ã€ããŠããã«ãããŸãã
ãããŠ-Logs APIããã®å¿çã®éèŠãªéšåã¯ãã¯ã©ã€ã¢ã³ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã®ãã®ã§ããããã¯è«ççã§ããããã¯ã¢ãã€ã«åæã§ãã ããã§ãã¯ã©ã€ã¢ã³ãããŒã¿ãé
ããŠå°çããå¯èœæ§ããããšããåé¡ã«çŽé¢ããŠããŸãã é
延ã¯æ倧7æ¥éã§ãã ããŒã¿ã¯åŸã§å°çããå¯èœæ§ããããŸãããLogs APIã«ã¯æäŸãããããã§ã«å€ããªã£ãŠãããšèŠãªãããŸãã ããã¯ããŠãŒã¶ãŒãåžžã«ã€ã³ã¿ãŒããããæã£ãŠããããã§ã¯ãªããããã€ã¹ãªãœãŒã¹ãšãã©ãã£ãã¯ã®äž¡æ¹ãç¯çŽããããã«ããã«ã€ãã³ããéä¿¡ããããã§ã¯ãªããšããäºå®ã«ãããã®ã§ãããªã¯ãšã¹ãã®ã©ããã«ãµãŒãã¹æ
å ±ãããããã§ãã ãããã¯ãã¹ãŠããŒã¿ãæŽæ°ããå¿
èŠãããã1é±é以äžåã®ããŒã¿ã¯ã¢ãŒã«ã€ã察象ãšèŠãªããŠããããšã«çæããŠãã ããã ãããã¯ããå€æŽãããŸããããä»é±ã¯åé¡ã®ããããŒã¿ã§ãããæŽæ°ããå¿
èŠããããéå»7æ¥éã§æŽæ°ãããŸãã
ClickHouseã䜿çšããŠããããšãæãåºããšãããŒã¿ã®æŽæ°ã¯ããã»ã©ç°¡åã§ã¯ãããŸããã ClickHouseããŒã¹ã¯ãããŒã¿ãäœããã®åœ¢ã§å€æŽãããããã«ã¯èšèšãããŠããŸããã ããŒã¿ã¯åæçšã«èšèšãããŠããããããã®æ©èœã¯ãã¹ãŠã®äººã«é©ããŠããŸãã å€æŽã¯ãªãã¯ãã§ãã
ç§ãã¡ã«æåã«èµ·ãã£ã決å®ã¯ãå¥ã®ããŒãã«ã«ã¢ããããŒãããããšã§ããã ããæ¥ãå¥ã®ããŒãã«ã«ã¢ããããŒãããŠãããæã£ãŠããããŒã¿ã䜿çšããŠå·®åãäœæãããããã¢ã³ããŒãããéçšããŒã¿ããŒã¹ã«è¿œå ãããšããŸãã
ãã®ãœãªã¥ãŒã·ã§ã³ã¯æ©èœããŸãã å°ããªããŒã¿ã§ããéåžžã«é«éã«åäœããŸãã ããããäœå¹ŽéããŒã¿ãã¢ããããŒãã§ããããèãããšãããŠã³ããŒããããã®ãšæã£ãŠãããã®ãšã®éããæ§ç¯ããããã®ãªã¯ãšã¹ãã«ã¯ãããªãã®æéãããããŸãã ClickHouseã¯ããã«å¯Ÿå¿ã§ããŸããããã®ãããªå€§ããªããŒã¿ããŒã¹ãäœæããå Žåããã®ãœãªã¥ãŒã·ã§ã³ã¯ããŸãæ¡åŒµã§ããŸãããããã¯åºæ¬çã«åé¡ã§ãã
ClickHouseã¯ãèå³æ·±ãæ©äŒãæäŸããŸãã次ã®ããã«ããŒã¿ãã¢ããããŒãããŸã-éå»7æ¥éããæ¯æ¥ãå¥ã®ããŒãã«ã«ã¢ããããŒãããŸãã 7æ¥ä»¥äžçµéãããã¹ãŠã®ããŒã¿ã¯å¥ã®ã¢ãŒã«ã€ãããŒãã«ã«ä¿åãããæŽæ°ã®å Žåã¯ããã以äžæŽæ°ãããªãããŒãã«ãåé€ãããŸãã
ããã䜿ããããããããã«ãClickHouseã«ã¯ããŒãžããŒãã«ãšã³ãžã³ãåããçŽ æŽãããä»®æ³ããŒãã«ããããŸãã ããã¯ä»®æ³ããŒãã«ã§ãããæ£èŠè¡šçŸã«åºã¥ããŠããŒãã«ã®ãã¹ãŠã®ããŒã¿ãçµåããèŠæ±ãè¡ããšãã«èªå®
ã®ã©ããã«ãããŸãã ãã®ããŒãã«ãåäœæããå¿
èŠã¯ãããŸãããæ°ããããŒãã«ãšå€æŽäžã®ããŒãã«ãèªåçã«ååŸããŸãã
ããŠãããæ¥æŽæ°ããããã«ã¯ãå€ããšæãããããŒãã«ãç Žæ£ããå床ããŠã³ããŒãããã ãã§ååã§ãã ããŒãã«ãæŽæ°ãããªããªã£ãå Žåãå€ãããŒã¿ããã¹ãŠç Žæ£ããåé€ããŸãã ä»ãClickHouseã¯å¹žãã§ãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯æ¡åŒµæ§ãé«ããè€éãªããŒã¿æ¿å
¥ã¯ãšãªãå¿
èŠãšããŸããã
次ã®åé¡ã«é²ãããšãã§ããŸãã 次ã®è³ªåã¯ã¹ããŒããã«ã§ããã ããã¯äºçŽ°ãªããšã®ããã«æãããããããŸããããããŒã«ã®éçºäžã¯ãã¹ã¯ãªãããæ£åžžã«åäœããããŒã¿ãã¹ããããããè€è£œããåé¡ãçºçããå Žåã«å
šäžçã«éè² è·ããããã«ãã¹ãŠãååã«é«éã«åäœããå¿
èŠãããããšã«çæããå¿
èŠããããŸããã
ããã«ãæ°ãæéè·éããããŠãã»ãã®äžé±é以äžé¢ãããšãã®äŸã瀺ããŸãã ç¿æ¥ã«è·ãäžããšãäœãããããããªããŸããã åãåãããè¡ã£ããã¹ãŠã®æãéè² è·ã«ããªãããã«ã次ã®æ¥ããšã«åå¥ã®äžæããŒãã«ã§åžžã«ã¢ã³ããŒãããã°ååã§ãã ãããã£ãŠãå€ãããŒã¿ã¯ãã®ãŸãŸæ®ããã¹ã¯ãªãããåèµ·åãããšïŒãããã¯ãŒã¯ã¹ã¯ãªãããŸãã¯ãã·ã³ãã¯ã©ãã·ã¥ãããã©ããã«ãããããïŒãè€è£œã¯ååŸããããããŠã³ããŒããããŠããªãããŒãã«ãåé€ããŠåããŒãããŸãã
ããŒã¿ã®æŽæ°ãè¿œå ãæåã®ã¢ããããŒããåæåã®å Žåãåžžã«äžè²«ããç¶æ
ãç¶æããå¿
èŠãããããšãåžžã«å¿µé ã«çœ®ãå¿
èŠããããŸããã ããã«ãããã€ãã®ãã£ãŒã«ããå€æããŠçæããå¿
èŠããããŸããã ããã§ãLogs APIãç§ãã¡ã欺ãããã§ããããŒã¿ãæäŸããªãããã§ããããŸããã 圌ã¯ãç§ãã¡ããã§ã«ç¥ã£ãŠããããšããã æãæž¡ããŸãã-ç¹ã«ã2ã€ã®çæããããã£ãŒã«ãïŒAppIDãçŸåšããŒã¿ãåä¿¡ããŠââããã¢ããªã±ãŒã·ã§ã³ã®èå¥åãããã³ããŒã¿ãåä¿¡ããæéã
ããã¯ãã§ã«ããã£ãŠããæ
å ±ã§ãã Logs APIããååŸããå¿
èŠã¯ãããŸãããããŒã¿åŠçäžã«å®äºããã®ã«ååã§ãã
å€ãã®ãã£ãŒã«ãã§ã¯ãæ¥ä»ã¯æåå圢åŒãŸãã¯Unixæéã®ããããã§ãã ããšãã°ãç°ãªã圢åŒã§ã¢ã³ããŒãããªãããã«ãåžžã«Unix Timeãã¢ã³ããŒãããŠãClickHouseãã€ãã£ã圢åŒã®DateãšDateTimeã§2ã€ã®æ°ãããã£ãŒã«ããçæã§ããŸãã ãããŠããã®ããŒã¿ãšå
±ã«çããŸãã ååãšããŠãäžèŠãªããŒã¿ãã¢ã³ããŒãããŠãã©ãã£ãã¯ãç¯çŽããå¿
èŠã¯ãããŸããã
ããããã¹ãŠäŸ¿å©ã«æäŸããããã«ãDockerã䜿çšã§ããŸããããã¯ããã¹ããã·ã³ã®ä»ã®ã³ã³ãããä»ã®ç°å¢ããéé¢ãããã³ã³ããã§ã¢ããªã±ãŒã·ã§ã³ãé衚瀺ã«ã§ããããŒã«ã§ãã åæã«ãUbuntu 17.04ãããã³WindowsãŸãã¯macOSã§åäœããŸãã ãããŠãã¢ããªã±ãŒã·ã§ã³ã¯æ°ã«ããŸãããæ£ããåäœããŸãã
Dockerã®äœ¿çšãéå§ããã¢ããªã±ãŒã·ã§ã³ãã³ã³ããã«å
¥ããŠåºè·ããã«ã¯ãDockerfileãäœæããã ãã§ãã
Dockerã§äœæ¥ãã人ã¯ãã»ãŒæšæºã®Python DockerfileãèªèããŸããããã¯ãONBUILDã€ã¡ãŒãžã§ã䜿çšãããŸãã ãã¡ã€ã«æ§é ã¯åçŽã§ãã ããªãã¯ããããããã€ã¡ãŒãžã«åºã¥ããŠèšããŸãã ç¹ã«ãããã§ã¯Python 3.6.2ãå¿
èŠã§ãã 次ã«ãå¿
èŠãªç°å¢ãå¿
èŠãªãã£ã¬ã¯ããªãäœæããpipèŠä»¶ãä»ããŠãã¹ãŠã®äŸåé¢ä¿ãã€ã³ããŒãããç¶æ
ãä¿åããããã«å¿
èŠãªæ°žç¶ããŒã¿ãä¿åããå Žæãšãã¹ã¯ãªããã®å®è¡æ¹æ³ã瀺ããŸãã ããã ãã§ã
ããã«ãããã€ãã®æäœã®åŸã2ã€ã®ã³ãã³ãã§ãã¹ãŠãéå§ã§ããŸãã éå§ããã«ã¯ãClickHouseãèµ·åããŸããããã¯éåžžãåçŽãªã³ãã³ãã§ãã
次ã«ãã¢ããããŒãã¹ã¯ãªãããå®è¡ããClickHouseãé
眮ãããŠããå Žæãã¹ã¯ãªããã«äŒããã³ã³ããã«å¯ŸããŠèªèšŒããå¿
èŠããããŸãã ããã¯èªèšŒããŒã¯ã³ã§ãããããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³èå¥åã®ãªã¹ãã§ãããããã ãã§ãã ãã®åŸã2ã€ã®ã³ãã³ããå®è¡ãããšããã¹ãŠã®ããŒã¿ã«ã€ããŠå
æã®ããŒã¿ã®ã¢ããããŒããéå§ãããŸãã ãããã¯ãã¹ãŠã«ã¹ã¿ãã€ãºã§ããŸãããããã¯å®è¡ããå¿
èŠããããã®ã®æå°éã®ã»ããã§ãã
ãŸããdocker-composeããŒã«çšã®ãã¡ã€ã«ãè¿œå ããããšã«ãããããã2ã€ã®ã³ãã³ããåçŽåããããšãã§ããŸããããã«ãããè€æ°ã®ã³ã³ãããŒãäžåºŠã«æã¡äžããŠãäœããã®æ¹æ³ã§çžäºã«æ¥ç¶ã§ããŸãã å¿
èŠãªãã®ã瀺ããŸãïŒClickHouseã®äžæãã¢ããããŒãã¹ã¯ãªããã®äžæã ç§ãã¡ã¯ã圌ãããäºãã«ã€ããŠç¥ã£ãŠããå¿
èŠãããããšã瀺ããŸãããããã¯ãClickHouseã¢ããããŒãã¹ã¯ãªãããæå®ããŸãã ã©ã®ããŒã¿ãæ°žç¶çã§ãã©ãã«ä¿åããããã瀺ããŸãã ãã®äŸã§ã¯ãããŒã¯ã³ãšã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããæå®ããã«ãå€æ°ç°å¢ãä»ããŠæž¡ããŸãã ãããã£ãŠãå¿
èŠãªããŒã¿ãèªèšŒããŒã¯ã³ãã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããããã³docker-compose up âdãç°å¢å€æ°ãšããŠæå®ããŠã1ã€ã®ã³ãã³ãã§ãã¹ãŠãäžããããšãã§ããŸãã ã¹ã¯ãªããã®äœ¿çšãéå§ããã®ã«å¿
èŠãªããšã¯ããã ãã§ãã ç°¡åã§ãã ãã§ã«ãªãŒãã³ãœãŒã¹ã«ãªã£ãŠããŸãã
ãã¹ãŠã¯ã©ãã§ãããïŒ ããã¯ããããããžã§ã¯ãã§ãããåºæ¬çãªãããžã§ã¯ãã§ã¯ãããŸããã Pythonã§ç·Žç¿ããæ©äŒã§ãããããŒã¿ãã©ã®ããã«äœ¿çšã§ããããèŠãããšãç§ã®ã€ãã·ã¢ããã§ãã çŽ1ãæã®äœæ¥ã64ã®ã³ãããã1.5è¡ã§ããã åçŽãªã¢ããããŒãã¹ã¯ãªãããšããŠã¯ããã»ã©å°ãããªãããã§ãã
ãã¹ãŠã®ããŒã¿ã¯GitHubã«ããã補åã®ããã¥ã¡ã³ãã«è¡šç€ºãããŸãã çªç¶AppMetricaã䜿çšããŠããŠãç¹å®ã®å¥œã¿ã§æäŸããåææ©èœãæ¡åŒµãããå Žåã¯ããããæã«åããããŒã¿ãè©ŠããŠãã ããã ãããããããªãã¯èªåã«ãšã£ãŠèå³æ·±ãäœããçºèŠããã§ãããã
ãŸãšããŸãã Logs APIãšã¯äœãã説æãã䜿çšããã®ãããã«äŸ¿å©ããã©ã®ãããªç®çã®ããã«äœ¿çšãããã®äŸã瀺ããLogs APIãã¢ã³ããŒãããããšã®ãã¥ã¢ã³ã¹ã«ã€ããŠè©±ããŸãããLogsAPIã¯ãäžè¬ã«ãããã¯ãŒã¯ããæŽæ°ãããããŒã¿ãã¢ã³ããŒãããããã«å€æ¿ã§ããŸãã 質åãããã°æžããŠãã ããã ãããããé¡ãããŸãïŒ