Valentin Gogichashviliããã€ã¯ããµãŒãã¹ã«ã€ããŠèª¬æããŸãã Highload ++ã䜿çšããã¬ããŒãã®ãã©ã³ã¹ã¯ãªããã次ã«ç€ºããŸã ãããã«ã¡ã¯ããã¬ã³ãã£ã³ã»ãŽã®ãã£ã·ããªã§ãã ç§ã¯ãã¹ãŠã®ã¹ã©ã€ããã©ãã³èªã§äœæããŸãããåé¡ããªãããšãé¡ã£ãŠããŸãã ç§ã¯ã¶ã©ã³ãåºèº«ã§ãã
ã¶ã©ã³ããšã¯äœã§ããïŒ ããªãã¯ããããã©ã¢ããç¥ã£ãŠããŸããã¶ã©ã³ãã¯åœŒã®æ代ã®ã©ã¢ãã®ãç¶ããã§ããã Zalandoãäœã§ããããç解ããã«ã¯ãLamodaãå°å
¥ããæ°åå¢ããå¿
èŠããããŸãã
Zalandoã¯è¡£æååºã§ããç§ãã¡ã¯éŽã販売ãå§ããŸããããšããã§éåžžã«è¯ãã§ãã ãŸããŸãæ¡å€§ãå§ããŸããã å€ã§ã¯ããµã€ãã¯éåžžã«ã·ã³ãã«ã«èŠããŸãã Zalandoã§6幎éåããŠããã8幎éååšããŠãããã®äŒç€Ÿã¯ããšãŒãããã§æãæ¥éã«æé·ããäŒç€Ÿã®1ã€ã§ããã 6幎åãç§ãZalandoã«æ¥ããšããããã¯ããã100ïŒ
æé·ããŸããã
ç§ã6幎åã«å§ãããšããããã¯å°ããªã¹ã¿ãŒãã¢ããã§ãããç§ã¯ããªãé
ãå°çããŸããããã§ã«ããã«40人ãããŸããã ç§ãã¡ã¯ãã«ãªã³ã§ã¹ã¿ãŒããã6幎以äžã«ããããZalando Technologyããã«ã·ã³ãããããªã³ãå«ãå€ãã®éœåžã«æ¡å€§ããŠããŸããã ããŒã¿ãµã€ãšã³ã¹ã¯ãããªã³ã«ãããã¢ãã€ã«éçºè
ã¯ãã«ã·ã³ãã«ããŸãã
Zalando Technologyã¯æé·ããŠããŸãã çŸæç¹ã§ã¯ãæã«çŽ50人ãéçšããŠããŸãããããã¯ã²ã©ãããšã§ãã ãªãã§ïŒ äžçã§æãã¯ãŒã«ãªãã¡ãã·ã§ã³ãã©ãããã©ãŒã ãæ§ç¯ãããããã§ãã éåžžã«éå¿çãªãäœãèµ·ãããèŠãŠã¿ãŸãããã
å°ãæŽå²ã«æ»ã£ãŠãããªãããã£ãªã¢ã®ããæç¹ã§ãã£ãå¯èœæ§ãæãé«ãå€ãäžçã玹ä»ããããšæããŸãã
Zalandoã¯ãWebã¢ããªã±ãŒã·ã§ã³ãããã¯ãšã³ããããŒã¿ããŒã¹ã®3ã€ã®ã¬ãã«ãæã€å°ããªãµãŒãã¹ãšããŠå§ãŸããŸããã Magentoã䜿çšããŸããã ç§ãZalandoã«é»è©±ããããšããç§ãã¡ã¯äžçæ倧ã®MagentoãŠãŒã¶ãŒã§ããã MySQLã«ã¯å€§ããªé çã®çš®ããããŸããã
REBOOTãããžã§ã¯ããéå§ããŸããã ç§ã¯ãã®ãããžã§ã¯ãã«6幎åã«æ¥ãŸããã
ç§ãã¡ã¯äœãããŸãããïŒ
Javaãç¥ã£ãŠããã®ã§ãJavaã§ãã¹ãŠãæžãçŽããŸããã PostgreSQLãç¥ã£ãŠããã®ã§ãã©ãã«ã§ãPostgreSQLãã€ã³ã¹ããŒã«ããŸããã Pythonã¯æè¡çãªåé¡ã§ãã ã»ãšãã©ãã¹ãŠã®æ®éã®äººããããŒã«çšã®Pythonãå¯äžã®æ£ãã解決çã§ãããšç§ãæ¯æããŸãïŒPerlã®äžçã®äººã
ãç§ã殺ããªãã§ãã ããïŒã Pythonã¯ãããŒã«ãæžãããã®è¯ããžã§ãŒã¯ã§ãã
ãã®ãããªã¹ããŒã ã®éçºãéå§ããŸããã
ãã¯ããµãŒãã¹ã·ã¹ãã ããããŸããã Javaããã¯ãšã³ããPostgreSQLã·ã£ãŒãã£ã³ã°ã䜿çšããPostgreSQLã¹ãã¬ãŒãžã 2幎åãåãäŒè°ã§ãPostgreSQLã·ã£ãŒãã£ã³ã°ã®æ¹æ³ãåè·¯ã®ç®¡çæ¹æ³ãããŠã³ã¿ã€ã ãªãã§ã®ããŒãžã§ã³ã®å±éæ¹æ³ã«ã€ããŠè©±ããŸããããéåžžã«é¢çœãã£ãã§ãã
ç§ãèšã£ãããã«ãJavaã¯çç¥ã£ãŠããŸããã SOAPã¯ããã¯ããµãŒãã¹ãçžäºã«çµåããããã«äœ¿çšãããŸããã PostgreSQLã¯ãéåžžã«ã¯ãªãŒã³ãªããŒã¿ãæã€æ©äŒãäžããŠãããŸããã ã¹ããŒããã¯ãªãŒã³ããŒã¿ããã©ã³ã¶ã¯ã·ã§ã³ãã¹ãã¢ãããã·ãŒãžã£ãããããã¹ãŠã®Javaéçºè
ããPHPã®äžçããæ®ã£ã人ã
ã«Javaãšã¹ãã¢ãããã·ãŒãžã£ãæããŸããã
1ã€ã®ãã³ãïŒ1ãæããã1,500äžäººæªæºã®ãŠãŒã¶ãŒã¢ãŒãã®å ŽåãJava SProc Wrapperã·ã¹ãã ã䜿çšããŠãJavaããPostgreSQLãèªåçã«ã·ã£ãŒãã§ããŸãã PostgreSQLãRSPã·ã¹ãã ã«çµã¿èŸŒãŸããŠããããšã¯ãæ¬è³ªçã«éåžžã«èå³æ·±ãããšã§ãã
ãã¹ãŠãé 調ã§ããã¹ãŠãæžãçŽããŸããã æåã«å庫ã®ç®¡çã·ã¹ãã ã賌å
¥ããŠããããã¹ãŠãæžãçŽããŸããã ã·ã¹ãã ã賌å
¥ãã人ããããè¡ããããã¯ããã«éã移åããªããã°ãªããªãã£ãããã§ãã
ã¹ã¿ãããšã®åé¡ãå§ãŸããŸã§ããã¹ãŠãå®ç§ã«æ©èœããŸããã ç§ãã¡ã®çŸããäžçã¯ç®ã®åã§åŽ©ãå§ããŸããã Javaã¬ãã«ã§å°å
¥ããæšæºåã·ã¹ãã ããã®ã¬ãã«ãSOAPã¯åŽ©ãå§ããŸããã 人ã
ã¯äžå¹³ãèšãå§ããå»ããããŸãã¯æ¥ãªãã
ç§ãã¡ã¯åœŒãã«èšããŸããïŒããªããJavaã§æžããªããã°ãªããªããããªããå»ããªãã°ãæã
ã¯äœãããŸããïŒ HaskellãŸãã¯Clojureã«äœããæžããŠåºãŠè¡ã£ãããã©ãããŸããïŒ ãããŠã圌ãã¯ç§ãã¡ã«ããªãããã¡ãã¯ãšçããã
ç§ãã¡ã¯ãã®åé¡ãçå£ã«èããããšã«ããŸããã ã¢ãŒããã¯ãã£ã ãã§ãªããçµç¹å
šäœãåæ§ç¯ããããšã«ããŸããã ãã€ãã®æ¥çã«ã¯èŠãããªãã£ãçµç¹ã®åæ§ç¯ããã»ã¹ãéå§ããŸãããç§ãã¡ã¯ãæã£ãŠãããã®ããã¹ãŠå®å
šã«ç Žå£ãããšèšããŸããã ããã¯çŽ900人ã®äººãããçµç¹ã§ãããç§ãã¡ã¯ããããã£ã圢ã§éå±€æ§é ãç Žå£ããŠããŸãã Radical Agilityãçºè¡šããŸãã
ããã¯ã©ãããæå³ã§ããïŒ
èªåŸçã§ææ矩ã«åé²ããããŒã ãããããšãçºè¡šããŸãã ãã¡ãããç§ãã¡ã¯ããžãã¹ã«åŸäºããŠãã人ã
ã欲ããã®ã§ãã圌ãã¯ã¹ãã«ãæã£ãŠãã®ããžãã¹ãããŸããã
èªåŸããŒã ãç¬èªã®æè¡ã¹ã¿ãã¯ãéžæã§ããŸãã ããŒã ãHaskellãŸãã¯Clojureã§æžãããšã決å®ããå Žåããããããã§ãã ããããããªãã¯ãããæ¯æãå¿
èŠããããŸãã ããŒã ã¯èªåã§æžãããµãŒãã¹ããµããŒãããå€éã«ç®ãèŠãŸãå¿
èŠããããŸãã æ°žç¶ã¹ã¿ãã¯ã®éžæãå«ãã MongoDBãéžæããå Žåã¯ãPostgreSQLãæããŸããããåæ¢ããããšã¯ãããŸãããMongoDBã¯ããã¯ãããŠããŸãã ãã¯ãããžãŒã¬ãŒããŒã䜿çšããŠãå±éºãšèŠãªãããèµ€ã®ã»ã¯ã¿ãŒã«çœ®ãããŠããæ次調æ»ãšãã¯ãããžãŒãå®æœããŠããŸãã ããã¯ãããŒã ããããã®ãã¯ãããžãŒãéžæã§ããããšãæå³ããŸãããäœãåé¡ãçºçããå Žåã¯å®å
šã«è²¬ä»»ãè² ããŸãã
ããŒã ã¯AWSã¢ã«ãŠã³ãã«ãã£ãŠåé¢ããããšè¿°ã¹ãŸããã ãã以åã¯ãAWSãéžæããŠç¬èªã®ããŒã¿ã»ã³ã¿ãŒã«ããŸããããæªéãšååŒãããŸããã ç§ãã¡ã¯èšã£ããããã¯ãã£ãšè²»çšããããããšã¯ç¥ã£ãŠãããããã£ãšéãåãã ããã ç¬èªã®ããŒã¿ã»ã³ã¿ãŒã§ã¯ã以åã®ãããªç¶æ³ã¯çºçããŸããã1å°ã®ããŒããã©ã€ãã泚æããã®ã«6é±éããããŸããã ããã¯èãããããäžå¯èœã§ããã åé²ã§ããŸããã§ããã
èªæ²»ã¯ç¡ç§©åºã§ãããšä¿¡ãã人ãå€ãããŸãã èªåŸã¯ç¡ç§©åºã§ã¯ãããŸããã èªåŸæ§ã«ã¯ãç¹ã«äžå ŽäŒæ¥ã§ããZalandoã«ãšã£ãŠå€ãã®è²¬ä»»ã䌎ããŸãã ç§ãã¡ã¯èšŒåžååŒæã«ããŸããå
¬éäŒç€Ÿãšåæ§ã«ãç£æ»äººãç§ãã¡ã®ãšããã«æ¥ãŠãç§ãã¡ã®ã·ã¹ãã ã®ä»çµã¿ããã§ãã¯ããŸãã éçºè
ãAWSã§äœæ¥ã§ããããã«ããäœããã®æ§é ãäœæããå¿
èŠããããŸããããããã§ãã¬ãã«ã®ç£æ»äººã®è³ªåã«çããããšãã§ããŸããã
çµæã¯ãã®ãããªã·ã¹ãã ã§ãïŒ
ã§ããã ãã·ã³ãã«ã«ãããã£ãã®ã§ãããæ¬åœã«ã·ã³ãã«ã§ãã ãããã誰ãã圌女ãèŠããšèªããŸãã
ãã®ã¹ããŒããšãªãŒãã³ãã§ããªãã€ã³ããŒã§ããAWSã«ã¢ã¯ã»ã¹ããå Žåãããã³ãã€ã¯ããµãŒãã¹ãŸãã¯å
Œ
±ãµãŒãã¹ã§ã¢ã€ãã¢ãéžæããå Žåãæéãæ¯æãå¿
èŠããããŸãã å®å
šãªã·ã¹ãã ãäœãããå Žåãªã©ãç£æ»äººãå°ããããšãã§ãã質åã«çããŸãã
ãã¡ãããããŸããŸãªãã¯ãããžãŒã¹ã¿ãã¯ããµããŒãããããã«ãJavaãšPostgreSQLã®æšæºåã¬ãã«ãããé«ãã¬ãã«ã«åŒãäžãããšè¿°ã¹ãŸããã æšæºåã¬ãã«ãREST APIã®ã¬ãã«ã«åŒãäžããŠããŸãã
ããã¯ã©ãããæå³ã§ããïŒ ããã¯ä»¥åã®ã¬ããŒãã§ãAPIèšè¿°ã·ã¹ãã ãå¿
èŠã§ãããšæžããŸããã ãã€ã¯ããµãŒãã¹ãçžäºã«éä¿¡ããæ¹æ³ã®èª¬æã 泚æãå¿
èŠã§ãã ããã¬ãã«ã§ã¯ãæšæºåããå¿
èŠããããŸãã APIã®æåã®ã·ã¹ãã ããããšçºè¡šããŸããã ãããŠãåãµãŒãã¹ã¯äœæãéå§ããåã«ãã®ã«ãAPIã«ã¢ã¯ã»ã¹ããæ¿èªãããAPIã®äžéšãšããŠAPIãåãå
¥ããããã«èª¬åŸããå¿
èŠããããŸãã éåžžã«èå³æ·±ãREST APIã¬ã€ãã©ã€ã³ãäœæããŸããã äžéšã®ãªãœãŒã¹ã§ãåç
§ãããŠããŸããã ãµãŒããŒã®ã«ãŒããšããŠSwaggerïŒOpenAPIïŒã䜿çšã§ããããã«ããAPIæåã®ã©ã€ãã©ãªã ããšãã°ãæ¥ç¶ã¯Pythonã®ãã©ã¹ã³ã®ã«ãŒãã§ãããplay-swaggerã¯Scalaã®ãã¬ã€ã·ã¹ãã ã®ã«ãŒãã§ãã Clojureã«ã¯åãã«ãŒãããããéåžžã«äŸ¿å©ã§ãã Swaggerãã¡ã€ã«ãæåã«èšè¿°ãããã€ã¯ããµãŒãã¹ããäœãéæãããã®ããèšè¿°ããŠãããã·ã¹ãã äžã®ã©ã®é¢æ°ãAPIã§ç¹å®ã®æäœãå®è¡ããããåã«æå®ããŸãã
ããããåé¡ã¯ãã€ã¯ããµãŒãã¹ã«ãããŸãã ãã®ãã¬ãŒãºãæ°åç¹°ãè¿ãããã§ãã ãã€ã¯ããµãŒãã¹ã¯çµç¹ã®åé¡ãžã®å¯Ÿå¿ã§ãããããã¯æè¡çãªçãã§ã¯ãããŸããã å°ãã人ã«ã¯ãã€ã¯ããµãŒãã¹ãå§ããŸããã Scalaã§1ã€ã®ãµãŒãã¹ãäœæããPythonãŸãã¯Haskellã§å¥ã®ãµãŒãã¹ãäœæããå¿
èŠããªããå€æ§ãªæè¡åºç€ã«åé¡ããªã人ã«ã¯ãã€ã¯ããµãŒãã¹ãå§ããŸããã ãã€ã¯ããµãŒãã¹ã«é¢ããåé¡ã®æ°ã¯éåžžã«å€ãã§ãã ãã®éå£ã ãããå
æããããã«ã¯ãç§ãã¡ããã£ãããã«ããã®åã«å€ãã®çã¿ãçµéšããå¿
èŠããããŸãã
ã¯ãŒã«ããµãŒãã¹ã®æ倧ã®åé¡ã®1ã€ïŒå®çŸ©ã«ãããã€ã¯ããµãŒãã¹ã¯ãããŒã¿æ°žç¶æ§ã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ããããã¯ããŸãã ããŒã¹ã¯ãã€ã¯ããµãŒãã¹å
ã«é ãããŠããŸãã
ãããã£ãŠãåŸæ¥ã®æœåºå€æããŒãããã»ã¹ã¯æ©èœããŸããã
äžæ©æ»ã£ãŠãã¯ã©ã·ãã¯ã®äžçã§ç§ãã¡ãã©ã®ããã«åããŠããããæãåºããŸãããã äœããããŸããïŒ ç§ãã¡ã«ã¯å€å
žçãªäžçããããéçºè
ããžã¥ãã¢éçºè
ãã·ãã¢éçºè
ãDBAãããžãã¹ã€ã³ããªãžã§ã³ã¹ãããŸãã
ã©ã®ããã«æ©èœããŸããïŒ
åçŽãªã±ãŒã¹ã§ã¯ãããžãã¹ããžãã¯ãããŒã¿ããŒã¹ããããETLããã»ã¹ã¯ããŒã¿ããŒã¹ããçŽæ¥ããŒã¿ãååŸããDate WarehouseïŒDWHïŒã«ããã·ã¥ããŸãã
倧èŠæš¡ã«ã¯ãå€ãã®ãµãŒãã¹ãå€ãã®ããŒã¿ããŒã¹ã1ã€ã®ããã»ã¹ãããããããã¯ã»ãšãã©ãã³ã§æžãããŠããŸãã ããŒã¿ã¯ãããã®ããŒã¿ããŒã¹ããååŸãããããžãã¹ã¢ããªã¹ãåãã®ç¹å¥ãªããŒã¿ããŒã¹ã«æ ŒçŽãããŸãã ããã¯éåžžã«ããæ§æãããŠãããããžãã¹ã¢ããªã¹ãã¯åœŒããäœãããŠããããç解ããŠããŸãã
ãã¡ããããã ãã§ã-åé¡ããªãããã§ã¯ãããŸããã èªååããããšã¯ãã¹ãŠéåžžã«å°é£ã§ãã ãã€ã¯ããµãŒãã¹ã®äžçã§ã¯ããã¹ãŠãç§ãã¡ãšã¯ç°ãªããŸãã
ãã€ã¯ããµãŒãã¹ãçºè¡šãããšããRadical Agilityãçºè¡šãããšããéçºè
åãã«ããããã¹ãŠã®çŽ æŽãããã€ãããŒã·ã§ã³ãçºè¡šãããšããããžãã¹ã¢ããªã¹ãã¯éåžžã«äžæºã§ããã
èšå€§ãªæ°ã®ãã€ã¯ããµãŒãã¹ããããŒã¿ãåéããæ¹æ³ã¯ïŒããã¯æ°ååã§ã¯ãªããæ°çŸåãŸãã¯æ°ååã§ãã ããããããã¬ã³ã¿ã€ã³ã¯éŠ¬ã«ä¹ã£ãŠèšããŸãïŒç§ãã¡ã¯ãã¹ãŠãã¹ããªãŒã ã«ããã¥ãŒã«æžããŸãã ãããã建ç¯å®¶ã¯èšãïŒãªããã¥ãŒïŒ 誰ããKafkaã䜿çšãã誰ããRabbitã䜿çšããŸããããããã¹ãŠãã©ã®ããã«çµ±åããŸããïŒ ç§ãã¡ã®èŠåå¡ã¯èšã£ãïŒæ±ºããŠäººçã§ã¯ãç§ãã¡ã¯èš±å¯ããŸããã ç§ãã¡ã®ããžãã¹ã¢ããªã¹ãã¯ãå³ããªãå Žåãç§ãã¡ã¯ãã³ã°ã¢ããããäœãèµ·ãã£ãŠããã®ãç解ã§ããªããããã¯åãªãããŒã¿è»¢éã·ã¹ãã ã§ã¯ãªãæºã§ãããšèšããŸããã
ç§ãã¡ã¯åº§ã£ãŠäœããã¹ãããåè°ãã決å®ãå§ããŸããã ç§ãã¡ã®äž»ãªç®æšïŒã·ã¹ãã ã®äœ¿ãããããåäžé害ç¹ããªãããšããããèœã¡ãå Žåã«ãã¹ãŠãèœã¡ããããªã¢ã³ã¹ã¿ãŒããªãããšãæã¿ãŸãã å®å
šãªã·ã¹ãã ãå¿
èŠã§ããããã®ã·ã¹ãã ã¯ããžãã¹ã€ã³ããªãžã§ã³ã¹ã®ããŒãºãæºããå¿
èŠããããã·ã¹ãã ã¯ããŒã¿ãµã€ãšã³ã¹ãæºããå¿
èŠããããŸãã è¯ãå Žåã«ã¯ããã¹ãæµãããã®ããŒã¿ãä»ã®ãµãŒãã¹ã䜿çšã§ããããã«ããå¿
èŠããããŸãã
ãšãŠãç°¡åã§ãã ã€ãã³ããã¹ãã€ãã³ãã€ã³ããªãžã§ã³ã¹ãã€ãã³ããã¹ããããŸãã¯ããŒã¿éã®å€ããµãŒãã¹ã«åã蟌ãããšãã§ããŸãã DDDMã¯æè¿ããæ°ã«å
¥ãã®ã³ã³ã»ããã«ãªã£ãŠããŸãã ããã¯ãããŒã¿é§ååã®ææ決å®ã·ã¹ãã ã§ãã ã©ããªãããŒãžã£ãŒããã®ãããªèšèã«åãã§ããã§ãããã æ©æ¢°åŠç¿ãšDDDMã
äœãæãã€ããŸãããïŒ
ãã«ãã£ã ããªãã¯ããããç§ã®å§ãããªãã°ã«ãžã¢äººã§ããããšãç解ããã§ãããã ã°ã«ãžã¢èªã®ãã«ãã£ã¯æµããæå³ããŸãã ããšãã°ãæžæµã
ç§ãã¡ã¯ãã®ãããªã¹ããªãŒã ãäœãå§ããŸããã ç§ãã¡ãããã«çœ®ããåºæ¬ååã¯ãå°ãç¹°ãè¿ããŸãã
æšæºã®HTTP APIãçšæãããšè¿°ã¹ãŸããã å¯èœã§ããã°-å®ãããªã éäžåãŸãã¯ããããéäžåã§ã¯ãªãã€ãã³ãã¿ã€ãã¬ãžã¹ããªãäœæããŸãã ããŸããŸãªã¯ã©ã¹ã®ã€ãã³ãã¿ã€ãã玹ä»ããŸãã ããšãã°ãçŸæç¹ã§ã¯2ã€ã®ã¯ã©ã¹ããµããŒããããŠããŸãã ãããã¯ãããŒã¿ãã£ããã£ãšããžãã¹ã€ãã³ãã§ãã ã€ãŸãããšã³ãã£ãã£ãå€æŽãããå Žåãå¿
èŠãªãã¹ãŠã®ã¡ã¿æ
å ±ãšãšãã«ã€ãã³ããã£ããã£ãèšé²ã§ããŸãã ããžãã¹ããã»ã¹ã§äœããçºçãããšããæ
å ±ãããå Žåãããã¯éåžžãã¯ããã«åçŽãªã±ãŒã¹ã§ãããããåçŽãªã€ãã³ããèšè¿°ã§ããŸãã ããã§ããããžãã¹ã¢ããªã¹ãã¯ãèªåçã«è§£æã§ããçµç¹åãããæ§é ãæã€ããšãæ±ããŠããŸãã
PostgreSQLãšã¹ããŒãã®è±å¯ãªçµéšã«ãããããŒãžã§ã³ç®¡çã¹ããŒãã®ãµããŒããªãã§ã¯äœãæ©èœããªãããšãããã£ãŠããŸãã ã€ãŸããããã°ã©ããäœæãããé åºãèšè¿°ãã次ã«äœæãããé åºãèšè¿°ããå¿
èŠãããã¬ãã«ãŸã§ã¹ã©ã€ãããŠã³ãããšãåºæ¬çã«Microsoft Windowsã«äŒŒãã·ã¹ãã ãäœæããç¹ã«ç解ããããã«éåžžã«å°é£ã«ãªããŸããšã³ãã£ãã£ã®éçºæ¹æ³ããšã³ãã£ãã£ã®ããŒãžã§ã³ç®¡çæ¹æ³ã ã¡ãã»ãŒãžã®å°çã«ã§ããã ãæ©ãå¿çããã¡ãã»ãŒãžã®å°çãåžæãããã¹ãŠã®äººã«éç¥ã§ããããã«ããã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ããŒã¿ãã¹ããªãŒãã³ã°ã§ããããšãéåžžã«éèŠã§ãã
è»èŒªãåçºæããããããŸããã§ããã ç§ãã¡ã®ç®æšã¯ãæ¢åã®ã·ã¹ãã ã䜿çšããæå°ã®ã·ã¹ãã ãäœæããããšã§ãã ãããã£ãŠãçŸæç¹ã§ã¯ãKafkãã¢ã³ããŒã©ã€ã³ã·ã¹ãã ãšããŠãPostgreSQLãã¡ã¿ããŒã¿ãšã¹ããŒããä¿åããããã«äœ¿çšããŠããŸãã
Nakadi Clusterã¯ç§ãã¡ãæã£ãŠãããã®ã§ãã ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®åœ¢ã§ååšããŸãã çŸæç¹ã§ã¯ã圌ã¯ä»¥åã«ç»é²ãããã¹ããŒã ãæ€èšŒããŠããŸãã 圌ã¯ãã€ãã³ãã®ã¡ã¿ãã£ãŒã«ãã«è¿œå æ
å ±ãèšé²ã§ããŸãã ããšãã°ãå°çæå»ããŸãã¯ã¯ã©ã€ã¢ã³ããã€ãã³ãã®äžæã®IDãäœæããªãã£ãå Žåãäžæã®IDãããã«ããã·ã¥ã§ããŸãã
ãŸãããªãã»ãããå¶åŸ¡ããå¿
èŠããããšæããŸããã ã«ãã«ã®ä»çµã¿ãç¥ã£ãŠãã人ã 誰ããç¥ã£ãŠããŸãã è¯ãããã»ãšãã©ã§ã¯ãªãã Kafkaã¯ããããã¥ãŒãµãŒãããŒã¿ãé çªã«æžã蟌ãå€å
žçãªpub /ãµãã·ã¹ãã ã§ãããã¯ã©ã·ã«ã«ã¡ãã»ãŒãžã·ã¹ãã ã®ããã«ãã¯ã©ã€ã¢ã³ãã¯ããŒã¿ãä¿åããŸããã
ã¯ã©ã€ã¢ã³ãçšã«ã¡ãã»ãŒãžã®åå¥ã®ã³ããŒã¯äœæãããŸãããã¯ã©ã€ã¢ã³ããå¿
èŠãšããã®ã¯ãªãã»ããã®ã¿ã§ãã ã€ãŸãããã®ç¡éã®ã¹ããªãŒã ã®ã·ããã§ãã Kafkaã¯ãåè¡ã«çªå·ãä»ããããããŒã¿ã®ç¡éã®ã¹ããªãŒã ã§ãããšæ³åã§ããŸãã ã¯ã©ã€ã¢ã³ããããŒã¿ãåéããå Žåãããžã·ã§ã³Xããèªã¿åããŸããã«ãã«ã¯ããžã·ã§ã³Xãããã®ããŒã¿ãæäŸããŸããããã«ãããããŒã¿ã®é åºä»ããä¿èšŒãããéåžžã®ã¡ãã»ãŒãžã§éåžžè¡ãããããã«ãå€ãã®æ
å ±ããµãŒããŒã«ä¿åãããªããªããŸãèªã¿åãã€ãã³ãã®äžéšãã³ãããã§ããã·ã¹ãã ã ãã®ç¶æ³ã§ã¯ãèªã¿åããããã¯ã®äžéšãã³ãããããããšãã§ããªããšããåé¡ããããŸãã ãªãããã¹ããéå§ãããŸãããKafk'yã«ã€ããŠè©±ããããããŸããã§ããã
é«ã¬ãã«ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ãããã¯ã©ã€ã¢ã³ãã¯kafkããã®èªã¿åããéåžžã«ç°¡åã«ãªããŸãã ã¯ã©ã€ã¢ã³ãã¯ãèªã¿èŸŒãã»ã¯ã·ã§ã³ãä¿åãããªãã»ããã«é¢ããæ
å ±ã亀æããªãã§ãã ããã ã¯ã©ã€ã¢ã³ãã¯åã«ã·ã¹ãã ããå¿
èŠãªãã®ãåãåããŸãã æµæãæå°ã«ãªãçµè·¯ã決å®ããŸããã Zookeeperã¯Kafkã«ãã§ã«ååšããŸããZookeeperãã©ãã»ã©ã²ã©ããã®ã§ãã£ãŠãããã§ã«ææããŠããã®ã§ã管çããå¿
èŠãããããªããšè¿œå æ
å ±ãä¿åããããã«äœ¿çšããŸãã PostgreSQL-ã¡ã¿ããŒã¿ããã³ã¹ããŒãã¹ãã¬ãŒãžçšã
ä»ãç§ãã¡ãã©ã®æ¹åã«é²ãã§ããã®ããã話ãããããšæããŸããç§ãã¡ã¯ãšãŠãéãåããŠããŸãã ãããã£ãŠããã«ãªã³ã«æ»ããšãããã€ãã®éšåããã§ã«äœãããŠããŸãã
çŸæç¹ã§ã¯ãNakadi ClusterããããNakadi UIããããŸããNakadiUIã¯ãä»ã®äººã®èå³ãåŒãããã«Elmã§æžãå§ããŸããã ãšã«ã ã¯ã¯ãŒã«ã ã圌ãæããŠããã
次ã®ã¹ãããã§ã¯ãè€æ°ã®ã¯ã©ã¹ã¿ãŒã管çã§ããããã«ããŸãã æ°ãããããã¥ãŒãµãŒãå°çããäœãèŠåããã«æ¯ç§1äžä»¶ã®ã€ãã³ããæžãå§ãããšãã«ããã§ã«åŠšå®³ã確èªããŸããã
ã¯ã©ã¹ã¿ãŒã«ã¯ãæ¡åŒµããæéããããŸããã ããŒã¿ã®çš®é¡ããšã«ç°ãªãã¯ã©ã¹ã¿ãŒãå¿
èŠã§ãã Kafk'yãžã®æ¥ç¶ããªãããã«ãã€ã³ã¿ãŒãã§ã€ã¹ã®æšæºåãå
·äœçã«è¡ããŸããã
Kafk'iããRedisã«åãæ¿ããããšãã§ããŸãã ãããŠãRedisããKinesisãŸã§ã åºæ¬çã«ãã¢ã€ãã¢ã¯ããµãŒãã¹ã®å¿
èŠæ§ãšããããæžã蟌ãã€ãã³ãã®ããããã£ã«å¿ããŠã誰ããé åºãé åºã«èå³ããªãå Žåãé åºããµããŒããããKafkaãããå¹ççãªã·ã¹ãã ã䜿çšã§ãããšããããšã§ãã çŸæç¹ã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãããæœè±¡åããæ©äŒããããŸãã
Nakadi Scheme Managerã¯ããã€ã¯ããå¿
èŠããããããã¯ã©ã¹ã¿ãŒããåŒãåºãå¿
èŠããããŸãã 次ã®ã¹ãããã¯ãåè·¯ãæ€åºããããããªã¢ã€ãã¢ã§ãã ã€ãŸãããã€ã¯ããµãŒãã¹ãäžæãããã®swaggerãã¡ã€ã«ãçºè¡ããã€ãã³ãã®ãªã¹ããswaggerãšåã圢åŒã§çºè¡ããŸãã èªåçã«ãã¯ããŒã©ãŒã¯ããããã¹ãŠåãé€ããéçºè
ããããå±éããåã«åè·¯ãã¡ãã»ãŒãžãã¹ã«è¿œå ã§æ¿å
¥ããå¿
èŠæ§ãæé€ããŸãã
ãããŠãã¡ãããããããžãŒã»ãããŒãžã£ãŒãããã«ãããäœããã®æ¹æ³ã§ãããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒãç°ãªãã¯ã©ã¹ã¿ãŒã«ã«ãŒãã§ããŸãã 圌ãã¯ã«ãã«ã象ã®ããã«åããšèšã£ãã ãããã象ã®ããã§ã¯ãªããèžæ°æ©é¢è»ã®ããã§ãã ç§ãã¡ã®ç¶æ³ã§ã¯ããã®ãšã³ãžã³ã¯åžžã«å£ããŠããŸãã ãã®ãšã³ãžã³ã誰ãäœã£ãã®ãããããŸããããAWSã§Kafkã管çããããã«ãããã»ã©ç°¡åã§ã¯ãªãããšãããããŸããã
ç§ãã¡ã¯éåžžã«è¯ãååã§éåžžã«ãã·ã¢èªã®ããã¯ã·ã¹ãã ãæžããŸããã
ã¶ã¶ãã¯äœãããŸããïŒããã¯ãäœãããŠãããã瀺ã倧ããªã¹ã©ã€ãããããŸããããéåžžã«å€§ããããšãããããŸããã
ããã§ãã¹ãŠãèŠãããšãã§ã
ãŸã ã
äºåç·šã§ã¯ãããã¯ã¯ä»ã®äººãã«ãã¯ã§ãããªãããšããããšããç®æšãæã£ãŠããŸãã äž»ãªã¢ã€ãã¢ã¯ãèªåçã«å ±åãèªåã¹ã±ãŒãªã³ã°ãèœé·ãã€ã³ã¹ã¿ã³ã¹ã殺ãçã£ãç¿ãçãæ®ãèœåã§ãã
ã¡ãªã¿ã«ãChaos Monkeyã¯ã·ã¹ãã ããã¹ãããŠããããã¹ãŠããŸãæ©èœããŠããŸãã ãã€ã¯ããµãŒãã¹ãäœæããå Žåã¯ããã®ã·ã¹ãã ãChaos Monkeyãã©ã®ããã«çãæ®ãããåžžã«èããŠãã ããã ããã¯ãããŒããã©ã³ãã ã«åé€ãããããããã¯ãŒã¯ãåæããããã·ã¹ãã ãå°ç¡ãã«ããNetflixã·ã¹ãã ã§ãã
æ§ç¯ããã·ã¹ãã ãäœã§ãããããããã¹ãããªããšãäœããå£ããŠãæ©èœããŸããã
è¡šé¢çãªè©±ãç· ãããããããšæããŸããç§ã話ããããšã¯ãç§ãã¡ã¯çŸåšãªãŒãã³ãœãŒã¹ã§éçºããŠããŸãã ãªããªãŒãã³ãœãŒã¹ãªã®ã§ããïŒ
ZalandoããªããªãŒãã³ãœãŒã¹ãããã®ããæžããã
人ã
ããªãŒãã³ãœãŒã¹ã§æžããšãã圌ãã¯äŒç€Ÿã®ããã§ã¯ãªããèªåèªèº«ã®ããã«éšåçã«æžãã ãããã£ãŠã補åã®å質ãåäžããã€ã³ãã©ã¹ãã©ã¯ãã£ããã®è£œåã®åé¢ãåäžããããšãããããŸãã zalando.deå
ã§æžã蟌ã¿ãè¡ã£ãããããŒãç·šéããããGitã§ã³ãããããããã人ã¯ããŸããã
ãœãŒã¹ããªãŒãã³ããæ¹æ³ã«é¢ããååããããŸãã ãœãŒã¹ããªãŒãã³ãã¹ããã©ãããäŒç€Ÿã«è³ªåã¯ãããŸããïŒ ãªãŒãã³ãœãŒã¹ã®ç¬¬äžååããããŸãã ãããžã§ã¯ããéå§ããåã«ããªãŒãã³ãœãŒã¹ã®äŸ¡å€ããããã©ãããèããŸãã ãã®è³ªåãç解ããŠåçããã«ã¯ã質åã«åçããå¿
èŠããããŸãã
- 誰ããããå¿
èŠãšããŸããïŒ
- ãããå¿
èŠã§ããïŒ
- ããããªãŒãã³ãœãŒã¹ãããžã§ã¯ããšããŠããããã§ããïŒ
- ãã®å
¬éããªãŒã«ä¿åãããã®ãä¿åã§ããŸããïŒ
ãªãŒãã³ãœãŒã¹ãå¿
èŠãšããªãå ŽåããããŸãïŒ
- ãããžã§ã¯ãã«ãã¡ã€ã³ã®ç¥èãå«ãŸããŠããå ŽåãäŒç€ŸãäŒç€Ÿã«ããã®ã¯ãã¡ããããªãŒãã³ãœãŒã¹ã«ããããšã¯ã§ããŸããã
ãããæåŸã®ã¹ã©ã€ãã§ããä»æ¥èšåããããããžã§ã¯ãã¯æ¬¡ã®ãšããã§ãã
zalando.imtqy.comã«ã¢ã¯ã»ã¹ãããšãèšå€§ãªæ°ã®PostgreSQLãããžã§ã¯ãããããããã¯ãšã³ããšããã³ããšã³ãã®äž¡æ¹ã«å€ãã®ã©ã€ãã©ãªãããããããå§ãããŸãã
æéåãã§ãã
ã¬ããŒãïŒãã€ã¯ããµãŒãã¹ã®å°é£ãªäžçã«ãããã€ãã³ãããã¹ãããã³ããŒã¿çµ±å