กลับไปหน้า Career

WannSystem v.2

การ Rewrite ระบบจาก Single-developer ไปสู่ระบบที่รองรับการทำงานเป็นทีม (อยู่ระหว่างพัฒนา) รับผิดชอบโครงสร้างโปรเจคและฝั่ง Frontend โดยเน้นเรื่อง Permission, Migration จาก v.1 และความถูกต้องของข้อมูลในระดับองค์กร

NextJSTypeScriptTailwindShadcnNestJSSocketIoMssqlSAP

ภาพรวมโปรเจค

  • พัฒนาระบบ Internal Business Support เวอร์ชันใหม่ที่รองรับการทำงานร่วมกันเป็นทีม
  • ปรับเปลี่ยนสถาปัตยกรรมซอฟต์แวร์มาเป็น TypeScript ทั้งระบบ เพื่อสร้างมาตรฐานการรับส่งข้อมูลผ่าน API ให้แม่นยำ
  • สร้างระบบพื้นฐานใหม่ทั้งหมด (User, Department, Position, Permissions) เพื่อความยืดหยุ่นในการขยายตัว
  • ออกแบบให้ครอบคลุมทุก Module ของ v.1 (76 users, 5 กลุ่มงาน) และขยายเพิ่มระบบจัดการคลังวัตถุดิบ RM/PKG รวมเป็น 7 กลุ่มงาน
  • เพิ่มระบบ Scan QR Code สำหรับตัดสต็อก RM/PKG เพื่อลดการคีย์ข้อมูลซ้ำซ้อนใน SAP
  • เมื่อพัฒนาครบทุก Module แล้ว v.1 จะถูกปลดระวางและโอนผู้ใช้งานทั้งหมดมายัง v.2

บทบาทและความรับผิดชอบ

  • รับผิดชอบการออกแบบโครงสร้างโปรเจค (Project Structure) และการพัฒนาฝั่ง Frontend ทั้งหมด
  • ออกแบบและพัฒนาระบบ User Permission ที่ละเอียดระดับหน้าจอและระดับการกระทำ (CRUD)
  • พัฒนาระบบแจ้งเตือนที่ยืดหยุ่น โดยสามารถตั้งค่าเงื่อนไขผู้ส่ง-ผู้รับได้ตามความต้องการของแต่ละแผนก
  • ประสานงานร่วมกับ Backend Developer ในการกำหนด Type และ Interface ของ API ด้วย TypeScript เพื่อลดความผิดพลาดในการเชื่อมต่อข้อมูล
  • ตั้งค่า CI/CD Pipeline ด้วย GitHub Actions เพื่อ Auto Deploy บน Windows Server และใช้ Vercel สำหรับ Public Test

ความเป็นมา

  • เมื่อองค์กรมีความต้องการด้านซอฟต์แวร์มากขึ้น จึงได้มีการจัดตั้งทีมพัฒนา โดยมุ่งเน้นการเปลี่ยนผ่านจากระบบเดิมที่เป็น Single-developer project ไปสู่ระบบที่รองรับมาตรฐานการพัฒนาแบบทีม
  • ตัดสินใจทำเว็บขึ้นมาใหม่ (Rewrite) แทนการต่อเติมจากเวอร์ชันเดิม เพื่อวางรากฐานโครงสร้างข้อมูลให้แข็งแรงและทันสมัยมากขึ้น
  • ให้ความสำคัญกับความถูกต้องของข้อมูล (Data Integrity) และการตรวจสอบย้อนหลัง (Audit Trail) เพื่อใช้ควบคุมการทำงานในระดับองค์กร

ปัญหาที่พบ

  • การเปลี่ยนผ่านจากระบบ v.1 ไปยัง v.2 (Migration Gap) ทำให้เกิดความท้าทายในการรักษาความต่อเนื่องของการทำงานของผู้ใช้งานเดิม
  • ความต้องการระบบที่มีความปลอดภัยสูงและตรวจสอบได้ ทำให้ต้องจัดการโครงสร้างข้อมูลที่ซับซ้อนขึ้น
  • การทำงานร่วมกันเป็นทีมครั้งแรกในโปรเจคนี้ ทำให้ต้องกำหนดมาตรฐานการโค้ดให้สอดคล้องกัน

วิธีคิดและการแก้ไข

  • เราใช้การเปลี่ยนผ่านแบบค่อยเป็นค่อยไป โดยพัฒนาฟีเจอร์ใน v.2 ให้ครอบคลุมการคีย์ข้อมูลพื้นฐานเท่ากับ v.1 ก่อนเป็นลำดับแรก
  • ทำระบบ Seamless Redirect โดยนำเมนูใหม่ๆ ไปแปะไว้ที่ v.1 แล้วส่งผู้ใช้งานมายัง v.2 เพื่อลดความสับสนและให้ผู้ใช้ค่อยๆ ปรับตัว
  • นำระบบ Database Transactions มาใช้เพื่อป้องกันข้อมูลผิดพลาด (Rollback เมื่อเกิดปัญหา) และจัดทำ Action Logs อย่างละเอียดเพื่อความโปร่งใส
  • ใช้ TypeScript เป็นตัวกำหนดมาตรฐานในการทำงานร่วมกับทีม เพื่อให้การส่งมอบงานระหว่าง Frontend และ Backend เป็นไปอย่างราบรื่น