จากบทความเรื่อง Scaling productivity on microservices at Lyft (Part 2): Optimizing for fast local development
ทำการอธิบายถึงการเพิ่ม productivity ของการพัฒนาระบบของ Lyft
ซึ่งมีโครงสร้างของระบบตามแนวคิด Microservicesว่าทำอย่างไร
จึงจะช่วยให้ developer experience ดีขึ้น
โดยสามารถทำงานได้บนเครื่อง local หรือเครื่องนักพัฒนาแต่ละคนให้ได้มากที่สุด
มาดูกันว่าทางทีมของ Lift ทำอย่างไรกันบ้าง ?

เริ่มที่ขั้นตอนการพัฒนาจะประกอบด้วย 2 ส่วนคือ

  • Inner dev loop คือการแก้ไขและ run test บนเครื่อง local ของนักพัฒนา
  • Outer dev loop คือ CI/CD process นั่นเอง ซึ่งอยู่ในอีกระบบหนึ่ง จะทำงานเมื่อตรวจสอบการเปลี่ยนแปลงใน version control ที่กำหนดไว้

แสดงดังรูป

โดยสิ่งที่ขาดหายไปใน Inner Dev Loop คือ
การทำให้เหมือนหรือคล้าย Outer Dev Loop นั่นคือ
การมีเรื่องของ CI/CD process นั่นเอง
ถ้าสามารถทำได้บนเครื่อง local ของนักพัฒนาก่อน
น่าจะช่วยลดเวลาของการตรวจสอบจากการเปลี่ยนแปลงต่าง ๆ ได้ดี

โดยการ run บน local นั้น ทางทีมไม่ได้ใช้งาน Container เช่น Docker

เพราะว่ามีปัญหามากมาย
รวมทั้งกินทรัพยากรมากอีกด้วย
ดังนั้นจึงทำการติดตั้งแบบปกติบนเครื่องไปเลย
โดยใช้เครื่องมือต่าง ๆ มาช่วยจัดการ environment หรือ virtual environment เช่น

ที่สำคัญจะ run เพียง service เดียวเท่านั้น
เพื่อลดการใช้ทรัพยากรรวมทั้งง่ายต่อการใช้งานและทำความเข้าใจ

ขั้นตอนของการ run service เป็นดังนี้

  • ทำการตรวจสอบ environment ว่ามี software และ configuration ตามที่กำหนดไว้หรือไม่
  • ทำการสร้าง virtual environment ขึ้นมา
  • ทำการ start data store หรือ database ขึ้นมา
  • ทำการ start proxy app ขึ้นใช้สำหรับจัดการการเรียกข้อมูลจาก service อื่น ๆ ทำให้ง่ายต่อการ mock นั่นเอง
  • ทำการ initial ข้อมูลใน database จาก script ที่สร้างไว้
  • สุดก็ทำการ run server ขึ้นมา เพื่อทำการมดสอบหรือใช้งานต่อไป

โดยที่ Proxy app แสดงการทำงานดังรูป

โดยรวมแล้วเป็นแนวคิดที่น่าสนใจ
น่าลองนำมาประยุกต์ใช้งานเหมือนกัน