ใส่ใจกับ Backend For Frontend (BFF) ให้มากขึ้น

BFF ในที่นี้ ผมไม่ได้กล่าวถึง Best Friends Forever แต่อย่างใด
แต่ผมกำลังจะพูดถึง Back-end For Front-end

ปรกติแล้ว เวลาเราจะพัฒนา Front-end ต่างๆนั้น ไม่ว่าจะเป็น Client ที่เป็น Web Application , Mobile Application หรือ ระบบอื่นๆ เราจำเป็นจะต้องมี Back-end (หลังบ้าน) ไว้สำหรับ จัดการฐานข้อมูลหรือโครงสร้างต่างๆ ผ่าน Web Service ที่เป็น SOAP หรือ REST ก็แล้วแต่ว่าเราใช้ตัวไหน (ซึ่งแต่ละตัวก็จะมีข้อจำกัดของมัน)

http://philcalcado.com/img/2015-09-back-end-for-front-end-pattern/sc-next-and-mobile.png

แต่พอถึงเวลาเราจะ CRUD (Create , Read , Update ,Delete) พร้อมกับ Feature , Function , Module ที่มีปริมาณมากขึ้น เราอาจจะไม่สามารถใช้ Web Service ชุดเดียวกันได้เสมอไป เช่น

Web ต้องการแค่ Module A
Mobile ต้องการทั้ง Module A และ B

ก็ไม่จำเป็นที่ Web Service จะต้อง Query Module A และ B รอไว้ให้ ฝั่ง Web เลือกแต่อย่างใด เช่นกันกับฝั่ง Mobile ต้องการ Module A และ B จากเดิมที่แยกการ Query ไว้ก็ อาจจะรวมเป็น Query เดี่ยวรวมทั้ง A และ B เพื่อให้ Client ที่เป็น Mobile มา GET / POSTและแน่นอนครับ Mobile และ Web ทั้ง Resource และ Environment ไม่เหมือนกัน อาจจะไปลดทอน Performance และความ Stable ได้ .. จะดีกว่ามั้ย หากเรามี Web Service หรือ Back-end เฉพาะสำหรับ Mobile หรือ Web นั้นๆแยกกัน

http://philcalcado.com/img/2015-09-back-end-for-front-end-pattern/sc-bff-2.png

หากเราพัฒนา BFF สำหรับ Mobile โดยเฉพาะ แน่นอนว่า Client ที่เป็น Mobile นั้นจะได้รับผลประโยชน์อย่างเต็มที่แน่นอน เพราะ ด้วย Resource ต่างๆของ Mobile นั้นค่อนข้างจำกัด หรือ เฉพาะทาง หากมีการพัฒนา Web Service โดยเฉพาะ เพื่อลดทอนเวลา หรือ ปริมาณ การส่งข้อมูลต่างๆอาจจะช่วยเพิ่ม Performance และความ Stable ได้

หากเราพัฒนาและประยุกต์ใช้ BFF ออกมาให้ตรงตามความต้องการก็อาจจะช่วยเพิ่ม Performance และความ Stable ได้ และอำนวยความสะดวกในการเชื่อมต่อกับ Ecosystem หรือ Architecture ที่มีความแตกต่างกันได้สะดวกยิ่งขึ้น

— — — — — — — — — — — — — — — — — — — — -

ขอขอบคุณ

Ref.0 http://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html

Ref.1 (ขอขอบคุณบทความดีๆครับ) http://www.somkiat.cc/backend-for-frontends/

Ref.2 https://medium.com/featured-insights/bff-soundcloud-b37525f1e04

Ref.3 https://alexandreesl.com/2016/03/18/backend-for-frontends-a-microservices-pattern/