ข้ามไปยังเนื้อหาหลัก
Clinford Jordano Valencia
โปรเจกต์ทั้งหมด
แพลตฟอร์มเว็บมือถือ

โฟลว์ที่ขับเคลื่อนด้วยสคีมาแบบ config as code

แพลตฟอร์ม UI ที่ขับเคลื่อนด้วยคอนฟิก พร้อม config-as-code บน Git ทำให้การเปลี่ยนกฎออกได้ในไม่กี่ชั่วโมงโดยไม่ต้องดีพลอยฟรอนต์เอนด์

เทคโนโลยี
TypeScript · jsonform · Git · CI/CD · Schema validation

ปัญหา

โฟลว์สำหรับหลายตลาดหมายถึงโค้ดซ้ำซ้อนและตั๋วงานวิศวกรรมทุกครั้งที่ทีมผลิตภัณฑ์หรือฝ่ายกำกับดูแลอยากเปลี่ยนกฎของภูมิภาค

แนวทาง

  • เรนเดอร์ฟอร์มจากสคีมา UI อ่านคอนฟิก JSON หรือ YAML ผ่าน jsonform สคีมาสร้างฟิลด์และกฎการตรวจสอบ ส่วนแอ็กชันแบบกำหนดเอง เช่น การเริ่มบริดจ์เนทีฟ ยังอยู่ในโค้ด
  • หนึ่งขั้นตอน ผลลัพธ์ต่างกัน คอนฟิกกำหนดว่าขั้นตอนหนึ่งทำอะไรสำหรับแต่ละตลาดและแพลตฟอร์ม หากรองรับความสามารถเนทีฟ ขั้นตอนจะแสดงคำแนะนำและปุ่มสแกน มิฉะนั้นจะแสดงฟิลด์ฟอร์มปกติและปุ่มดำเนินการต่อ ทีมผลิตภัณฑ์เปลี่ยนสิ่งนี้ในคอนฟิก ไม่ใช่ในโค้ด
  • Config as code การเปลี่ยนแปลงส่งผ่าน Git ทุกการเปลี่ยนแปลงเปิด pull request อัตโนมัติและรัน CI พร้อมการตรวจสคีมาอย่างเข้มงวดที่หนุนด้วยชนิดข้อมูล TypeScript คอนฟิกที่ผิดรูปจึงล้มก่อนถึงโปรดักชัน

สองการตัดสินใจที่ควรอธิบาย

jsonform สำหรับเรนเดอร์ โค้ดสำหรับแอ็กชัน UI ที่ขับเคลื่อนด้วยเซิร์ฟเวอร์ทั้งหมดและรันตรรกะใดก็ได้ที่ส่งมาจากเซิร์ฟเวอร์ เสี่ยงต่อการรันโค้ดระยะไกลและปัญหาด้านประสิทธิภาพ การเรนเดอร์ที่ขับเคลื่อนด้วยข้อมูลโดยผูกแอ็กชันกับ handler ที่คอมไพล์ไว้ล่วงหน้ารักษาความยืดหยุ่นไว้โดยไม่มีความเสี่ยงนั้น

Git แทนฟอร์มแอดมิน การแก้ไขที่ง่ายแต่ไม่มีการกำกับดูแลทำให้โฟลว์โปรดักชันพัง Pull request การตรวจชนิดข้อมูล และ CI ทำให้ทุกการเปลี่ยนแปลงตรวจสอบย้อนหลังได้ มีการรีวิว และย้อนกลับได้ง่าย

ผลลัพธ์

การปล่อยคอนฟิกไม่ต้องพึ่งการดีพลอยฟรอนต์เอนด์อีกต่อไป การอัปเดตหลายตลาดจึงลดจากหลายสัปดาห์เหลือไม่กี่ชั่วโมง และโค้ดซ้ำซ้อนตามภูมิภาคก็หยุดเพิ่มขึ้น