Internal Developer Portal (IDP) เป็นชุดของเครื่องมือที่ถูกพัฒนาขึ้นมาเพื่อช่วยแก้ปัญหาที่พูดถึงข้างต้นนี้ โดยจะประกอบด้วยส่วนหลักๆ คือ
Service Catalog
เมื่อองค์กรมีการใช้ หรือ พัฒนา service ขึ้นมามากขึ้นเรื่อยๆ อาจจะให้สมาชิกในทีม ทั้งที่อยู่ในทีมมานานแล้ว หรือ สมาชิกใหม่ ไม่ทราบได้ว่า
- องค์กรเรามี service อะไรอยู่แล้วบ้าง ที่สามารถนำมาใช้งานได้
- แล้ว service แต่ละอันนี้มี dependency กับ service อื่นๆ อะไรบ้าง
- แต่ละ service มี API อะไรบ้าง request/response หน้าตาเป็นยังไงบ้าง


Software Template
สำหรับองค์กร หรือ ทีมที่มีการขึ้น project ใหม่, สร้าง component หรือ service ใหม่อยู่เรื่อยๆ การขึ้นโครงให้ทุก component follow standard ขององค์กรเป็นเรื่องที่สำคัญมาก ทุกครั้งที่สร้าง component หรือ repository ใหม่ก็มีรายละเอียดมากมาย เช่น
- Language-specific configuration file เช่น package.json, package-lock.json หรือ tsconfig.json ที่จะต้อง setup ให้ใช้ version ของ framework หรือ library ให้เป็นปัจจุบัน
- Framework setup อย่างเช่น React หรือ NestJS API ก็จะมีส่วน boilerplate หรือ setup มาตรฐานที่ต้องการให้ทุก component ทำในรูปแบบเดียวกัน เช่นการ setup logger หรือ healthcheck หรือ graceful shutdown
- Dockerfile โดยการเขียน Dockerfile ให้ปลอดภัย และ สามารถ build ได้อย่างมีประสิทธิภาพก็จำเป็นต้องใช้ประสบการ หรือการเลือก base image ที่เหมาะสมกับงาน หรือ project เป็นต้น
- Deployment template เช่น YAML file สำหรับ service ที่จะ deploy ใน Kubernetes หรือ JSON สำหรับ service ที่จะ deploy ด้วย runtime อื่นๆ เช่น Azure App Service
- CI/CD pipeline ที่มีขั้นตอนในการ build/deploy ตามมาตรฐานของทีม เช่น .github/ci.yml .gitlab-ci.yml สำหรับ GitLab หรือ azure-pipeline.yml สำหรับ Azure DevOps ซึ่ง step ในการ build ก็จะมีรายละเอียดที่ต้องการควบคุมตามมาตรฐาน เช่น run unit test หรือ build ด้วย release profile เป็นต้น run SCA
Files เหล่านี้มีรายละเอียดปลีกย่อยมากมาย ส่วนใหญ่ก็จะถูก copy จาก repository ของ project ที่มีอยู่แล้ว และนำมาแก้ไขต่อ ซึ่งก็อาจจะเกิดความผิดพลาดขึ้นได้ เมื่อมีการแก้ไขต่อกันไป โดยไม่ได้แก้ไขให้ครบถ้วน
Software template ก็จะเป็นการรวบรวม Golden path ที่ทาง platform team (หรือ team) ได้ให้การ approve ว่าหากเริ่มต้นจาก template นี้แล้วจะสามารถนำไปพัฒนาและ deploy ใน production ได้อย่างปลอดภัย

Technical Documentation
Documentation เกี่ยวกับ service เช่น หลักการทำงาน, ขั้นตอนการ setup, FAQ (Frequently Asked Questions) บางครั้งก็ไม่ได้ถูกเขียนขึ้นมาอย่างที่ควรจะเป็น ด้วยสาเหตุต่างๆ เช่น ใช้เวลามากเกินไปในการเขียน หรือ จัดรูปแบบได้ยาก หรือ ต้องมีการหัดใช้งาน tools เพิ่มเติมขึ้นอีก
Integration with other DevOps Tools
IDP ไม่ได้เป็น CI/CD server หรือ Kubernetes cluster หรืออะไรที่มี tools เฉพาะงานอยู่แล้ว แต่ IDP เป็นตัวกลางที่ทำให้ developer สามารถเข้าถึงข้อมูลและบริการที่ tools อื่นๆ ทำได้ดีอยู่แล้ว แต่กระจัดกระจายกันอยู่
สำหรับ Internal Developer Portal ของ Bit Foundry ก็มีคุณสมบัติข้างต้นครบถ้วน และยังมี Integration ที่ใช้งานในองค์กรบ่อย เช่น
- Single Sign On (SSO) กับ Identity Provider เช่น Azure AD (หรือชื่อใหม่ว่า Azure Entra ID)
- Flexible Role-Based Access Control (RBAC)
- CICD pipeline integraiton with GitHub, GitLab, and AzureDevOps
- Kubernetes ทำให้สามารถดูได้ว่า service/component นี้ run อยู่ใน cluster ไหนบ้างและสถานะเป็นยัง นอกจากนี้ยังสามารถดู container console log ได้ด้วย โดยเราสามารถ configure ให้ IDP ของเราสามารถทำงานร่วมกับ Kubernetes ขององค์กรได้ ไม่ว่า Kubernetes cluster นั้นจะอยู่ที่ cloud provider ไหน รวมถึง On-Premise ได้ด้วย โดยที่ไม่ต้องมีการเปิด Firewall เพิ่มเติม

- Azure Application Insight (link to Azure Applicaiton Insight)
หากสนใจสามารถติดต่อได้ที่ info@bitfoundry.co หรือ 080-550-0512