สถาปัตยกรรม

สร้างมาเพื่อเติบโต
ไม่ใช่แค่ให้พอใช้

หน้านี้เขียนขึ้นสำหรับ CTO ผู้จัดการฝ่ายไอที และสถาปนิกระบบ — เราใช้ศัพท์เทคนิคจริง เพราะผู้อ่านกลุ่มนี้ต้องการเห็นมัน

Naya People

4 microservices

คอมโพเนนต์หน้าที่รับผิดชอบเทคโนโลยี
itsm-webหน้าเว็บสำหรับผู้ใช้งานและผู้ดูแลระบบReact 19 + TypeScript + Vite + Tailwind CSS 4
service-coreแกนหลัก HCM — พนักงาน เวลา การลา OT การอนุมัติ ทรัพย์สิน ห้องประชุม แดชบอร์ดNestJS 11 + Fastify + MongoDB + Redis/BullMQ
service-ticketService ticket ลูกค้า และเครดิตNestJS 11 + gRPC + MongoDB
service-notificationส่งอีเมลและการแจ้งเตือนในระบบNestJS 11 + gRPC + Handlebars templates
ทำไมจึงออกแบบเช่นนี้

เหตุผลเบื้องหลังแต่ละการตัดสินใจ

ใช้ gRPC ระหว่างเซอร์วิส

รวดเร็ว พร้อม สัญญาข้อมูลที่ชัดเจน (data contract) ซึ่งช่วยลดข้อผิดพลาดในการเชื่อมต่อระหว่างทีม

คิวงานด้วย BullMQ บน Redis

งานหนักอย่างการส่งอีเมล คำนวณวันลาใหม่ทั้งบริษัท และซิงก์ผังองค์กร ทำงานเบื้องหลังโดยไม่ต้องให้ผู้ใช้รอ

งานตามเวลา (Scheduled jobs)

ตรวจการขาดงานรายวัน · รีเซ็ตเครดิตลูกค้า · ตรวจ SLA · ตรวจเงื่อนไขการแจ้งเตือนลูกค้า

Object Storage

จัดเก็บไฟล์บน Cloudflare R2 / storage ที่รองรับ S3 — ขยายได้ไม่จำกัดและปลอดภัย

การใช้งานจริง

พร้อมรันบนโปรดักชันจริง

Kubernetes

รองรับ พร้อม auto-scaling ตามการใช้ CPU/หน่วยความจำ และ health check

Prometheus metrics

การมอนิเตอร์พร้อมใช้งาน — ดูสุขภาพระบบแบบเรียลไทม์

Structured logging

Winston ส่งไปยัง Google Cloud Logging — ค้นหาได้ ตามรอยปัญหาย้อนหลังได้

Docker ทุกส่วน

มีทั้ง stack สำหรับรันในเครื่อง (docker-compose) และการดีพลอยบน Kubernetes

Correlation ID

ติดตามทุกคำขอทั่วทั้งระบบ ระบุปัญหาย้อนหลังได้แม้จะผ่านหลายเซอร์วิส

Asia/Bangkok

ตั้งเป็นค่าเริ่มต้นทั้งระบบ งานรายวันปิดยอดตามเวลาไทย ไม่ใช่ UTC

สิ่งนี้หมายความว่าอย่างไรกับคุณ

ระบบขยายรองรับผู้ใช้มากขึ้นได้โดยไม่ต้องเขียนใหม่ · เพิ่มเซิร์ฟเวอร์เฉพาะส่วนที่มีภาระหนักได้ · และเมื่อเกิดปัญหา ทีมของเราหาสาเหตุได้เร็ว เพราะมี log และ metric ครบ

Naya PMS และ KuiKeng

สถาปัตยกรรมของผลิตภัณฑ์บน LINE

Naya PMS

Multi-tenant พร้อม Row-Level Security ระดับฐานข้อมูล · JWT access token อายุ 1 วัน + refresh token 7 วัน พร้อมการหมุน token · ตรวจลายเซ็น HMAC-SHA256 ทุกข้อความจาก LINE · RabbitMQ เข้าคิวการเชื่อมต่อ Channel Manager (Channex) เพื่อไม่ให้การจองหายหากปลายทางล่ม

KuiKeng

Multi-tenant พร้อม Row-Level Security — หลายชั้นที่ระดับฐานข้อมูลป้องกันข้อมูลรั่วไหลระหว่างร้าน · ระบบทำงานแบบ RAG (ดึงข้อมูลจริงก่อน แล้วจึงเรียบเรียงคำตอบ) พร้อมเกณฑ์ความเกี่ยวข้อง และ ค้นหาด้วยคีย์เวิร์ดเป็นทางสำรอง · จำกัดอัตราคำขอ

ความโปร่งใส

สิ่งที่ยังทำไม่เสร็จ

เราพูดตรง ๆ เพราะทีมเทคนิคจะถามอยู่ดี และถ้าจับได้ว่าเว็บขายเกินจริง ทั้งหน้าจะเสียความน่าเชื่อถือ

อยู่ในแผน (roadmap)ยังไม่เสร็จ

  • API Gateway ส่วนกลาง — ยังไม่มี ปัจจุบันแต่ละเซอร์วิสรับคำขอโดยตรง
  • แยกฐานข้อมูลเป็นของแต่ละ microservice อย่างสมบูรณ์ — วางแผนไว้ ยังไม่เสร็จ
  • การแจ้งเตือนผ่าน SMS และ push บนมือถือ (Naya People) — ปัจจุบันเป็นอีเมล + การแจ้งเตือนในระบบ

คุยกับทีมเทคนิคของเราโดยตรง

เรื่องการดีพลอยบนโครงสร้างพื้นฐานของคุณเอง การเชื่อมต่อกับระบบเดิม หรือคำถามด้านสถาปัตยกรรมใด ๆ