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

Pattanan Numpong
Stand Up Code
Published in
2 min readApr 4, 2022

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

https://www.tao-bin.com/en

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

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

https://www.tao-bin.com/en/jobs/mid-level-backend-engineer-(node.js%2C-ts)

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

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

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

3. ส่งการข้อมูลไปฐานข้อมูลได้อย่างไรรู้ได้ไงเมื่อไรควรส่งอะไร

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

รูปของ Kafka และ คู่ปรับของมัน

เอาละก่อนจะงงไปมากกว่านี้เรามาดูกันดีกว่าปกติถ้าที่ไม่รู้จัก 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

--

--