API Gateway: ใครดีกว่าใคร ?

Thanakrit Choutkhajung
E-Commerce Solution
3 min readJan 27, 2020

Hello Medium World…

API Gateway คืออะไร ?

จากบทความข้างต้นคงอธิบายได้อย่างครบถ้วน แต่ถ้าจะกล่าวง่ายๆถึง API Gateway ก็เปรียบเสมือน รปภ. หน้าหมู่บ้านที่คอยตรวจสอบคนที่เข้าหมู่บ้านพร้อมบอกทางไปยังบ้านที่ต้องการจะไปหา

API Gateway ก็เช่นเดียวกันมีหน้าที่ตรวจสอบ Request ที่จะเข้ามาว่าควรจะส่งต่อไปให้ Service ไหน

ผมได้รับโจทย์ให้ Research เกี่ยวกับ API Gateway เพื่อจะนำมาใช้กับโปรเจคที่ใกล้จะ Production ของบริษัท และระบบที่จะข้ึนก็เป็นระบบที่จะมี 3rd Party เข้ามาใช้งาน ทำให้จะต้องมีการจำกัดการเข้าถึง หรือแบ่งการเข้าถึง Service เพราะตัวระบบนั้นมี Service แยกกันอยู่หลายตัว หวยเลยออกให้เริ่มหาตัวช่วยเพื่อลดเวลาในการ Implement ส่วนนี้ออกไป โดยการหา Opensource API Gateway

โจทย์หลักๆที่ระบบต้องการคือ

Performance

  1. ระบบมี Service แยกออก 5 Services (ปัจจุบัน) อนาคตเพิ่มอีก +5 รวมเป็น 10
  2. Request ที่จะมีเข้ามา 10000 Request ต่อ Service ปัจจุบันก็ 50000
  3. มี Logic บางอย่างเช่นการ Append header ตั้งแต่ Gateway

Usability

  1. ต้องการ GUI ในการ Maintain หรือ Monitor ดูได้
  2. เรื่องการ Deploy ต้องไม่ซับซ้อนมากนัก
  3. Community และ Service ต้องคึกครื้น

Open source API Gateway ปัจจุบันมีหลายเจ้าแต่ที่ Google และเจอหน้าบ่อยสุดก็จะพบกับ 3 เจ้า คือ น้องกล้อง (Kong), KrakenD และ Tyk เราจะมาเปรียบเทียบกันว่าทั้ง 3 เจ้าในปี 2020 ใครจะดีกว่าใคร ?

สิ่งที่จะงัดกันมีทั้งหมด 5 เรื่องหลักๆครับ

1. Features

Kong

https://www.saasworthy.com/compare/kong-vs-dell-boomi-vs-postman-vs-wso2-api-manager?pIds=440,441,996,2877

Kong เป็น API Gateway ถูกพัฒนามาอย่างต่อเนื่อง มีความสามารถครบถ้วนในการเป็น API Gateway การ Scale up & down ก็ทำได้ง่าย มี Konga ui ที่สามารถ Config ได้ง่ายเพียง Click แต่ข้อเสียที่อาจะไม่ได้มองว่าเป็นข้อเสีย คือ เรื่องของ Database เพราะ Kong support database แค่ PostgreSQL กับ Cassandra เท่านั้น

Feature เด่นๆ จะเป็นเรื่อง Plugin เป็นอย่างมาก เลยทำให้เรื่องของการ config นั้นเป็นเรื่องที่ยืดหยุ่นเพราะ Kong มี Plugin พื้นฐานให้เราเลือกใช้งานเยอะอีกทั้งยังสามารถทำได้ผ่านการเขียน Plugin ขึ้นมาเพื่อนำมาใช้ใน Kong API โดยสามารถพัฒนาได้หลากหลายภาษาเช่น Lua, Go

KrakenD

https://www.krakend.io/

KrakenD มองตัวเองว่าเป็น Pure API Gateway ดังนั้น ในเรื่องของ Database krakenD มองว่าไม่ควรมีการเก็บ State หรือ Business Logic ใดๆที่ตัว Gateway จึงทำให้ไม่จำเป็นต้องต่อกับ Database แต่ก็อาจจะเป็นข้อเสียหากว่าตัวระบบต้องการที่จะให้มี Business Logic บางอย่างที่ตัว API Gateway เลย

Feature เด่นๆ KrakenD มีความสามารถในการ Aggregate & Manipulate Data ที่เห็นว่าเป็นประโยชน์เลยคือหากเรามีหลาย Service เราสามารถ Merge Response จากหลายๆ Service นั้นๆ ให้อยู่ใน Response เดียวได้

https://www.krakend.io/docs/endpoints/response-manipulation/

Tyk

https://tyk.io/features/api-gateway/

