Kong API Gateway มีข้อดีอย่างไร? ทำไมต้องใช้ Kong?

https://konghq.com/about-kong-inc

เนื่องจากปัจจุบันผมเปลี่ยนสายงานจาก Dev มาทำด้าน (Solution) Architect ทำให้ผมได้ศึกษา Tools หลายอย่างในการนำมาช่วยพัฒนา Software เป็นที่มาที่ทำให้เกิดเป็นบทความนี้

สวัสดีครับวันนี้ผมอยากพาทุกท่านมาทำความรู้จักกับ API Gateway ค่ายหนึ่ง ที่ทำให้เราสามารถจัดการกับ Application Program Interface หรือ เรียกสั้น ๆ กันว่า API โดยเฉพาะ ถ้าหากในอนาคตเรามีการ Design ระบบเป็นรูปแบบ Microservices จะทำให้เราต้องคอยมานั่งจัดการเรื่อง จำนวน API ของ Services ต่าง ๆ มากมาย วันนี้ผมเลยจะขอแนะนำ Kong API Gateway เจ้าลิงร่างยักษ์ที่ไต่ชาร์ตดังอย่าง Gartner มาอย่างต่อเนื่องในช่วงเวลาไม่กี่ปีที่ผ่านมา นั่นเป็นเพราะ Kong มีจุดเด่นในเรื่องการใช้ Spec ที่ต่ำ แต่ใช้งานได้เร็วแรง รวมทั้งยังมี Feature ที่ครบถ้วนตอบโจทย์ผู้ใช้งานสุด ๆ เรียกได้ว่าเป็น Tools ที่มีความมินิมอล แต่ประสิทธิภาพไม่ธรรมดาเลย แค่นี้ก็ทำให้ตกหลุมรักได้ไม่ยากละครับ😆

เรามารู้จัก Kong ตัวนี้กันซักหน่อยดีกว่า

Kong เป็น API Gateway และ API Management Tools เรียกว่าเป็น Full-Lifecycle Service Management เลยทีเดียว โดยทำหน้าที่เป็นตัวกลางในการสื่อสารระหว่าง Server ต้นทาง และ API-Application ปลายทาง ซึ่งเราสามารถใส่ Plugins ต่าง ๆ เพื่อเพิ่มความสามารถให้แก่ Kong ได้ และด้วยความที่เป็น Tools แบบ Open-Source ทำให้มี Community ที่มาช่วยเขียน Plugins ต่าง ๆ มากมาย ให้เราเลือกมาใช้งานกันได้ โดยไม่ต้องเขียนเองเลยครับ

แล้ว Kong ทำงานอย่างไร

ถ้าเราเจาะลึกลงไปจะพบว่า Kong มีการแยกระดับการทำงานในการ Forward Request ไปให้กับปลายและส่วนที่เปรียบเสมือนสมองเก็บ Configuration ต่าง ๆ ไว้ โดยมี 2 องค์ประกอบในการ Set-up ให้สามารถใช้งานได้นั่นก็คือ

  1. Kong Server เป็น Http Server ที่สร้างต่อยอดจาก Nginx ทำหน้าที่ในการจัดการ Reverse Proxy ไปยัง Service ต่าง ๆ ที่เรา Config ไว้ หรือก็ตัวที่คอยส่ง Request ไปยัง API-Application ของเรานั่นแหละครับ
  2. Kong Datastore ทำหน้าที่ในการจัดเก็บ Kong Configuration ด้วย Third-Party เช่น PostgreSQL หรือแบบ DB-less ด้วย JSON หรือ YAML Files

โดยมีตัวช่วยอย่าง Kong Admin API ทำหน้าที่ในการจัดการต่าง ๆ เช่น Service, Route, Plugins และการ Configuration ทั้งหมด แล้วส่งไปไว้ที่ Datastore อีกทีนึงครับ

Plugins

หนึ่งในองค์ประกอบหลักของ Kong คือระบบ Plugins ซึ่งเป็นส่วนเพิ่มฟังค์ชั่นให้กับ API ให้มีความสามารถที่มากขึ้น โดย Plugins เหล่านี้อาจถูกพัฒนามาจาก Kong Inc. หรือ Community ก็ได้ เช่น

  • Authentication ไว้กำหนดสิทธิการเข้าถึง Backend Server หากใครจะเข้าใช้งาน Application ต้องได้รับอนุญาต รวมถึงมี Key และ Token ที่ถูกต้อง โดยสามารถกำหนดตามความต้องการได้ เช่น Service-A ต้องผ่าน Basic AUTH, Service-B รองรับ JWT เท่านั้น ตัวอย่าง Plugins authentication ที่มี เช่น Basic Auth, apikey, JWT และ OAuth
  • Traffic control มีหน้าที่จัดการ In-Bound, Out-Bound ของ API Traffic
  • Analytics สำหรับตรวจสอบ Traffic การเข้าใช้งาน, Inspect, Monitor และ Visualize
  • Transformation เพิ่ม หรือ แก้ไข ส่วนของ Request/Response ก่อนจะไปถึง Service หรือหลังออก Service
  • Logging ปลั๊กอินที่สำคัญอีกตัวไว้ทำหน้าที่ส่ง Logs ไปยัง Third-Party ต่าง ๆ

