บทความนี้จะพาทุกคนไปเจาะลึก กฎเหล็ก 12 ข้อ – รู้จัก 12 Factors App แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างแอปพลิเคชันให้พร้อมใช้งานในระบบ Cloud เพื่อช่วยให้นักพัฒนาสามารถนำไปประยุกต์ใช้ในการออกแบบ และพัฒนาแอปฯบน สถาปัตยกรรม Microservice ที่มีความสามารถในการปรับขนาด และโดดเด่นเรื่องความยืดหยุ่นได้อย่างมีประสิทธิภาพ
สารบัญ
หลักการ 12 ข้อของ 12 Factors App ที่นักพัฒนาควรรู้
1. Codebase ทุกการปรับปรุงแก้ไขโค้ด ต้องทำการ Tracker version เสมอ เพื่อติดตามการแก้ไขในภายหลัง
- ใช้เครื่องมือจัดการเวอร์ชันด้วย Version Control อย่าง Git
- แต่ละแอปฯควรจะมีที่เก็บโค้ดเพียงแห่งเดียว และที่เก็บโค้ดหนึ่งแห่งก็จะถูกใช้โดยแอปเพียงแอปเดียวเท่านั้น ไม่ควรมีความซ้ำซ้อน หรือการใช้งานร่วมกัน
2. Dependencies เอ๊ะ! มันคืออะไร ? เข้าใจง่ายๆ มันคือ → [ไลบรารี, เฟรมเวิร์ก, แพ็คเกจ] สิ่งเหล่านี้ล้วนเป็นการอ้างอิง หรือพึ่งพาซอฟต์แวร์อื่นๆ ในกระบวนการพัฒนาระบบนั้นเอง เราควรประกาศ และแยกอ้างอิงให้มีความชัดเจน
- ใช้เครื่องมือจัดการแพ็คเกจอย่าง Pip, Npm เพื่อเตรียม Environment ในการพัฒนา
- สร้าง Dependencies ในรูปแบบไฟล์ เพื่อรวมรวม Resources สำหรับติดตั้ง Env. ให้ชัดเจน
3. Backing services จัดการกับบริการภายนอกที่แอปพลิเคชันพึ่งพา เช่น ฐานข้อมูล ระบบส่งข้อความ หรือบริการแคช ให้สามารถเชื่อมต่อ และตัดการเชื่อมต่อได้ง่าย เพื่อเพิ่มความยืดหยุ่น การปรับขนาด Scale และการแยกทดสอบเป็นส่วนย่อย
- เป็นการทำให้ Service อื่นๆ สามารถ เข้าถึง Service ต่างๆ ได้ผ่าน URL, HTTPS อย่าง API แทน
หมายเหตุ : อย่าอัด DB ลงในไฟล์แอปพลิเคชันทั้งหมด ถ้าไม่จำเป็น อาทิเช่นพวก SQLite
4. Config ละเว้นการใส่ข้อมูลความลับ หรือข้อมูลการเชื่อมต่อลงในโค้ดต้นฉบับ แต่ควรจัดเก็บไว้ในตัวแปรสภาพแวดล้อมแทน (Environment)
- ข้อมูลเหล่านี้ได้แก่ Username&Password ในการเชื่อมต่อ Service ต่างๆ
5. Build > Release > Run แบ่งขั้นตอนการสร้าง และการดำเนินการ..อย่างเคร่งครัด
6. Stateless Process กระบวนการ (Process) ที่ไม่เก็บข้อมูลสภาวะ (State) ใดๆ ไว้ในตัวเอง
- ไม่เก็บข้อมูลในตัวเอง – มีความสามารถในการขยายขนาด – ความยืดหยุ่น
7. Port Binding กำหนด Port ปลายเปิดเฉพาะ Service ที่จำเป็นต้องใช้งาน เพื่อเปิดให้ปลายทาง Connect
- “ช่วยให้แอปพลิเคชันสามารถสื่อสารกับเครือข่ายภายนอกได้อย่างถูกต้อง และปลอดภัย”
8. Concurrency การทำงานพร้อมกัน คือ การจัดการหลายงาน หรือหลายกระบวนการพร้อมกัน ในช่วงเวลาเดียวกัน ซึ่งเป็นการจัดการ Workload .. สลับกันทำงานอย่างรวดเร็ว ซึ่งทำให้ดูเหมือนว่าทำงานพร้อมกันได้อย่างมีประสิทธิภาพ
- ประมวลผลแบบมัลติเธรด – จัดการคำขอหลายรายการ – จัดการหลายงาน
9. Disposability ออกแบบแอปพลิเคชันให้ เริ่มต้น-หยุด ทำงานได้อย่างรวดเร็วและปลอดภัย ช่วยเพิ่มความยืดหยุ่นในการจัดการระบบ
10. Dev/prod parity เน้นทำให้สภาพแวดล้อมในการพัฒนา (Development), การทดสอบ (Staging) และการผลิต (Production) มีความคล้ายคลึงกันมากที่สุด – จะได้ไม่พังเวลา Run
“Docker ตอบโจทย์เรื่องการจัดเตรียม Environment”
11. Logs สั่ง Print Logs ออกมาทางหน้าจอเลยย ไม่ต้องไล่หาใน Files ให้ยุ่งยาก หรือเขียนกวาด Logs ทุกอย่างไปจัดเก็บไว้ที่แหล่งๆ เดียว
12. Admin processes ข้อมูลเกี่ยวกับ User Admin ไม่ควรไปรวมอยู่ในโค้ดระบบ แยกจากแอปพลิเคชันหลักให้เรียบร้อย
บทสรุป
หลักการ 12 Factors เป็นเสาหลักสำคัญในการพัฒนาแอปฯบน Microservice ให้ประสบความสำเร็จ ช่วยให้นักพัฒนาสร้างระบบที่ยืดหยุ่น ปรับขนาดได้ง่าย และบำรุงรักษาได้อย่างสะดวก นำไปสู่การลดต้นทุน และเพิ่มประสิทธิภาพในการดำเนินงานในยุค Cloud Networking