ระบบที่ TD หรือ ถูกดี ดูแลคือ การสร้างระบบ POS (Point of Sales)
สำหรับร้านค้าโชว์ห่วยเล็ก ๆ
ซึ่งมีมากกว่า 100,000 ร้านค้า
ดังนั้นถ้าคิดง่าย ๆ ถ้าแต่ละร้านมี transaction วันละ 100
ก็ตีง่าย ๆ คือ ต้องรองรับ 1,000,000 transaction ต่อวัน
นี่คือ ความท้าทายที่ทีมต้องจัดการให้ได้

เป็นที่มาของ session นี้คือ The 3 years journey behind POS and ERP that handle s 1M+ transactions per day

ย้อนกลับไปเมื่อ 4 ปีที่แล้ว เริ่มต้นจากไม่มีอะไรเลย

ดังนั้นจึงเริ่มทำการออกแบบระบบ ERP โดยแยกมา 12 ตัว
เรียกว่า 12 monkey service หรือ ลิง 12 ตัว

การติดต่อสื่อสารระหว่าง service ใช้งาน Apache Kafka
เพื่อลดการติดต่อสื่อสารไปยัง service ต่าง ๆ
ทำให้ระบบมาเป็น Event-based architecture

แต่ก็ยังมีปัญหาในเรื่องของการ performance และ scaling
เนื่องจาก service นั้นแยกกัน แต่ Data source ยังมีรวมศูนย์
ทำให้ถ้ามีบ้างร้านมีการใช้งานสูง
อาจจะส่งผลต่อระบบโดยรวมด้วย

โดยในปี 2021 นั้น ทาง TD ได้ทำงานปรับปรุงเรื่อง performance ไปถึง 2 ครั้ง
เพื่อทำให้ระบบรองรับกับการใช้งานที่สูงขึ้น

ระบบ monitoring ที่กระจัดกระจายไปในแต่ละทีม
ส่งผลให้มีหลากหลายระบบ แน่นอนว่าแตกต่างกัน
ทำให้เมื่อมีปัญหาจะ detect ยากมาก ๆ
ดังนั้นจำเป็นต้องมีการจัดการระบบ monitoting ใหม่ต่อไป

ระบบงานมีการจัดการเรื่องของ CI/CD
ใช้งาน containerization ตัวจัดการคือ Kubernetes
ใช้งานระบบ cloud น่าจะเป็น Google Cloud
ผสมผสานกับระบบงาน legacy ที่มีอยู่

ในส่วนของหน้าบ้าน หรือ เครื่อง POS จะเป็น Android app ด้วย Kotlin

มีการเปลี่ยนแปลง ปรับปรุงทั้ง software ที่พัฒนา และ hardware ที่มีประสิทธิภาพดีขึ้น
ใน app สามารถทำงานแบบ offline ได้
ดังนั้นจึงต้องมีเชการเก็บข้อมูลบน device ของ POS ด้วย
ซึ่งปัจจุบันใช้งาน SQLite
ก่อนหน้านี้ใช้งาน Realm
รวมทั้งมีการเก็บ log การทำงานต่าง ๆ ซึ่งใช้งาน Hyperloglog

ปัญหาการจัดการเรื่องของเวลา ที่ Android ไม่ได้ sync time กันตลอด
ทำให้เวลาไม่ตรงกัน ทำให้มีปัญหาเกี่ยวกับเวลาของการสร้าง transaction ต่าง ๆ

การโอนเงินไปให้ partner ตามต่างจังหวัด ก็ต้องโอนเงินให้สะดวกอีกด้วย
ตรงนี้ไม่ง่าย ตอนนี้ไปทำงานร่วมกับ KBANK สำหรับ bill payment

การ deploy POS ตามแต่ละที่ จะเริ่ม deploy ผ่าน Play Store
แต่ปัญหาคือ ต้องมีกระบวนการสำหรับการ verify
ซึ่งช้า และ ใช้เวลานาน (ช่วงปี 2021 COVID)

และเมื่อ POS แต่ละเครื่องมีปัญหาก็ต้องรู้และจัดการให้รวดเร็วอีกด้วย

เท่าที่ฟังฝั่ง POS App มี issue ต่าง ๆ เยอะมาก ๆ !!
ทั้งการทำงานแบบ offline
ทั้งการ sync data กับระบบกลาง
ทั้งการเพิ่ม feature ใหม่ ๆ เช่น multiple cashier เป็นต้น

ตอนนี้ใช้งาน Kotlin multiplatform
ดูในเรื่องของ SQLDelight สำหรับ generate SQL statement

ในปีต่อไป ทางทีมกำลังทำ Evolutionary of Architecture กันต่อไป
เพื่อปรับปรุงให้ดีขึ้น เพื่อแก้ไขปัญหา และ รองรับกับความต้องการที่สูงขึ้น