
หลาย ๆ คนน่าจะเคยใช้งาน Lovable.dev ไม่มากก็น้อย
โดยเริ่มต้นจะใช้ชื่อว่า GPT Engineer นั่นเอง
ได้เขียนการ migrate ระบบจากเดิมที่ใช้งาน Next.js มาเป็น Tanstack Start
และย้าย host จาก vercel มาเป็นของตัวเอง
มาดูแนวคิดและแนวทางของการ migrate ครั้งนี้กันว่ามีอะไรที่น่าสนใจบ้าง ?
เริ่มจาก pain point หรือปัญหาต่าง ๆ ที่เจอ
ถ้าไม่มีปัญหา หรือ ความเจ็บปวดใด ๆ ในการทำงานก็คงไม่เปลี่ยนแปลง
หรือเราอยากเจ็บปวด เลยทำการเปลี่ยนแปลง !!
ปัญหาแรกคือ เรื่องของ Developer Experience (DX) ที่ไม่ดี
เนื่องจาก code ที่พัฒนาด้วย Next.js เริ่มโตขึ้นเรื่อย ๆ (850K) แล้ว
ส่งผลให้เวลาในการ build และ startup time ของ app (70 วินาที)
และ memory ที่ใช้งานสูงขึ้นเรื่อย ๆ (8GB)
ปัญหาที่สองคือ code หรือระบบที่ถูกสร้างจาก Loveable นั้น
จะ run อยู่บน TanStack Start
แต่ตัว website ต่าง ๆ ของ Lovable เองกลับพัฒนาด้วย Next.js
ซึ่งทำให้เกิดปัญหาในการทำงาน
และขัดแย้งกับ Eating your own dog food ของบริษัทอีก
รวมทั้งภายในทีมที่ใช้งาน Next.js นั้น มีการใช้งาน AI Agent เพื่อพัฒนาระบบเยอะมาก ๆ
แต่ด้วยความซับซ้อนของระบบ และขนาด standard ที่ดี
ทั้งโครงสร้างของ Next.js ที่เปลี่ยนไปเช่น Server component และ Client component
ส่งผลให้การทำงานมีปัญหาเรื่อง hallucination และคุณภาพที่ต่ำ
ดังนั้นจึงต้องการวิธีการแก้ไข นั่นคือการ Migrate ระบบไปยัง TanStack Start นั่นเอง
ซึ่งการ migrate จะทำแบบค่อยเป็นค่อยไป คือ route-by-route
มีการสร้าง proxy ไว้หน้าทั้งระบบเก่าและระบบใหม่ เพื่อใช้ในการ route traffic นั่นเอง
เพื่อให้ง่ายต่อการ migrate และสามารถ monitoring หรือ กำหนดแผนของการ migrate ได้
หรือจะทำการ rollback ได้สะดวกขึ้น
ซึ่งใช้รูปแบบที่เรียกว่า parallel run

และพยายามแยก code ออกจาก framework ให้ได้มากที่สุด
ซึ่งจะเรียกว่า shared code นั่นเอง หรือ framework-agnostic shared layer
ในส่วนของ code ต่าง ๆ ที่แยกและเขียนใหม่ จะใช้ AI Agent เป็นหลัก
ซึ่ง code ไม่เยอะ context ไม่เยอะ ทำให้การทำงานของ AI Agent สร้าง code ได้ดีขึ้นมาก
หลังจากการย้ายมา TanStack Start พบว่า DX ดีขึ้น
Start up time ใช้เวลาประมาณ 10 วินาที
หน่วยความจำที่ใช้งานเหลือเพียง 1.5 GB
ส่วนการ build ก็ลดลงมาเหลือ 6-9 นาที
แต่ส่วนของการย้าย host จาก Vercel มาดูแลเองนั้น
ทีมก็ต้องมาบริหารจัดการเองมากยิ่งขึ้น
มันก็คือปัญหาใหม่ที่เกิดขึ้นมานั่นเอง
แต่ทีมก็พร้อมที่จะรับมันมาดูแลและจัดการเองตามเป้าหมายของบริษัท