Framework Defined Infrastructure (FdI)

Chokchai Phatharamalai
odds.team
Published in
2 min readOct 16, 2023
Photo by Chris Briggs on Unsplash

ผมได้รู้จักคำนี้จาก CTO ของ Vercel ในงาน QCON ที่ Sans Francisco ที่ผ่านมา เค้าเล่าว่ามันอาจจะเป็นยุคถัดไปของ Infrastructur as Code (IaC)

ก่อนยุค IaC

ปัญหาก่อนยุค IaC คือ การดูแล Infrastructure ของระบบเป็นอะไรที่ช่วยกันทำลำบาก เพราะตอนทำ เรา ssh ไปบนเครื่องแล้วก็ทำสิ่งต่าง ๆ ซึ่งเครื่อง ๆ นั้นมีปัญหาป็นเหมือน global variable ตอนเขียนโปรแกรมเลยคือมันมี state ยั่งยืนยาวมาก แล้วยิ่งมีคนเข้าไปจับหลายคน ก็ยิ่งมีโอกาสเละเทะได้ง่าย เพราะทุกคนที่ไปแก้ไข ไม่รู้ว่า state ของเครื่องนี้มันผ่านคำสั่งอะไรมาบ้าง ผลคือเครื่องส่วนใหญ่เลยแบ่งคนดูแลไปเลย ว่าเครื่องนี้ใครรับผิดชอบ แต่ถ้าคนนั้นออกทีก็วุ่นวายอยู่ดี เพราะไม่รู้ว่าแต่ละคนวางของอะไรไว้ตรงไหน

วิธีแก้ปัญหาคือพยายามกำหนด standard ขึ้นมา ว่าให้วางของให้เหมือน ๆ กัน กับการใช้คำสั่ง history ในการดูว่าเครื่องนี้ผ่านคำสั่งอะไรมา แต่มันก็ยังยากอยู่ดี

ยุค IaC

การ setup เครื่อง (บางครั้งเรียกว่า provision) จะทำโดยการเขียนโค้ด (เช่น พวก file yml) ซึ่งจะเป็น declarative language คือประกาศว่าอยากให้ final state ของเครื่องเป็นอย่างไร แล้วพอสั่งคำสั่ง tool พวกนี้ (เช่น docker-compose หรือ k8s) ก็จะ setup เครื่องให้เป็นไปตามที่เราก็หนดไว้ใน file พอเราเอา file นี้ใส่ git ก็จะเห็นว่าใครแก้อะไรไปบ้าง แล้วใน commit message เค้าแก้เพราะอะไร ถ้าไม่เข้าใจก็ยังพอรู้ว่าต้องไปถามใคร

practice นี้ช่วยให้เราสามารถช่วยกันดูแลเครื่องได้ง่ายขึ้นมาก ไม่ต้องตกเป็นภาระของใครคนใดคนหนึ่ง

ยุค FdI

ไอเดียของ FdI มากจากการที่เค้าสังเกตเห็นว่า พอเราใช้ framework นี้ ก็มักจะมีขั้นตอนการ build และ deploy แบบนี้ โดยเฉพาะ frontend ที่การ deploy มักจะซับซ้อนน้อยกว่า backend เช่น Vue, React, Angular เป็นต้น

Vercel ก็เลยสร้าง service ขั้นมา ที่ทำให้เราแค่ push code แล้วเค้าจะสร้าง compiler มาอ่าน code เรา แล้วเอาไปสร้าง file พวก file yml หรือ config ต่าง ๆ ที่ไป deploy ของบน cloud ให้เลย ถ้าเป็นพวก static file ก็ใส่ CDN ให้ ถ้าเป็นพวก serverless function ก็ไป deploy เป็น lamda บน cloud ให้ ทำ auto scale ให้ ดูแลเรื่อง security กับ observablility ของ server ให้เรียบร้อย เราไม่ต้องเขียนอะไรเพิ่มแล้ว รอจ่ายเงินตาม usage อย่างเดียว

นอกจาก vercel ที่รองรับพวก frontend framework เป็นหลักแล้ว ก็มีเครื่องมืออื่น ๆ ที่รองรับ backend ด้วย เช่น Google’s ServiceWeaver, Encore.dev

แล้วบาง framework ก็สร้างเป็น code ให้เราเขียนตามเค้าหรือใช้ library เค้าแล้วก็จะช่วยเรา deploy ได้ เช่น Nitric framework หรือ Ampt เป็นต้น

ใน session เค้าพูดถึง Deno KV ด้วย แต่ผมไม่เข้าใจว่ามันเกี่ยวกับ FdI ยังไง แหะ ๆ

เป็น trend ใหม่ที่น่าสนใจ ใครได้ลองใช้แล้วเป็นยังไงมาเล่าสู่กันฟังบ้างนะครับ

อ้างอิง

--

--