เปลี่ยนมุมมองสถาปัตยกรรมซอฟต์แวร์ เมื่อ AI Agents ทำให้ผมเลือก Vertical Slices
ประสบการณ์จริงจากการทำงานร่วมกับ AI agents ที่เปลี่ยนใจนักพัฒนาจากการใช้ Layered Architecture แบบเดิม หันมาจัดระเบียบโค้ดตามฟีเจอร์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- นักพัฒนาเคยชื่นชอบ Layered Architecture เพราะหาไฟล์ง่ายตามหน้าที่
- การใช้ AI หลายตัวทำงานพร้อมกันทำให้โค้ดกระจัดกระจายและรีวิวได้ยาก
- Vertical Slices ทำให้ AI แต่ละตัวรับผิดชอบฟีเจอร์เบ็ดเสร็จในโฟลเดอร์เดียว
- สถาปัตยกรรมที่ลดการประสานงานช่วยให้ทั้งมนุษย์และ AI ทำงานได้ดีขึ้น
หลายปีที่ผ่านมา ผมมักจะเลือกใช้สถาปัตยกรรมแบบแบ่งชั้นหรือ Layered Architecture เป็นอันดับแรกในการพัฒนาซอฟต์แวร์ โครงสร้างทั่วไปมักจะประกอบด้วย Controllers, Services, Repositories, DTOs และ Models ซึ่งช่วยให้การนำทางในโปรเจกต์ตรงไปตรงมา เพราะถ้าต้องการหา Repository ก็รู้ทันทีว่าต้องไปดูที่ไหน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ทุกอย่างเปลี่ยนไปเมื่อผมเริ่มทำงานร่วมกับ AI agents หลายตัวพร้อมกัน ซึ่งทำให้เป้าหมายในการปรับแต่งโค้ดเปลี่ยนไปโดยสิ้นเชิง ลองจินตนาการว่า Agent ตัวหนึ่งกำลังพัฒนาฟีเจอร์การจัดส่งสินค้า (Shipping) ในขณะที่อีกตัวกำลังพัฒนาเรื่องการชำระเงิน (Billing) ภายใต้สถาปัตยกรรมแบบแบ่งชั้น ทั้งสองตัวจะต้องเข้าไปแก้ไขไฟล์ใน Controllers, Services, Repositories, การทำ Tests และ Dependency Injection ร่วมกัน แม้ว่าพวกมันจะทำงานคนละฟีเจอร์กันก็ตาม ส่งผลให้การใช้งานฟีเจอร์เดียวถูกกระจายฝังตัวอยู่ทั่วทั้งโปรเจกต์ และทำให้กระบวนการ Code Review กลายเป็นเรื่องยากตามไปด้วย
แนวทางที่ให้ผลลัพธ์ดีกว่าคือการจัดระเบียบโค้ดรอบๆ ฟีเจอร์ แทนที่จะยึดตามชั้นหน้าที่ (Vertical Slices) ทำให้ Shipping และ Billing ไม่ใช่แนวคิดที่กระจัดกระจายอยู่ในหลายโฟลเดอร์อีกต่อไป แต่กลายเป็นโครงสร้างที่มองเห็นได้อย่างชัดเจนในโปรเจกต์ โค้ดจะถูกจัดกลุ่มใหม่ดังนี้:
- Features/Shipping/Controllers, Services, Repositories, DTOs
- Features/Billing/Controllers, Services, Repositories, DTOs
ด้วยวิธีนี้ AI แต่ละตัวจะเป็นเจ้าของฟีเจอร์ทั้งหมด ไม่ใช่แค่ไฟล์ไม่กี่ไฟล์ที่กระจายอยู่ทั่วโซลูชัน การตรวจทานการเปลี่ยนแปลงจึงเป็นการเปิดดูโฟลเดอร์ Features/Shipping แทนที่จะต้องตามหาไฟล์ในหลายๆ จุด นอกจากนี้ ขอบเขตความเป็นเจ้าของยังครอบคลุมไปถึงการทดสอบ (Verification) ด้วย หากโค้ดชุดนั้นอยู่ในฟีเจอร์ใด ชุดการทดสอบที่พิสูจน์ว่ามันทำงานได้ก็ควรถูกจัดกลุ่มไว้ที่ฟีเจอร์นั้นเช่นกัน ไม่เช่นนั้นกระบวนการรีวิวยังคงต้องกระโดดไปมาระหว่างหลายชั้นในโปรเจกต์ทดสอบ
แนวคิดเรื่อง Vertical Slices ไม่ได้ถูกออกแบบมาเพื่อรองรับ AI ตั้งแต่แรก แต่ถูกคิดค้นขึ้นมาเพื่อเพิ่มความเหนียวแน่น (Cohesion) ภายในโมดูล การเข้ามาของยุค AI agents เป็นตัวสะท้อนปัญหาเดิมให้เด่นชัดขึ้นอีกครั้ง นั่นคือระบบที่ซับซ้อนย่อมต้องการการประสานงานสูง ไม่ว่าผู้พัฒนาจะเป็นมนุษย์หรือ AI หลักการจึงเหมือนกันเสมอ นั่นคือสถาปัตยกรรมที่ลดภาระการสื่อสารข้ามส่วนได้มากเท่าไหร่ ก็จะยิ่งส่งผลดีต่อประสิทธิภาพโดยรวมมากเท่านั้น
ก่อนหน้านี้ผมเคยสนับสนุนสถาปัตยกรรมแบบ Event-driven ว่าเหมาะกับ AI เพราะช่วยให้พฤติกรรมของระบบสังเกตได้ง่าย ผมมองว่าสถาปัตยกรรมแบบ Vertical Slices นี้ก็ให้ผลลัพธ์ในลักษณะเดียวกัน มันทำให้ความเป็นเจ้าของ (Ownership) สังเกตเห็นได้ทันที คุณรู้ได้ทันทีว่า Agent ตัวไหนดูแลฟีเจอร์อะไร และการทดสอบซ่อนอยู่ตรงไหน
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น