เนื่องจากผมทำ Dev Backend มาก่อนก็จะเห็นภาพในส่วนนี้ชัดเจน ที่ในแต่ละโปรเจคจะมีโค้ดหลายร้อยบรรทัดที่ Dev เขียนมาเพื่อจัดการ Authentication, Traffic และ Logs ซึ่งแน่นอนว่าบริษัทนึงก็ไม่ได้มีเพียง Application เดียว จะมีการอัพเดทที ก็อาจจะต้องไปทำการแก้ในหลายจุด ซึ่ง Kong จะช่วยเข้ามาแก้ปัญหาเหล่านี้ และ Dev ก็จะได้ไปโฟกัสในการเขียน Logic ได้อย่างเต็มที่

Deployment Options

Clustering

ท่าพื้นฐานที่สามารถทำได้เลยคือ การ Deploy Kong หลาย ๆ node ต่อกับ Database ตัวเดียวกัน รวมกันเป็นหนึ่ง Cluster เป็นท่าง่าย ๆ ที่มีความยืดหยุ่นสูง และเหมาะในการทำ Automation กับ Kong อีกด้วยครับ นอกจากนี้ยังช่วยในเรื่อง Traffic และ แก้ปัญหาในกรณีที่มี Node ใด Node นึงล่มได้ด้วยครับ

Hybrid Mode Clustering

โดยปกติ Kong จะต้องคอยพึ่งพา Datastore ในการเก็บ Configuration แต่ไม่เสมอไป Kong ยังสามารถทำเป็น Hybrid Mode โดยการแบ่งการทำงานเป็นสองส่วน ก็คือ Control Plane (CP) ใช้รูปแบบการเก็บข้อมูลแบบมี DB (DM Mode) และ Data Plane (DP)

โดยให้มี CP Node ที่มี Admin API เป็นตัวที่อัพเดท Configuration ลงใน Datastore และมี DP Nodes ที่ทำงานในการรับ Requests แล้วจึงเรียก Configuration จาก CP Node ซึ่งใช้รูปแบบการเก็บข้อมูลแบบไม่มี DB (DB-less Mode) ทำให้ได้ประโยชน์ในการลดการใช้งาน Datastore และการจัดการ Kong ทั้งหมดก็ทำได้ง่ายขึ้นด้วย

ทำไมต้อง Kong Enterprise และใครควรใช้ Kong แบบ Enterprise?

Kong Enterprise เหมาะกับองค์กรที่มีการใช้งาน Cloud ในรูปแบบ Multi-Cloud และ Hybrid-Cloud รวมถึงองค์กรที่มี Application เป็นจำนวนมาก ตั้งแต่ 20-30 ตัวขึ้นไป การนำ Kong Enterprise ไปใช้งาน จะช่วยในเรื่องการจัดการ API ที่สะดวกด้วย Tools ในการสนับสนุนต่าง ๆ มากมาย และนอกจากนี้ยังได้รับการ Support อย่างเต็มที่ และได้แนวทางในการวาง Design ที่ดีที่สุดจากผู้พัฒนา Kong รวมถึง Best Practice จากเคสขององค์กรใหญ่ ๆ ที่เป็นลูกค้า Kong โดย Kong Version Enterprise เราจะได้ใช้งาน Kong ในแบบ Full Function ดังนี้

  • Plugin Enterprise โดยจะเป็น Function ที่ Advance ขึ้น ซึ่งบางตัวก็มีความจำเป็นกับงานเมื่อเป็นองค์กรใหญ่ ๆ ครับ
  • Kong Manager คือ GUI สำหรับ Admin API ในการ Configuration
  • Developer Portal คือ Platform ที่ให้ Developer เข้ามาดู Spec ของ API เปรียบเสมือนหน้าเมนูในการเข้าใช้งาน API ของเรานั่นเองครับ
  • Vitals คือ Dashboard ในการ Monitor และ Visualize API ของเราในติดตามดูการทำงานของ Cluster และ Request ที่เข้ามา กันแบบ Real-Time
  • RBAC สำหรับกำหนดสิทธิการเข้าใช้งานแต่ละ Workspace ใน Kong Manager

ตารางเปรียบเทียบ Kong Community (Open-Source) และ Kong Enterprise

https://docs.konghq.com/gateway/latest/#features

ก็จบเรียบร้อยกับการทำความรู้จักกับ Kong API Gateway หวังเป็นอย่างยิ่งว่าบทความนี้จะเป็นประโยชน์กับทุกท่าน แล้วพบกันใหม่ในบทความหน้าครับ

Cloud HM ช่วยอะไรเรื่อง Kong API Gateway ได้?

Cloud HM เป็น Consulting Partner อย่างเป็นทางการกับ Kong เรามีทีม Engineer ที่เชี่ยวชาญพร้อมที่ ออกแบบ Architecture, Implement และให้บริการ Managed Service ให้แก่ลูกค้าสำหรับทั้ง Kong Version Community Edition (Opensource) และ Enterprise Edition สำหรับท่านที่สนใจบริการ Kong ของ Cloud HM สามารถติดต่อเราได้ผ่านช่องทางนี้ครับ

— Cloud HM