ãããåŠçã¯ã¹ããªãŒãã³ã°ã®ç¹æ®ãªã±ãŒã¹ã§ããããžãã¹ãæéåäœã§ã¯ãªãç§åäœã§åå¿ããå¿ èŠãããå Žåãç¶ç¶çãªããŒã¿ãããŒã®ããã«æ§ç¯ãããã¢ãŒããã¯ãã£ãå¿ èŠã§ãã

ããã·ã¥ããŒãã¯ã誰ãããããèŠãé ã«ã¯æ¢ã«å€ããªã£ãŠããŸããäžæ£æ€åºã¯å€éã®ããããžã§ããšããŠå®è¡ãããç¿æã«äžæ£ãæ€ç¥ããŸããåšåº«æ°ã¯1æéããšã«æŽæ°ãããéå°è²©å£²ãåŒãèµ·ãããŸããã»ã³ãµãŒããŒã¿ã¯åéãããŸãããå€éã® ETL ã§åæããããŸã§å©çšãããŸãããããŒã¿ããœãŒã¹ããåŠçãçµãŠã³ã³ã·ã¥ãŒããŒãŸã§ããµãç§ã®ã¬ã€ãã³ã·ãŒã§ç¶ç¶çã«æµããã·ã¹ãã ãå¿ èŠã§ã â ãªã¢ã«ã¿ã€ã ã¢ããªãã£ã¯ã¹ãã©ã€ãéç¥ãã¹ããªãŒãã³ã° AI æšè«ãã·ã¹ãã éã®å³æåæãªã©ã§ãã
Explore more design patterns and system architectures
MicrocosmWorksã¯ããã«ãã³ã³ã·ã¥ãŒããªãã¬ã€ãé·æéã®ããŒã¿ä¿æãããã³ã¯ãã¹ã¯ã©ãŠãããŒã¿ããªãã£ãå¿ èŠãšããããŒã ã«Kafkaãæšå¥šããŸããããã¯ããã®ãã°ããŒã¹ã®ã¢ãŒããã¯ãã£ãç¡å¶éã®ã³ã³ã·ã¥ãŒãã°ã«ãŒããåãããŒã¿ã¹ããªãŒã ãåå¥ã«åèªã¿èŸŒã¿ããããšããµããŒãããŠããããã§ããKinesisã¯ãAWSãšã³ã·ã¹ãã ãšå¯æ¥ã«çµ±åããããã«ãããŒãžããµãŒãã¹ãåžæããããŒã¿ä¿ææéã7æ¥æªæºã§ãã³ã³ã·ã¥ãŒãã¢ããªã±ãŒã·ã§ã³ã10æªæºã§ããå Žåã«ãããè¯ãéžæè¢ã§ããåœç€Ÿã¯ãé©åãªæšå¥šãè¡ããããã¢ãŒããã¯ãã£è©äŸ¡äžã«ã客æ§ã®ç¹å®ã®èŠä»¶ïŒã¹ã«ãŒããããããŒã¿ä¿ææéãã³ã³ã·ã¥ãŒããã¿ãŒã³ãéçšæç床ïŒãè©äŸ¡ããŸãã
MicrocosmWorksã¯ãåªçãªãããã¥ãŒãµãŒããã©ã³ã¶ã¯ã·ã§ã³ã³ã³ã·ã¥ãŒããŒãããã³Redisã®ãããªé«éã«ãã¯ã¢ãããã£ãã·ã¥ã«ä¿åãããã€ãã³ããã£ã³ã¬ãŒããªã³ãã䜿çšããéè€æé€ã¬ã€ã€ãŒã®çµã¿åãããéããŠãexactly-onceã»ãã³ãã£ã¯ã¹ãå®è£ ããŠããŸããKafkaããŒã¹ã®ã·ã¹ãã ã®å Žåãç§ãã¡ã¯ã³ã³ã·ã¥ãŒããŒãªãã»ãããšãããã¥ãŒãµãŒã®æžã蟌ã¿ãã¢ãããã¯ã«ã³ãããããKafkaã®çµã¿èŸŒã¿ãã©ã³ã¶ã¯ã·ã§ã³APIãæŽ»çšããŠããŸããäžæ¹ãã«ã¹ã¿ã ã¹ããªãŒãã³ã°ãã€ãã©ã€ã³ã®å Žåãã³ã³ã·ã¥ãŒããŒåŽã§ã®éè€æé€ã䌎ãã¢ãŠãããã¯ã¹ãã¿ãŒã³ãå®è£ ããŠããŸããç§ãã¡ã¯åžžã«ã³ã³ã·ã¥ãŒããŒãåªçã«ãªãããã«ã»ãŒããã£ããããšããŠèšèšããŠããŸãããã®ãããããšãexactly-onceã¡ã«ããºã ããšããžã±ãŒã¹ã§å€±æããŠããã€ãã³ããååŠçããŠãåãçµæãçæãããŸãã
MicrocosmWorksã¯éåžžãã€ã³ãžã§ã¹ããåŠçãã·ã³ã¯æžã蟌ã¿ãå«ãã¹ããªãŒãã³ã°ãã€ãã©ã€ã³ã«å¯ŸããŠã50ã200msã®ãšã³ãããŒãšã³ãã®ã¬ã€ãã³ã·ãå®çŸããŸããApache FlinkãKafka Streamsã®ãããªã€ã³ã¡ã¢ãªã®ã¹ããªãŒã ããã»ããµã䜿çšãããããã·ã³ãã«ãªãã¹ã¹ã«ãŒããã£ã«ã¿ãªã³ã°ã®ã¯ãŒã¯ããŒãã§ã¯ã10msæªæºãéæå¯èœã§ããæå€§ã®ã¬ã€ãã³ã·èŠå ã¯éåžžããããã¯ãŒã¯ããããã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãªãŒããŒããããããã³ã·ã³ã¯æžã蟌ã¿ã®ãããåŠçã§ããããããã¯ã客æ§ã®ã¬ã€ãã³ã·ãšã¹ã«ãŒãããã®ãã¬ãŒããªãã«é¢ãããèŠæã«åºã¥ããŠèª¿æŽããŸããã¢ãŒããã¯ãã£èšèšã®éããã€ãã©ã€ã³ã®ã¹ããŒãžããšã«æç€ºçãªã¬ã€ãã³ã·SLOãèšå®ããæ¬çªç°å¢ã«ãããp50ãp95ãp99ã®ã¬ã€ãã³ã·ã远跡ããã¢ãã¿ãªã³ã°ããã·ã¥ããŒããæ§ç¯ããŸãã
MicrocosmWorksã¯ãæ¢åã®ã³ã³ã·ã¥ãŒããŒãç Žå£ããããšãªããããã¥ãŒãµãŒãããŒã¿åœ¢åŒãé²åããããããããåŸæ¹äºææ§ããã³åæ¹äºææ§ã®ã«ãŒã«ã匷å¶ããã¹ããŒãã¬ãžã¹ããªïŒéåžžãConfluent Schema Registry ãŸã㯠AWS Glue Schema RegistryïŒãå®è£ ããŠããŸããåœç€Ÿã§ã¯ãæç€ºçãªã¹ããŒãããŒãžã§ãã³ã°ãåããAvroãŸãã¯Protobufã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ã䜿çšããŠãããããã«ããåã¡ãã»ãŒãžã¯èªå·±èšè¿°çãšãªããçæãããŠããã¹ããŒãã倿Žãããå Žåã§ããã·ãªã¢ã©ã€ãºå¯èœã§ããåœç€Ÿã®CI/CDãã€ãã©ã€ã³ã«ã¯ãææ¡ãããã¹ããŒã倿ŽãããŠã³ã¹ããªãŒã ã³ã³ã·ã¥ãŒããŒãç Žå£ããå¯èœæ§ãããã°ããããã€ã¡ã³ãããããã¯ããèªååãããã¹ããŒãäºææ§ãã§ãã¯ãå«ãŸããŠããŸãã
MicrocosmWorks ã¯ãæ¬çªã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ã確å®ã«ç¶æããããã«ã忣ã·ã¹ãã ãã¹ããªãŒã åŠçãã¬ãŒã ã¯ãŒã¯ãã€ã³ãã©èªååã®çµéšãæã€æäœ2ã3åã®ãšã³ãžãã¢ãæšå¥šããŠããŸãããã®å°éç¥èã瀟å ã§æ§ç¯ããããªãäŒæ¥åãã«ã¯ãåœç€Ÿã®ããŒã ãã¯ã©ã¹ã¿ãŒéçšãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãã€ã³ã·ãã³ã察å¿ãåŠçããã客æ§ã®éçºè ãã¹ããªãŒã åŠçã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«éäžã§ããããã«ã1æéããã$15ã$40ã§ãããŒãžãã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ãµããŒããæäŸããŠããŸãããŸãã4ã8é±éã®æéã«ããããæ¢åã®ãšã³ãžãã¢ãªã³ã°ããŒã ãKafkaãFlinkããŸãã¯Kinesisã®éçšã«é¢ããã¹ãã«ã¢ãããå³ããã¬ãŒãã³ã°ããã°ã©ã ãæäŸããŠããŸãã
ç§ãã¡ã®ã¢ãŒããã¯ãã¯ããã®ãã¿ãŒã³ã䜿çšããŠã·ã¹ãã ãèšèšããã³æ§ç¯ããç¹å®ã®èŠä»¶ã«å¯Ÿå¿ããã®ããæäŒãã§ããŸãã
ãåãåãããªã¢ã«ã¿ã€ã ã¹ããªãŒãã³ã°ã¢ãŒããã¯ãã£ã¯ãããŒã¿ã颿£çãªãããã§ã¯ãªããç¶ç¶çã§ç¡å¶éã®ãããŒãšããŠåŠçããŸããã€ãã³ããããã¥ãŒãµãŒã¯ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ïŒKafkaãKinesisãPulsarïŒã«çºè¡ããŸããã¹ããªãŒã ããã»ããµãŒïŒFlinkãKafka Streamsãã«ã¹ã¿ã ã³ã³ã·ã¥ãŒããŒïŒã¯ãã€ãã³ããã€ã³ãã©ã€ãã§å€æããšã³ãªããããã£ã«ã¿ãªã³ã°ãéèšããŸããåŠçãããçµæã¯ããªã¢ã«ã¿ã€ã ããã·ã¥ããŒãïŒWebSocketïŒãæ€çŽ¢ã€ã³ããã¯ã¹ïŒElasticsearchïŒãã¢ããªãã£ã¯ã¹ããŒã¿ããŒã¹ïŒClickHouseïŒãããã³ããŠã³ã¹ããªãŒã ãµãŒãã¹ãªã©ã®ã³ã³ã·ã¥ãŒããŒã«ããã·ã¥ãããŸããCDCïŒChange Data CaptureïŒã«ãããæ¢åã®ããŒã¿ããŒã¹ã¯ã¢ããªã±ãŒã·ã§ã³ã®å€æŽãªãã«ã€ãã³ããœãŒã¹ãšããŠåå ã§ããŸãã
ãã®ã¢ãŒããã¯ãã£ã¯4ã€ã®ã¬ã€ã€ãŒã§æ§æãããŠããŸããã€ãã³ããœãŒã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ã€ãã³ããããŒã¿ããŒã¹ CDC ã¹ããªãŒã ãIoT ãã¬ã¡ããªãŒããŠãŒã¶ãŒã®ã¯ãªãã¯ã¹ããªãŒã ãå€éš API Webhook ãªã©ã®ããŒã¿ãçæããŸããã¹ããªãŒãã³ã°ãã©ãããã©ãŒã ïŒKafkaïŒã¯ãèä¹ æ§ããããé åºä»ãããããªãã¬ã€å¯èœãªã€ãã³ãã¹ãã¬ãŒãžãæäŸããŸããã¹ããªãŒã ããã»ããµãŒã¯ããããã¯ããã³ã³ã·ã¥ãŒã ãã倿ïŒãã£ã«ã¿ãªã³ã°ããšã³ãªããã¡ã³ãããŠã£ã³ããŠéèšãçµåïŒãé©çšããåºåãããã¯ãŸãã¯ã·ã³ã¯ã«çæããŸããã³ã³ã·ã¥ãŒããŒã¯ãåŠçãããã¹ããªãŒã ããµãã¹ã¯ã©ã€ãããŸã â WebSocket ãµãŒããŒã¯ãã©ãŠã¶ãŒã«ããã·ã¥ããã³ãã¯ã¿ãŒã¯ããŒã¿ããŒã¹ã«ã·ã³ã¯ããã¢ã©ãŒããšã³ãžã³ã¯ã«ãŒã«ãè©äŸ¡ããŠéç¥ãçºè¡ããŸãã
| ã¬ã€ã€ãŒ | ãã¯ãããžãŒ |
|---|---|
| ã¹ããªãŒãã³ã° | Apache Kafka (MSK, Confluent), Kinesis, Apache Pulsar, Redpanda |
| CDC | Debezium, AWS DMS, Maxwell |
| åŠç | Apache Flink, Kafka Streams, Benthos, ã«ã¹ã¿ã ã³ã³ã·ã¥ãŒã㌠|
| ãªã¢ã«ã¿ã€ã é ä¿¡ | WebSocket (Socket.io), SSE, GraphQL Subscriptions |
| ã¢ããªãã£ã¯ã¹ | ClickHouse, Apache Druid, Elasticsearch, TimescaleDB |
| å¯èŠ³æž¬æ§ | Kafka ã©ã°ç£èŠïŒBurrowïŒãFlink ã¡ããªã¯ã¹ãã«ã¹ã¿ã ã¬ã€ãã³ã·ãŒãã©ããã³ã° |
| å©çšãã¹ãæ | é¿ããã¹ãæ |
|---|---|
| ããžãã¹äžã®æææ±ºå®ã«ãµãç§ã®ããŒã¿é®®åºŠãå¿ èŠãªå ŽåïŒäžæ£ãç£èŠãååŒãªã©ïŒ | æéåäœ/æ¥åäœã®é®®åºŠãæã€ãããåŠçã§ããžãã¹ããŒãºãæºããããå Žå |
| è€æ°ã®ã³ã³ã·ã¥ãŒããŒãåãã€ãã³ãã¹ããªãŒã ãå¿ èŠãšããå ŽåïŒãã¡ã³ã¢ãŠããççµåã·ã¹ãã ïŒ | åäžã®ãããã¥ãŒãµãŒãšåäžã®ã³ã³ã·ã¥ãŒããŒã®å Žå â ã·ã³ãã«ãªãã¥ãŒã§åå |
| ãããã°ãååŠçããŸãã¯æ°ããã³ã³ã·ã¥ãŒããŒæ§ç¯ã®ããã«ã€ãã³ããªãã¬ã€ãå¿ èŠãªå Žå | ããŒã¿éãå°ãªãïŒ1Kã€ãã³ã/åæªæºïŒãã¹ããªãŒãã³ã°ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ£åœåã§ããªãå Žå |
| ã³ãŒã倿Žãªãã§æ¢åã®ããŒã¿ããŒã¹ãããŠã³ã¹ããªãŒã ã·ã¹ãã ã«åæããããã« CDC ãå¿ èŠãªå Žå | ããŒã ã忣ã·ã¹ãã ã®çµéšãæ¬ ããŠããå Žå â ã¹ããªãŒãã³ã°ã¯éçšäžã®è€éããå€§å¹ ã«å¢å ãããŸã |
MW ã¯ãããªãã¬ã€ååãã«åºã¥ãã¹ããªãŒãã³ã°ã·ã¹ãã ãèšèšããŠããŸã â ãã¹ãŠã®ã¹ããªãŒã ã¯ç¹å®ã®æç¹ãããªãã¬ã€å¯èœã§ããã¹ãã§ãããæ°ããã³ã³ã·ã¥ãŒããŒãéå»ã®ããŒã¿ãããã¯ãã£ã«ããããæ¢åã®ã³ã³ã·ã¥ãŒããŒããã°ä¿®æ£åŸã«ååŠçãããã§ããããã«ããŸããåœç€Ÿã® Kafka ãããã€ã¡ã³ãã«ã¯ãã¹ããŒãé²åããªã·ãŒïŒããã©ã«ãã§åŸæ¹äºæïŒãã³ã³ã·ã¥ãŒããŒã©ã°ã¢ã©ãŒãïŒããžãã¹ã«åœ±é¿ããé å»¶ã«ãªãåïŒãããã³èªååè©Šè¡æ©èœãåãããããã¬ã¿ãŒãããã¯ãå«ãŸããŠããŸããåœç€Ÿã¯ããããªã¢ããªãã£ã¯ã¹ãIoT ãã¬ã¡ããªãŒããªã¢ã«ã¿ã€ã ããã·ã¥ããŒãåãã«ã50äžã€ãã³ã/ç§ä»¥äžãåŠçããã¹ããªãŒãã³ã°ãã€ãã©ã€ã³ãæ§ç¯ããŠããŸããã
åäžã®ã³ãŒãããŒã¹ãæ°çŸã®ããã³ããããŒã¿æŒæŽ©ãŒã â ãã¹ãŠã®ã¹ã±ãŒã©ãã«ãªSaaSããžãã¹ã®åºç€ã