Internal Developer Platform (IDP) คืออะไร? มันช่วยอะไรเราได้?
บทความนี้เป็นเวอร์ชั่นเก่าแล้ว เวอร์ชั่นที่ถูกปรับปรุงใหม่จะถูกย้ายไปที่ Internal Developer Platform (IDP) คืออะไร? ทำไมบริษัทเทคโนโลยีถึงต้องมี? ครับ
และหลังจากนี้ผมจะเขียนบทความที่ nopnithi.com เป็นหลักครับ
อัพเดทล่าสุด: 3 Feb 2024
ถ้าคุณเป็น developer คุณเคยต้องรอทีม operations เป็นวันหรือสัปดาห์เพื่อให้เค้าเตรียม infrastructure ให้มั้ยครับ? หรือในฐานะทีม operations/infra/DevOps คุณเคยต้องวุ่นอยู่กับการสร้างและปรับแก้ infrastructure หรือ service ให้กับ developer จนไม่ได้ทำงานอื่นที่สำคัญกว่าหรือเปล่า?
ปัญหาทั้งสองอาจแก้ไขได้ด้วย Internal Developer Platform (IDP) ครับ (ไปสร้างปัญหาใหม่แทน 😂)
ก่อนจะเริ่ม…รบกวนกด Like/Follow/Subscribe ให้ผมด้วยนะครับ 🙏
- 💙 Facebook: Nopnithi Tech
- ❤️ YouTube: Nopnithi Tech
- 💙 LinkedIn: Nopnithi (Game) Khaokaew
ยุคของ monolithic application ได้ผ่านไป โลกเปลี่ยนไปสู่ยุคของ distributed system การเปลี่ยนแปลงนี้มีข้อดีต่าง ๆ มากมาย แต่ก็มาพร้อมกับความท้าทายในการจัดการที่ประสิทธิภาพมากขึ้น ซึ่ง internal developer platform (IDP) ก็เป็น tool ตัวหนึ่งที่จะมาช่วยในเรื่องนี้
Internal Developer Platform (IDP) คืออะไร?
Internal Developer Platform (IDP) บางครั้งก็เรียกว่า developer portal จะเรียกอะไรก็ตามมันคือ self-service platform ซึ่งทำหน้าที่เป็นด่านหน้าที่ช่วยลดความซับซ้อนและช่วยเพิ่มความเร็วในกระบวนการพัฒนา application ภายในบริษัท (โดยเฉพาะบริษัทขนาดกลางถึงใหญ่)
แทนที่ developer จะต้องรอทีม operations เตรียม infrastructure สำหรับการพัฒนา application ให้ การมี internal developer platform (IDP) ซึ่งมี interface เดียวครบจบทุกงาน (unified interface) ทำให้ developer สามารถที่จะจัดการกับ software ecosystem ได้ด้วยตัวเอง
อาจจะเป็น database, encryption key, Kubernetes cluster, email service, domain, ML model, CI/CD pipeline หรือแม้แต่ document
ยกตัวอย่างให้เห็นภาพมากขึ้น…
การมี IDP นั้น developer สามารถ login เข้าไป จากนั้นก็เลือกและสร้างสิ่งต่าง ๆ ที่ต้องใช้ใน application ผ่าน GUI ได้ตามต้องการ เช่น อยากได้ Postgres database ขนาด 50 GB บน AWS ก็เลือกผ่านฟอร์มแล้วกด provision ได้เลย ระบบก็จะไปสร้าง repository พร้อม code จากนั้นก็ trigger pipeline เพื่อ provision ขึ้นมา
ลองนึกถึงการเลือกซื้อน้ำที่ตู้เต่าบินก็ได้ครับ มันง่าย มันถูกเตรียมและคิดมาหมดแล้วว่ากาแฟลาเต้เย็นสักแก้วมันมีส่วนผสมของอะไรและเท่าไรบ้าง มันไม่ต้องใช้ความรู้ความเข้าใจอะไรมากเลย
โดย infrastructure หรือ service (ลาเต้เย็น) ที่สร้างขึ้นผ่าน IDP นั้นได้ถูกกำหนดและควบคุม policy หรือ compliance ต่าง ๆ จากส่วนกลางโดยทีม platform engineering แล้ว (เช่น ไม่ควรใส่น้ำแข็งเกิน 10 ก้อนเพราะจะล้นแก้ว)
และอันที่จริง IDP ไม่ได้มีไว้แค่เพื่อให้ developer สร้าง resource เองได้เท่านั้น มันมีไว้เพื่อจัดการกับ resource ให้เป็นระบบในที่เดียว เราสามารถรู้ได้ว่าในหนึ่ง project นั้นประกอบไปด้วยอะไรบ้าง ซึ่งอาจจะรวมถึงเรื่อง monitoring, tracking, report และอื่น ๆ ก็สุดแท้แต่บริษัทจะทำออกมาเลย
ประโยชน์ของ Internal Developer Platform (IDP)
ประสิทธิภาพการทำงานดีขึ้น
- ฝั่งทีม Developer: ช่วยให้ทีม developer ทำงานได้อย่างมีประสิทธิภาพมากขึ้นด้วย unified interface สำหรับ developer ทำให้สามารถโฟกัสไปที่การเขียน code และ deploy application ได้โดยไม่ต้องกังวลเกี่ยวกับ infrastructure แถมไม่ติดคอขวดที่ทีม operations อีกต่อไป
- ฝั่งทีม Operations: ช่วยลด workload ของทีม operations ทำให้มีเวลาไปโฟกัสที่การคิดและกำหนด architecture, standard, policy หรือ compliance สำหรับ infrastructure ซึ่งเป็นเรื่องที่สำคัญกว่า(การ provisioning)
การเริ่มต้นทำงาน (Onboarding) ของสมาชิกใหม่ง่ายขึ้น
การมี internal developer platform (IDP) ช่วยให้สมาชิกหน้าใหม่ในทีม(โดยเฉพาะฝั่ง developer) สามารถเข้าใจและเริ่มต้นทำงานได้เร็วขึ้น เนื่องจากพวกเค้าจะต้องเรียนรู้เพียงแค่ platform เดียวแทนที่จะต้องใช้เครื่องมือหรือเทคโนโลยีหลาย ๆ ตัว
การควบคุม Practices และ Standard
บริษัทสามารถบังคับใช้ practices และ standard ได้ทั่วทั้งองค์กร ทำให้ลดโอกาสที่จะเกิดปัญหาต่าง ๆ ได้ เช่น จัดการ resource utilization ได้ดีขึ้น, คุมค่าใช้จ่ายได้ดีขึ้น และโดยเฉพาะในมุม security เนื่องจาก policy ถูกกำหนดและควบคุมผ่าน platform จากกลุ่มคนที่มีความเข้าใจใน infrastructure จริง ๆ เพียงกลุ่มเดียว
การทำงานร่วมกันที่ดีขึ้น
ด้วยการรวมศูนย์ (centralized) กระบวนการและ tools ในการพัฒนา ช่วยให้การทำงานร่วมกันระหว่างสมาชิกในทีมและต่างทีมดีขึ้น เข้าใจกันง่ายขึ้น เครื่องมือต่าง ๆ มีความสอดคล้องและเข้ากันได้ ช่วยลดปัญหาจุกจิก (โดยเฉพาะการ integrate service ที่ต่างคนต่างทำเข้าด้วยกัน 🫢)
เครื่องมือที่ใช้สร้าง Internal Developer Platform (IDP)
การสร้าง internal developer platform (IDP) ตั้งแต่เริ่มต้นนั้นไม่ practical เท่าไร เราสามารถใช้ tools ที่มีอยู่ช่วยสร้าง IDP ที่ตรงตามความต้องการของบริษัทเราขึ้นมาได้ เช่น
- Backstage สำหรับสร้าง IDP (user interface) สำหรับ developer
- Crossplane สำหรับเป็น IaC tool ที่ใช้ในการสร้าง control plane API ในการจัดการ infrastructure การใช้ Crossplane เราจะได้ความสามารถในการ ทำ reconcile จาก Kubernetes มาช่วยตรวจสอบและจัดการ infrastructure และสามารถ integrate กับ Argo CD เป็น GitOps ด้วย
- GitHub Actions, GitLab, Jenkins, Argo Workflows, Argo CD หรือ Flux เพื่อใช้ในการสร้าง CI/CD pipeline สำหรับ system ต่าง ๆ ซึ่งเป็นหัวใจหลักของ automation รวมทั้ง GitOps
และสำหรับคนที่สนใจศึกษาและลองสร้าง IDP ขึ้นมา แต่ไม่รู้จะเริ่มต้นยังไง สามารถอ่านบทความนี้ได้
บทความนี้เป็นเวอร์ชั่นเก่าแล้ว เวอร์ชั่นที่ถูกปรับปรุงใหม่จะถูกย้ายไปที่ Internal Developer Platform (IDP) คืออะไร? ทำไมบริษัทเทคโนโลยีถึงต้องมี? ครับ
และหลังจากนี้ผมจะเขียนบทความที่ nopnithi.com เป็นหลักครับ