Tyk นำเสนอในเรื่องของการ lightweight เพื่อสามารถเพิ่มส่วนเพิ่มเติมที่แตกต่างออกไปของแต่ละงาน หมายความว่า Tyk จะบอกว่าเค้าเป็นเจ้าที่ออกแบบมาให้เล็กๆไว้ก่อนและนำไปเพิ่มความต้องการของแต่ระบบเอง เพื่อเพิ่มประสิทธิภาพในการทำงาน จริงหรือไม่ต้องลองครับ

Feature เด่นๆ ในเรื่องของ Latency ที่ต่ำ เหมาะกับงาน IoT (Internet of Thing)

2. Deployment

Kong: การ Deploy ของ Kong ค่อนข้างเป็นมิตรเนื่องจากว่า Kong สามารถ Deploy แบบ Container และสามารถ Install บน K8s เพื่อทำ Cluster ได้ ซึ่งก็ไม่มีข้อจำกัดในเรื่องของ Resource และในเรื่องของความยืดหยุ่นก็เป็นอีกหนึ่งเรื่องที่ Kong บน K8s ทำได้อย่างดีเมื่ออยู่ใน Cluster ที่เป็นระบบใหญ่ๆ แต่ก็จะมีข้อเสียอยู่ในเรื่องของ Database ที่ Support แค่ PostgreSQL กับ Cassandra

KrakenD: ตัว KrakenD ก็ใช่ว่าจะสู้ไม่ได้ในเรื่องนี้เพราะก็สามารถ Install ได้บน K8s แต่ใน Best Practice ของทาง KrakenD ก็จะแนะนำให้ทำ Cluster เองได้เลยโดยตรงแต่ก็อาจจะไม่คุ้นชินเท่ากับกับ K8s ซึ่งตรงนี้ก็ต้องลองไปเล่นดูได้ครับ Best Practice

Tyk: การ Deploy สามารถทำได้หลากหลาย อีกทั้งยังสามารถใช้งานในรูปแบบ Saas (Software as a Service) ง่ายๆ มีความสามารถในการรันแบบ Container บน K8s เช่นกัน

3. Price

เรื่องราคาหากเป็นการใช้งานแบบ Enterprise จะต้องเป็นการ Request Demo เพื่อบอกความต้องการของระบบ ผ่าน Email ไปหาทั้ง 3 เจ้า แต่ทาง Tyk จะเปิดราคาแบบขู่ๆไปที่หน้าเว็บแต่ก็ยังต้อง Email ไปถามอยู่ดีหากต้องการ Package ที่เหมาะกับการใช้งานของระบบ

4. Community

เรื่องนี้ น้องกล้องชนะใสๆ หากพูดถึงเรื่อง Community แล้วปฎิเสธไม่ได้ว่า น้องเค้าแซงมาไกลแล้ว แต่ใช่ว่าเจ้าอื่นๆจะแพ้เรื่องนี้ เพราะในเรื่องของการ Service Support เอง ก็พร้อม Service เช่นกัน

5. Benchmark

มาดูในเรื่องของ Benchmark กันสักหน่อยดีกว่าโดยไป Copy มาจาก Krakend ที่ได้ทำการทดสอบ Performance ของทั้ง 3 เจ้า อันนี้ต้องใช้วิจารณญาณในการรับดู

https://www.krakend.io/docs/benchmarks/api-gateway-benchmark/
https://www.krakend.io/docs/benchmarks/api-gateway-benchmark/

แล้วอะไรดีล่ะ ?

ทั้ง 3 เจ้าที่ยกตัวอย่างมานั้นล้วนเป็น API Gateway ที่มี ข้อดีข้อเสีย หรือจุดเด่นที่แตกต่างกัน อย่างเจ้า Kong เองก็มีความยืดหยุ่นในการ Config มากกว่า เพราะสามารถที่จะเขียน Plugin เองเพื่อเข้าไปเพิ่ม Function ให้กับตัว Gateway ได้ แต่ถ้าต้องการความไวก็คงต้องมองเจ้าตัว KrakenD ที่เป็น Pure API Gateway ที่จะมาสนอง Need ในเรื่องของ Performance ตรงนี้ได้

บทความนี้เป็นบทความแรกของผม และบทความนี้เป็นการรวบรวบข้อมูลจากการ Research เท่านั้นยังไม่ได้ทำการใช้งานจริงครบทั้ง 3 เจ้า หากได้ใช้จริงแล้วจะมา Review แบบเจาะลึกอีกครั้ง

สำหรับคนที่สนใจรายละเอียดเพิ่มเติมสอบสามารถตามอ่านได้จากลิงค์ด้านล่างครับ
Kong : https://konghq.com
KrakenD : https://www.krakend.io
Tyk : https://tyk.io

--

--