Solution

Apache Kafka เบื้องหลังการทำงานของตู้เต่าบิน และ Kiosk ทั้งหลาย [คนไม่ Code ก็อ่านได้ ]

ณ เวลานี้คงไม่มีใครไม่เคยเห็นตู้เต่าบินเจ้าตู้กดกาแฟเครื่องดื่มที่แสนสะดวกสบายและมีเมนูให้เลือกหลากหลาย แต่คุณรู้หรือไม่ว่าเบื้องหลังการทำงานมันเป็นอย่างไร

หลังจากได้ใช้บริการตู้นี้บ่อยระหว่างรอกาแฟก็ยืนวิเคราะห์ระบบของมัน

ถามว่าผมมั่นใจได้ไงว่า เจ้าเต่าบินใช้ Kafka แน่ ๆ คำตอบก็คือในประกาศรับสมัครงานของเต่าบินเองทำให้ผมพอจะวางคร่าว ๆได้ว่าระบบใช้อะไรบ้าง

แต่นั่นไม่ใช่ส่ิงที่เราจะคุยกันในบทความนี้เพราะเราจะพยามไม่พูดถึง Technical มากไป

คุณอาจจะตั้งคำถามเหล่านี้ แต่ถ้าไม่ก็สงสัยหน่อยเถอะนะ ๆ

สงสัยไหมว่า ตู้มันรู้ได้อย่างไรว่าเราจ่ายเงินมันแล้ว แล้วมันบอกให้ เจ้าหน้าที่รู้ได้อย่างไรเมื่อมีปัญหา เช่น ของหมด ปล. อันนี้ไม่รู้เขาใส่ไว้ไหม ส่งข้อมูลไปฐานข้อมูลได้อย่างไรรู้ได้ไงเมื่อไรควรส่งอะไร

ใครที่พอคุ้น ชื่อ Apache Kafka อาจจะพอจำได้ว่ามันเป็นคู่แข่งกับ Rabbit MQ ซึ่งเป็น Message Queue เหมือนกัน แต่จริงมันก็ต่างไปหน่อยที่ Kafka บอกว่าตัวเอง คือ Distributed Event Streaming

เอาละก่อนจะงงไปมากกว่านี้เรามาดูกันดีกว่าปกติถ้าที่ไม่รู้จัก 2 ตัวนี้จะทำตู้แบบนี้จะทำอย่างไร

คือ จะเห็นได้ว่ามีการส่งกันไปมารับส่งกันไปมาระหว่าง Service แต่ละตัว เหมือน A ต้องคอยเดินไปบอก B ใกล้ๆ ว่าต้องทำอะไร เมื่อ B ทำเสร็จก็ต้องเดินมาบอก A อีกแบบวุ่นวายสุด ๆ

นี่แค่จำลองนะ ฝันร้ายจะเกิดทันทีถ้ามีตัว Service มากว่านี้แถมยังทำงานแบบ Synchronous อีก คือ ต้องรอ 1 เสร็จก่อน 2 งั้นลองดูแบบใช้ Kafka บ้าง

ถ้าแบบแรก คือ การเดินไปบอกใกล้ ๆ Kafka เหมือนตะโกนบอก โดยแต่ละ Service จะเลือกฟังเฉพาะเรื่องที่ตัวเองสนใจเท่านั้น เพราะฉะนั้นจึงดีกว่าการรอการทำงานทีละ ตัว ทำให้ดีต่อการ Scale ในอนาคตจะไปเข้ากับ Concept การออกระบบ Micro Services ซึ่งเป็นระบบยุคใหม่

ระหว่างนั้นอาจจะมี Event บางยังที่ต้องแสดงเลยก็ไม่ต้องทำเป็นระบบเรียกกันไปมา อนาคตอาจจะมีการส่ง Steam Event ระหว่างที่ User กดเลือกเมนูเก็บไว้ทำ Data Analytics วิเคราะห์แนว ๆ มา User มีความลังเลไหมต่าง ๆ (ชี้ช่องละนะ)

ใด ๆ แล้วเหรียญยอมมี 2 ด้าน มีข้อดีก็ต้องมีข้อเสีย Kafka ไม่ใช่ทุกคำตอบของ Micro services และไม่ใช่คำตอบของทุกงาน

ข้อเสียหลัก ๆ คือ ความยากในการ Setup และ ความซับซ้อน ถ้าเราทำระบบทั่วไปไม่มีความจำเป็นเลยที่ต้องใช้งาน Kafka

ถึงเวลาต้องลาจากันไป ฝากติดตามผมได้ที่เพจ StandUpCode และทุก ๆ ช่องทาง Youtube, Spotify