encoding/json/v2 ใน Go 1.27 — ยังไม่ควร migrate แบบยก repo
Go 1.27 เพิ่ม encoding/json/v2 พร้อม semantics ที่แก้ pain point เก่า แต่พฤติกรรมบางอย่างต่างจาก v1 migration ที่ดีควรเริ่มจาก boundary ใหม่ ไม่ใช่ search-and-replace serializer กลางระบบ
ถ้าอ่านแค่พาดหัว เรื่องนี้ตอบง่ายเกินไป ลองช้าลงแล้วดูผลที่ตามมาอีกหนึ่งชั้น Go 1.27 เพิ่ม encoding/json/v2 พร้อม semantics ที่แก้ pain point เก่า แต่พฤติกรรมบางอย่างต่างจาก v1 จุดที่ต้องระวังคือ migration ที่ดีควรเริ่มจาก boundary ใหม่ ไม่ใช่ search-and-replace serializer กลางระบบ
จุดนี้ควรเริ่มจากการลองในขอบเขตเล็ก ไม่ใช่การถก encoding/json/v2 ใน Go 1.27 แบบนามธรรม
การลอง “encoding/json/v2 ใน Go 1.27” ควรมีเวลาเริ่ม–จบ เก็บสภาพเดิมไว้เทียบ และเขียนทางถอยก่อนลงมือ ขอบเขตแบบนี้ช่วยให้ตอบได้ว่าผลที่เห็นมาจากสิ่งที่เปลี่ยนจริง
หลักฐานสำหรับตัดสินใจเรื่อง encoding/json/v2 ใน Go 1.27 ควรเป็น diff ที่รีวิวได้ test ที่จับ behavior เดิม และตัวเลขก่อน–หลังจาก workload เดียวกัน
## อ่านให้พ้นพาดหัว
รายละเอียดของ “encoding/json/v2 ใน Go 1.27” ควรตรวจกลับไปที่ Go 1.27 release โดยตรง โดยเฉพาะถ้อยคำ สเปก และขอบเขตที่ประกาศไว้ ส่วนข้อจำกัดของระบบ งบ และความเสี่ยงที่รับได้ยังเป็นคำถามของคนใช้งาน
ผลของ “encoding/json/v2 ใน Go 1.27” ไม่ได้หยุดที่ syntax หรือเลขเวอร์ชัน แต่วิ่งต่อไปถึง dependency, CI, observability และคนที่ต้องรับช่วงระบบในคืนที่มันมีปัญหา
พอมีผลจากการลอง encoding/json/v2 ใน Go 1.27 แล้ว trade-off จะชัดกว่าตอนอ่านประกาศ
ในกรณีของ “encoding/json/v2 ใน Go 1.27” ความเป็นไปได้กับความพร้อมใช้งานเป็นคนละเรื่องกัน ของใหม่อาจน่าสนใจและยังไม่เหมาะกับระบบของเราในวันนี้ได้พร้อมกัน
จุดชั่งใจของเรื่องนี้คือการได้ความสามารถใหม่โดยไม่สร้าง migration surface ใหญ่เกินประโยชน์ ถ้า ทำ golden tests จาก payload production แล้วทดลอง v2 เฉพาะ service ใหม่ก่อน ทำแยกเป็นขอบเขตเล็กไม่ได้ นั่นเป็นสัญญาณว่าควรออกแบบ boundary ก่อนอัปเกรด
## ก่อนตัดสินใจ
หลังทดลอง encoding/json/v2 ใน Go 1.27 เราควรตอบได้ว่าปัญหาเดิมดีขึ้นหรือไม่ ภาระใหม่คืออะไร และถ้าขยายผลแล้วใครจะดูแล ถ้ายังตอบไม่ได้ การหยุดไว้ก่อนก็เป็นผลลัพธ์ที่ดี