ãªã³ã©ã€ã³ã·ã§ããLamodaéšéã®éçºè ã§ããNikitaGalushkoã¯ãSlurmãã¬ãŒãã³ã°ã»ã³ã¿ãŒã蚪åããŠãããšãã«ãKafkaã³ãŒã¹ã®å°è±¡ãå ±æãããã®ãã¯ãããžãŒãã©ã®ããã«äœ¿çšãããRïŒDéšéïŒç ç©¶éçºïŒã§ã©ã®ãããªåé¡ã解決ããããã説æããŸããã
ã2幎以å ã«ãKafkaã䜿çšãããããã¯ãŒã¯ãã£ãã«ã«ã©ãã ãæ©ãå°éããã§ããããïŒã
Lamodaã¯ããã·ã¢ãšCISã§æå€§ã®ãªã³ã©ã€ã³ã¹ãã¢ã®1ã€ã§ããè³Œå ¥è ãåé¡ãªããµã€ãã䜿çšããè¿ éãªåºè·ãšé éãæ¥œããããã«ãéçºè ãQAãšã³ãžãã¢ãã¢ããªã¹ããDevOpsã¹ãã·ã£ãªã¹ãã補åãããŒãžã£ãŒããã¶ã€ããŒã®340人ã®åŸæ¥å¡ãLamodaã®ITã·ã¹ãã ã«åŸäºããŠããŸãããã®ã·ã¹ãã ã§æ¯è»ãã©ã®ããã«å転ãããã調ã¹ãŠã¿ãŸãããã
äœãããªãèªèº«ã«ã€ããŠæããŠãã ããã Lamodaã§äœãããã©ã®ãããåããŠããŸããïŒ
ç§ã®èšãããããšïŒãç§ã¯ãã¿ã³ãæŒããšã圌ãã¯ç§ã«ãéãæã£ãŠãããŸãããç§ã¯ãã¿ã³ãæŒããŠçŽ6幎ã«ãªããŸãããã®éãã£ãšãç§ã¯Goã§æžããŠããŸããç§ã¯2020幎10æããããã»ã©åã«ã©ã¢ãã«ããŸããã§ãããããã§ã«å€ãã®å¥ä»ãããžã§ã¯ãã§è§Šæãè§£æŸããããšãã§ããŸããã
ç§ã¯RnDïŒç ç©¶éçºïŒéšéã§åããŠããŸããããã¯ã1é±éã§Kafkaã§ãµãŒãã¹ãäœæããKafkaãšPostgreSQLã®éã§åæ£ãã©ã³ã¶ã¯ã·ã§ã³ãè¡ãæ¹æ³ã決å®ããæ¬¡ã¯Aerospikeã®ã³ãŒããžã§ãã¬ãŒã¿ãŒãäœæããéšéã§ããããã¯ãšãŠãé¢çœãä»äºã§ãã
ç ç©¶éçºã¯åæãšåŒ·ãçµã³ã€ããŠããããšãæ£ããçè§£ããŠããŸããïŒ
ã¯ããç§ãã¡ã¯ããŒã¿ãµã€ãšã³ãã£ã¹ããšç·å¯ã«ååããŠããŸãã圌ãã¯åæãè¡ããã¢ãã«ããã¬ãŒãã³ã°ããŠæ§ç¯ããæ¬¡ã«ãããã®ã¢ãã«ãã¢ããªã±ãŒã·ã§ã³ãŸãã¯Webãµã€ãã®æäœã«çµã¿èŸŒãããã«èŠæ±ããŸããããšãã°ããŠãŒã¶ãŒã«æšå¥šäºé ã®ããŒãœãã©ã€ãºããããªã¹ãã衚瀺ããããé¡§å®¢ã«æãé©ããæãéŽã®ãµã€ãºãææ¡ãããããã¢ãã«ã
ããªãã®ä»äºã«ã€ããŠã©ã®ãããªä»äºã奜ãã§ããïŒç ç©¶éçºéšéã§ããªãã«ãšã£ãŠè峿·±ãããšã¯äœã§ããïŒ
ããã¯ããããèªç±ã§ãã 1ã€ã®ãã¬ããžãã¡ã€ã³ããµãŒãã¹ããŸãã¯ãµãŒãã¹ã®å°ããªã»ããã«éå®ãããŸãããç ç©¶éçºã§ã¯ãGoã§ãµãŒãã¹ã«å€æŽãå ããç¿æ¥Javaã§å€æŽãå ããããšãã§ããŸãããã®ã¢ãããŒãã§ã¯1ã€ã®ãµãŒãã¹ã«éäžããããšãé£ãããããããã¯äžå©ã«ãªãå ŽåããããŸããããããç§ã«ãšã£ãŠããã¯ãããŸããŸãªåéã§èªåã®æã詊ããŠãéçºè ãããŸããŸãªåé¡ã解決ããããã«äœ¿çšããã¢ãããŒãã確èªããèªåèªèº«ã®ããã«æ°ããããšãåŠã¶æ©äŒã§ãã
æè¿ãAerospikeã®çµæãè§£æããããã®ã³ãŒããžã§ãã¬ãŒã¿ãŒã®äœæãéå§ããŸããã圌ã¯çããŒã¿ãæäŸããã®ã§ãããªãã¯åžžã«ããããæã§è§£æããªããã°ãªããŸããããããŠããããã¯æœåšçãªééãã§ããã貎éãªæéã®æµªè²»ã§ããããªãã¯äœããå¿ããããäœãããã§ãã¯ããªãã£ãã®ã§ãçµæã¯ããªããæåŸ ãããã®ã§ã¯ãããŸããããã®ãããç§ãã¡ã¯ããã«ã€ããŠèããç¬èªã®ã³ãŒããžã§ãã¬ãŒã¿ãŒãäœæããããšã«ããŸããããããŸã§ã®ãšããããã¹ãã¢ãŒãã§åäœããŸãããããã«éãããšãé¡ã£ãŠããŸãã
Lamodaã¯ãªãŒãã³ãœãŒã¹ãããžã§ã¯ããé »ç¹ã«è¡ã£ãŠããŸããïŒ
Lamodaã«ã¯ãGonkeyãšåŒã°ããæ¯èŒçæåãªãªãŒãã³ãœãŒã¹ãããžã§ã¯ã ããããŸããããªãã¯ç§ãã¡ã®èšäºã§ããã«ã€ããŠãã£ãšèªãããšãã§ããŸã ã
Gonkeyã¯ãYamlããŒã¯ã¢ããèšèªã§èªåãã¹ããç°¡åã«èšè¿°ã§ããããã«ããæšæºåããããœãªã¥ãŒã·ã§ã³ã®ã»ããã§ãããã®ãããªãã¹ãã¯éçºè ãšãã¹ã¿ãŒã®äž¡æ¹ãäœæã§ãããããããã¯äŸ¿å©ã§ããããã«ããããã¹ãã«ãã¬ããžã®å²åãå¢å ããŸãã
çŸåšããã®ããŒã«ã¯ç€Ÿå ã§ç§ãã¡ãæãã»ã©æ¥éã«éçºãããŠããŸããããå°æ¥çã«ã¯ãã£ãšå€ãã®æéãè²¢ç®ããäºå®ã§ããgithubã§éãããã±ãŒãžãéãã質åã«çããæ¹åããŸãã
ã»ãšãã©ã®å Žåãããã«ã¯ãéåžžã®2åã®åŠç¿ãè¡ãããã«ãå¹ åºãç¥èãå¿ èŠã§ããããã§ããïŒ
ç§ã¯ããªãããã åºãèŠéãæã£ãŠããå¿ èŠããããšèšãã§ãããã
衚é¢çãªïŒ
確ãã«ãã®ããã§ã¯ãããŸããã Tååã®éçºè ãšãããã®ããããŸãã圌ã¯ãããåéã§ã¯éåžžã«ãããããã«ã¯åªããçè§£ãæã£ãŠããŸãããåæã«ãä»ã®å€ãã®åéã«ãå€ããå°ãªãã粟éããŠããŸããä»ã¯Javaã§æžããŠãããšèšã£ãããããã§ãã³ãŒãã®99ïŒ ã¯Goã§æžããŠããããããã£ãŠãGoã¹ã¿ãã¯ãããç¥ã£ãŠããŠãåæã«èŠåãæ¹æ³ãç¥ã£ãŠããå Žåãããã¯RïŒDã§äœæ¥ãããšãã ãã§ãªããäžè¬çã«ã圹ç«ã¡ãŸããä»ã®ãã¯ãããžãŒãèšèªããããã€ãã®ã¢ã€ãã¢ãã¢ãããŒããåŠã¶ããšãã§ããŸãã
ãã°ããPythonã§æžããåŸãGoã«åãæ¿ãã人ã¯ç¥ã£ãŠããŸãã圌ãã¯ããã®èšèªããšã©ãŒåŠçã«ã©ã®ããã«ã¢ãããŒããããã奜ãã§ãããçŸåšã圌ãã¯Pythonã§æžããããžã§ã¯ãã«åãã¢ãããŒããåãå ¥ããããšããŠããŸãã
ãããããéçºãåžæãããã¹ãŠã®éçºè ã«ã¯ä»ã«éžæè¢ããããŸãããããŸããŸãªåéã§ã¢ããã°ã¬ãŒãããå¿ èŠããããŸããé«åºŠã«å°éåããã1ã€ã®é åã ããçè§£ããããã«æ°žé ã«åº§ãããšã¯ã§ããŸãããããªããã©ãã§ãåããªããããªãã¯éçºããå¿ èŠããããŸãã
ç§ãçè§£ããŠããããã«ãç ç©¶éçºã®ã¿ã¹ã¯ã¯å€æ§ã§ãããã®éçšã§äœããåŠã¶å¿ èŠããããŸãããïŒ
ã©ã€ã·ãŒã¢ã ã®10幎çã§ããã°ã©ãã³ã°ã«ç²Ÿéããã®ã§ãç§ãšäžç·ã«åŠã³ãéçºããŸãããäœãæ°ããããšãåŠãã ããä»ã®äººã«äœãæ°ããããšã話ããããããšãåã³ãæããŸãã Lamodaã®åã¯ãVKontakteã«åãçµã¿ãåãããã«éçºããèšäºãèªãã ããã³ãŒã¹ãåè¬ããããäŒè°ã®ã¹ããŒããèŠããããŸããã
ç§ã¯æ¬ãââèªãã§ç¡ç§ç¡æ¬²ã«æé·ããããã«èµ°ãããšã匷ãå§ããŸãã-誰ããèªåã§æ±ºããŸããç§ã®éå»ã®äœåã®äŸãæããŠããç§ãã¡ã¯ãã¹ãŠãGoã§æžãã䞊è¡ããŠRustã«ç®ãåããŸãããåœæã¯ãŸã ããŸã人æ°ããªããé ãæã®ãGovsRustããšãã話é¡ã®èšäºããšãŠãé¢çœãã£ãã§ããåæã«ãä»äºã«ã¯å¿ èŠãããŸããã§ããã
ã©ã¢ãŒãã§åãããšã«ã€ããŠè©±ããšãã«ãã«ä»¥å€ã«ãæšå¹Žãäœãã¢ããã°ã¬ãŒãããå¿ èŠããããŸãããïŒ
Kubernetesã䜿çšããŠãã«ã ãã£ãŒããäœæããŸããã¡ãªã¿ã«ãKubernetesã«ã€ããŠã¯ããããŸã§äžç·ã«ä»äºãããããšããªãã£ãã®ã§ãäžç·ã«ã³ãŒã¹ãåè¬ããŸãããéåžžããããã¯ä»®æ³ãã·ã³ãŸãã¯ç©çããŒããŠã§ã¢ã®ããããã§ããããã¹ãŠã管çè ãçµç±ãããããŸãã¯ããªãèªèº«ãdebããã±ãŒãžãããŒã«ã¢ãŠãããããã®ã¢ã¯ã»ã¹æš©ãæã£ãŠããŸããããããã£ãŠãKubernetesããã¹ã¿ãŒããå¿ èŠããããŸãããããããaã®ç¶æ ã確èªããããã«kubectlã䜿çšãããã¬ãã«ã§ã¯ãªãããã«ã ãã£ãŒããæ£ããèšè¿°ããå éšã§ã©ã®ããã«æ©èœããããçè§£ããã¬ãã«ã§ãã
ã³ãŒã¹ã«ã€ããŠè©±ããŠããéã«ãã«ãã«ã«ã€ããŠè©±ããŸãããããªãã«ãã«ã³ãŒã¹ãåè¬ããã®ã§ããïŒ
ãŠã§ããµã€ãã«ãã«ãã«ã³ãŒã¹ãããããæ¥ãããšãããããŒããããŸãã ããããŠãç§ã¯ãè¡ããªããã°ãªããªãïŒããšæããŸããã
ç§ãèšã£ãããã«ãç§ã¯ãã æ°ããããšãåŠã¶ã®ã倧奜ãã§ããæå°ã¬ãã«ã§Kafkaã§ã¡ãã»ãŒãžãéä¿¡ãŸãã¯èªã¿åãããã«ãé¡ã7ã€ã³ãã§ããå¿ èŠã¯ãããŸãããããããäžè¬çã«ãã©ã¢ãã«ãã«ã¯é·ãéãã£ãããšäœ¿çšãããŠããŸããããããã£ãŠããã®ãã¯ãããžãŒãæ·±ãæãäžããããšã¯ç§ã«ãšã£ãŠé¿ããããŸããã§ããã
ããªãã«ãšã£ãŠã«ãã«ãšã¯äœã§ããïŒ
ç§ã«ãšã£ãŠãããã¯åæ£åã®ãã©ãŒã«ããã¬ã©ã³ããã°ã§ãããã·ã³ãã«ãªã€ã³ã¿ã©ã¯ã·ã§ã³ã€ã³ã¿ãŒãã§ã€ã¹ãåããŠãããéåžžã«å€§éã®ããŒã¿ãããèªäœã§éä¿¡ã§ããŸãã
ã«ãã«ã¯ã©ã¢ãŒãã§ã©ã®ããã«äœ¿çšãããŠããŸããïŒ
ã©ã¢ãŒãã§ã©ããããããã«ãã«ã䜿ããªããµãŒãã¹ãèŠã€ããã®ã¯ãšãŠãé£ããããã§ããã€ãã³ããã¹ãå®è£ ã ãŸããã©ã¢ãŒãå šäœã®ããã®ãã®ãããªã€ãã³ãã®ãã¹ã§ãã誰ããããã€ãã®ã€ãã³ããäœæãããã®ãã¹ã«æ¥ç¶ããŠããä»ã®åå è ã¯ããããèªãã§ãäœããã®åœ¢ã§ãããã«åå¿ããããšãã§ããŸãã
æ°ãããããžã§ã¯ãã«ã€ããŠèšãã°ãæè¿ãxlogããã¯ãšã³ãããåæããŒã¿ãåéãããµãŒãã¹ãéå§ããŸããïŒããã¯ãã®å éšåã§ãïŒããŸããã·ã¹ãã å šäœã®é«ã¹ã«ãŒããããå¿ èŠãªãããKafkaãä»ããŠã
Kafkaã¯ãKafkaãšã³ãžã³ãæèŒããClickHouseãšé£æºããããã«ãå¿ èŠã§ããã€ãŸããKafkaã«æžã蟌ãã ãã§ãClickHouseã¯ããèªäœã«ããŒã¿ãèªã¿æžãããŸãã ClickHouseã§å€ãã®ãšã³ããªãé »ç¹ã«å®è¡ããå¿ èŠããããããžã§ã¯ãã®1ã€ã«åãçµãã§ãããããããã¯éåžžã«äŸ¿å©ã§ãããããŠãç§ãã¡ãç¥ã£ãŠããããã«ãClickHouseã¯ãããç®±ããåºããŠããŸãè¡ãæ¹æ³ãç¥ããŸãã-é©åãªãããã·ãå¿ èŠã§ããçŸåšãåžå Žã«ã¯YandexãšVKontakteã®ãœãªã¥ãŒã·ã§ã³ããããŸãããLamodaã¯ãã§ã«Kafkaã«é¢ããåªããå°éç¥èãæã£ãŠãããããClickHouseãšã®éä¿¡ã«ããã䜿çšããããšã«ããŸããã
ãŸããããããçš®é¡ã®åæã«ç©æ¥µçã«äœ¿çšããŠããŸãã
RïŒDããŒã ã¯Kafkaãã©ã®ããã«äœ¿çšããŠããŸããïŒ Kafkaãããªãã®ãã°ã§ãããšèšãå Žåãããã䜿çšããŠãµãŒãã¹ãéçºããŠãããã€ãŸãKafka Streamsã䜿çšããŠããããšãæ£ããçè§£ããŠããŸããïŒ
ããçš®ã®æœè±¡åãæäŸããKafkaãæäœããããã«ãã©ã€ãã©ãªã«ç¬èªã®ã©ãããŒããããŸãããããå®éã«ã¯ãGoã«ã¯ãã£ãã«ããããŸããéçºè ã¯ãã£ãã«ããèªã¿åããããã«æžã蟌ã¿ãŸãã圌ãã¯ãããã«ãã«ã§ãããã©ããããèããªããããããŸããã
ããªããšããªãã®ããŒã ã¯ã«ãã«ã§ã©ã®ãããªåé¡ã«çŽé¢ããŸãããïŒã©ã®ããã«ãããã解決ããããšããŸãããïŒ
ããã§ã2幎以å ã«Kafkaã䜿çšãããããã¯ãŒã¯ãã£ãã«ã«ã©ãã ãæ©ãå°éããããšãã質åããããŸãããããŠãã®èåŸã§ãå¥ã®çåãçããŸãããã®è©±ãå»¶æããããã«ãã©ã®å§çž®ãæå¹ã«ããå¿ èŠããããã«ãã«ã®ã©ã®ãããã¯ã«ã€ããŠã§ããïŒ
åŸæ¥ãåãåæããŒã¿åéãµãŒãã¹ãå§çž®ã®æåã®åè£ã§ãããã ããå§çž®ãæ¡çšããŠæå¹ã«ããããšã¯ã§ããŸãããããã¯ããããã¥ãŒãµãŒãšã³ã³ã·ã¥ãŒããŒã®CPU䜿çšçã®éã®ããçš®ã®ãã¬ãŒããªãã§ããããã§ãã
ä»ãç§ã¯ãã¹ããšåæãå«ãããã¥ã¡ã³ããæºåããããšããŠããŸããã¡ãªã¿ã«ãKafkaã®ãã³ãããŒã¯æ¹æ³ã«ã€ããŠã¯å¥ã®ã¬ãã¹ã³ãããã®ã§ãããªãã®ã³ãŒã¹ã¯ããã§ç§ã倧ãã«å©ããŠãããŸããããã®ããã¥ã¡ã³ãã§ã¯ããã®ãµãŒãã¹ã§å§çž®ãæå¹ã«ããå¿ èŠããããã©ãããåæ ããããšæããŸãããããããªããç°ãªãå§çž®ã¢ã«ãŽãªãºã ãããã®ã§ãã©ããå«ãããããããæ¹åã®ããã®æãæçœãªãããã¯ã§ããããã«ç§ã«ã¯æããŸãã
ã«ãã«ã«çŸåšççŒã®åé¡ã¯ãããŸããïŒ
ClickHouseãKafkaãšé£æºããããã«èšå®ãããšãã䜿çšããã°ã«ãŒãã§èª¬æããæš©éãæ£ããèšå®ãããŠããªããšããåé¡ããããŸããã
垯åå¹ ã«ã¶ã€ããèšç»ãããæããªãããã§ãã
ãŸããæè¿åŠãã ããšã«ã€ããŠããèãããŸãã KIP500ã¯Kafka2.8ãããªãªãŒã¹ãããZooKeeperãæŸæ£ããŸããããããŠç§ãçè§£ããŠããããã«ãKafkaã¯ZooKeeperã®ååšãšãã®éçã«é Œã£ãŠããŸããã圌ãã¯ãZooKeeperãæŸæ£ãããå ŽåãããŒãã£ã·ã§ã³ã®æ°ã200äžã«å¢ãããšçŽæããŠããŸããããã¯ã©ããããããããªãã®åé¡ã解決ããŸããïŒ
ããªããçŽæ¥çããå Žåãããããããã¯è§£æ±ºããŸããããªããªããç§ãã¡ã¯ã«ãã«ã®ä»äºã«ã¶ã€ãã£ãŠããªãã®ã§ããã以åã«äœ¿çšããŠãããããã¯ãŒã¯ãã£ãã«äžã«ããããã§ãã圌女ã¯ç§ãã¡ã圌女ã«éä¿¡ããããŒã¿ã®éã«ç°¡åã«å¯ŸåŠããŸã-ãã£ãã«ã¯ãããã倿ŽãããŸããã
KIP500ã«ã€ããŠè©±ããšã圌ãã¯ZooKeeperãæŸæ£ããããã®ç¬¬äžæ©ãèžã¿åºããŸãããããããŸã§ã®ãšãããä¿¡é Œã§ãããœãªã¥ãŒã·ã§ã³ã®ããã«ã¯èŠããŸãããZooKeeperãçªç¶æŸæ£ããå€å°ããŒããããæ¬çªã·ã¹ãã ã§2.8ã«åãæ¿ãã䟡å€ã¯ãªãã§ãããã
éèŠãªã®ã¯ãopsã¯éåžžKafkaãæ±ããæ°ããªåé¡ã解決ããæ¹æ³ãçè§£ããå¿ èŠããããšããããšã§ããä»ã圌ãã¯ç¥ã£ãŠããŸãïŒäœããèµ·ãã£ãå Žåã圌ãã¯Kafkaã§ããããŠZooKeeperã§äœãä»ã®ããšãããå¿ èŠããããŸãããããŠã圌ãããã«ããªããšãã¯ãåé¡ã解決ããããã®èšç»ã¯æ©èœãããããªãã¯ãã®åé¡ã«é¢ããå°éç¥èãéçºããå¿ èŠããããŸãã
ç§ã¯æ£ããçè§£ããŸããïŒããªãã¯ãããã¯ãŒã¯ã«ééããKafkaã®æ°Žå¹³ã¹ã±ãŒãªã³ã°ã¯åœ¹ã«ç«ã¡ãŸãããã€ãŸããããã¯ãããã¯ãŒã¯ã®åé¡ã ãã§ããïŒ
äžè¬ã«ãKafkaã¯ããããã¯ãŒã¯ãªã©ã«ééããããã«äœãããŠããŸããããã®ããã©ãŒãã³ã¹ã¯ãããŸãããã³ãŒã¹ã§ããã«ã€ããŠäœãèšãããããæ£ç¢ºã«èŠããŠãããæåž«ã¯ããããªããããªã®ãã詳现ã«èª¬æããŠããŸããããããèå³ã®ãã人ãã³ãŒã¹ãèŠã«è¡ãããšãã§ããããã«ãããã«ã€ããŠã¯è©±ããŸããã
倧ããªèª²é¡ã§ã¯ããã¹ãŠãæç¢ºã§ã-垯åå¹ ããããŠããã®åé¡ã解決ããããã«ãããªãã¯åœŒå¥³ãå æ°ã¥ããŠããŒã ã«äœããããããããã«ã³ãŒã¹ã«è¡ããŸãããããã¯å¶ç¶ã§ããããããšãæ æã«èµ·ãã£ãã®ã§ããïŒ
å¶ç¶ãç§ã¯ããšããšã«ãã«ã§æžãæ¹æ³ãåŠã¶ããã ãã§ãªããã³ãŒã¹ãèŠã«è¡ã£ãããã§ããå®éãé©åã§æ£ããã¬ããªã±ãŒã·ã§ã³ãè¡ãã«ã¯ãæ£ããackãèšå®ããå¿ èŠããããŸãããã®ã³ãŒã¹ã§ã¯ãã·ã¹ãã ã®å éšãšãã®ä»çµã¿ã«ã€ããŠè©³ãã説æããŸãã
ã³ãŒã¹ã«ã€ããŠè©±ããŠããå Žåãéçºè ãšç®¡çè ã«åãããããšã¯ãããŸããããã¹ãŠã®ãããã¯ã確èªããŸãããããããšã管çè ãã¹ã¯ããŒã«ããŸãããïŒ
ãã¹ãŠãç§ã«ãšã£ãŠè峿·±ãã®ã§ãç§ã¯ãã¹ãŠã®ãããã¯ãééããŸãããç§ã¯æ°ããããšãåŠã¶ããšããããã¯ãåŸããéåžžãç§ã¯ã¡ã¢ãåãããã°ããããŠãããã®ã¡ã¢ã«æ»ããèªã¿çŽããŠãäœããæšãŠãŸããäžæãªç¹ãããå Žåã¯ãã³ãŒã¹ã®äžéšãä¿®æ£ããæŠèŠã®äžéšãæžãçŽããŸãã
ã€ã³ã¿ãŒã³ã·ããã¯çµãããŸãããïŒããããç¹ã«ç®¡çè ã§ãããã®ãå®è£ ããã®ã¯é£ããã£ãã§ããïŒ
ç§ã¯éãæããŸãããããŸã ãã¹ãŠã§ã¯ãããŸãããããããååã«èšç»ããããã¹ãŠã®ãã®ããããã©ã®ããã«ãäœãè¡ãå¿ èŠããããã©ã®ãããªçµæãæåŸ ã§ããããããããŸãããé¢çœãã£ãã§ãã
ãŸããJavaã¢ããªã±ãŒã·ã§ã³ãããã€ãã®å®çšçãªäœæ¥ã«äœ¿çšãããŸããç§ã¯ãã®ä»äºãããã ãã§ãªããKafkaã§åäœããJavaã®ã³ãŒããåŠã¶ããšã«æéãè²»ãããŸããããã®ãããªå®çšçãªã¿ã¹ã¯ãå®è¡ãããšãã¯ãããå°ãæ·±ããåºãèŠãå¿ èŠããããŸãã
ã€ãŸããããªãã¯ãã¯ãããžãŒãèŠãŠããã®ã§ãã
ã¯ããç§ãããŒãã£ã·ã§ã³ã§äœæ¥ãããŠãããšããããã¯ã¬ããªã±ãŒã·ã§ã³ã«é¢ãããã®ã§ããããããŠãå°ãéã£ãããæ¹ããããã©ããªãããšæããŸãããæéããããŠéãã§ã1ã€ã®ããŒãããªãã«ãããšã©ããªããã確èªããŸããããããŠ2ã€ãªãïŒä»ã«äœãããå Žåã¯ã©ããªããŸããïŒç·Žç¿çšã®ã¹ã¿ã³ããããã®ã¯è¯ãããšã§ããèªåããäœããæã¡äžããå¿ èŠã¯ãããŸãããããã«æéãç¡é§ã«ããå¿ èŠã¯ãããŸããã
ããªãã«ãšã£ãŠæãè峿·±ãã£ãããšãæããŠãã ãããããã«ã€ããŠäœãç¥ããŸãããããªãããªãã¯éåžžã«é©ããã®ã§ããïŒ
ããšãã°ãå®éã«ã¯Kafkaã¯ã¡ã¢ãªå ã®ãã¥ãŒã§ããããŒã¿ããŒã¹ã¯ãã£ã¹ã¯ã«æžã蟌ãã ãã§ãªãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒã¿ããã£ã¹ã¯ã«ãã©ãã·ã¥ããããã«fsyncãåŒã³åºããšããäºå®ã«æ £ããŠããŸãã writeãåŒã³åºãã ãã§ã¯ãããŒã¿ãæžã蟌ãŸãããšã¯éããŸããã
Kafkaã¯ãããè¡ããŸãããwriteãã·ã¹ãã ã³ãŒã«ãåŒã³åºãã ãã§ãããã ãã§ãã圌ã¯åã«ãããªãã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ããããã€ãªã»ããããããæ±ºããããšèšã£ãŠããŸããå®éãKafkaã®ä¿¡é Œæ§ã¯ã¬ããªã±ãŒã·ã§ã³ã«ãã£ãŠä¿èšŒãããŠããŸããç¥ããªãã£ãã KafkaãfsyncãåŒã³åºãããã¹ãŠã®ããŒã¿ãæ£çŽã«ãã£ã¹ã¯ã«ä¿æãããšæããŸãããããã¯åœŒå¥³ãããã«ç¡çŸã§ãããã§ãã
ããã€ãã®ããŒã¿ã»ã³ã¿ãŒã®åé¡ã«ã€ããŠèãããšãè峿·±ããã®ã§ããã
垯åå¹ ã¿ã¹ã¯ãå°æ¥ã®èª²é¡ã«å¯Ÿå¿ããããã«ãã³ãŒã¹ããäœãåãé€ããã®ã§ããïŒ
Kafkaã®ããã©ãŒãã³ã¹ã枬å®ããæ¹æ³ãšãå§çž®ããŒã¿ã§ã©ã®ããã«æ©èœãããã Kafkaã¯ããããè§£åããŸãããããã£ã¹ã¯ã«æžã蟌ã¿ããã®ãŸãŸæ¶è²»è ã«æäŸããŸããããã«ãããKafkaã§æžã蟌ããããã¥ãŒãµãŒã ãã§ãªããKafkaããèªã¿åãã³ã³ã·ã¥ãŒããŒã®CPUã³ã¹ãã調ã¹ãå¿ èŠãããããšãæããã«ãªããŸãããããŠããããŠãããæ£ãããã³ãããŒã¯ããæ¹æ³ã
ãããšããã³ãŒã¹ã§äœãé£ããããšããããŸãããïŒãããšããç·Žç¿ã¯ç¹ã«é£ããã£ãã§ããïŒ
ããã¯ãŸãã«ãã®ãããªãã®ã§ããïŒç§ã¯ããã€ãã®ãããªãæ°åèŠãŸãããæ¶è²»è ã°ã«ãŒãã®ãªãã©ã³ã¹ã«ã€ããŠæ£ç¢ºã«æ¹èšãæåã®è¡šç€ºããããããã©ã®ããã«çºçãããã¯å®å šã«ã¯æç¢ºã§ã¯ãããŸããã§ãããç§ã¯åçŽãªãªãã©ã³ã¹ã«ã€ããŠè©±ããŠããã®ã§ã¯ãªããã€ã³ã¯ãªã¡ã³ã¿ã«ãªãªãã©ã³ã¹ã«ã€ããŠè©±ããŠããã®ã§ãããããä¿®æ£ããŠèªã¿çŽãå¿ èŠããããŸããã
ãããã¯èªäœã¯è€éã§ããããªãã¯ãããªãèŠãŠãããã¯ãªã¢ãŒãã§æç¢ºã«èŠããŸããããã¹ãŠã®ããã»ã¹ãæç¢ºã«çè§£ãããã®ã§ãä¿®æ£ããå¿ èŠããããŸããéçã§åº§ã£ãŠæãã ãã§ããã¹ãŠãæããã«ãªã£ãããã«èŠããŸãã
ãããŠçµè«ãšããŠãç§ã¯å°ããŸãïŒããªãã¯ããªãã®èšç·Žãšä»äºã®èšç»ã«äœãæã£ãŠããŸããïŒ
ããã°ãå§ããŸãããç§ã¯ãã¡ã€ã³ãè³Œå ¥ãããããDigitalOceanã«ç¡æã§æäŸããŸããã圌ãã¯éçã³ã³ãã³ããç¡æã§é åžããŠããŸããããã°ã¯ç§ã«äœããåŠã³ããããæžãçããŠä»ã®äººãšå ±æããã€ã³ã»ã³ãã£ããäžããŠãããŸãã誰ãã«ãããäŒããããšãã§ããã°ããã®ãããã¯ãçè§£ããŠã圌ãçè§£ã§ããããã«ãªããŸãã
ãããŠãããã°ã¯ãã èªãçŽãã¹ãã«ãäžããŸããä»ãç§ã¯GINã€ã³ããã¯ã¹ã®å¹çãæ±ã£ãŠããŸããæšå¹Žã®GolangConfã®è¬æŒã«åºã¥ããããã®ãããã¯ã«é¢ããèšäºããŸããªãå ¬éãããŸãã
ããªãã¯åžžã«èªåèªèº«ãæ¢ãå¿ èŠããããŸãïŒããªãã匷ããæã£ãŠãããªããGoãã©ã®ããã«æ©èœãããã«ã€ããŠã®èšäºãèªãã§ã¿ãŸãããã