API Gateway: ใครดีกว่าใคร ?
Hello Medium World…
API Gateway คืออะไร ?
จากบทความข้างต้นคงอธิบายได้อย่างครบถ้วน แต่ถ้าจะกล่าวง่ายๆถึง API Gateway ก็เปรียบเสมือน รปภ. หน้าหมู่บ้านที่คอยตรวจสอบคนที่เข้าหมู่บ้านพร้อมบอกทางไปยังบ้านที่ต้องการจะไปหา
API Gateway ก็เช่นเดียวกันมีหน้าที่ตรวจสอบ Request ที่จะเข้ามาว่าควรจะส่งต่อไปให้ Service ไหน
ผมได้รับโจทย์ให้ Research เกี่ยวกับ API Gateway เพื่อจะนำมาใช้กับโปรเจคที่ใกล้จะ Production ของบริษัท และระบบที่จะข้ึนก็เป็นระบบที่จะมี 3rd Party เข้ามาใช้งาน ทำให้จะต้องมีการจำกัดการเข้าถึง หรือแบ่งการเข้าถึง Service เพราะตัวระบบนั้นมี Service แยกกันอยู่หลายตัว หวยเลยออกให้เริ่มหาตัวช่วยเพื่อลดเวลาในการ Implement ส่วนนี้ออกไป โดยการหา Opensource API Gateway
โจทย์หลักๆที่ระบบต้องการคือ
Performance
- ระบบมี Service แยกออก 5 Services (ปัจจุบัน) อนาคตเพิ่มอีก +5 รวมเป็น 10
- Request ที่จะมีเข้ามา 10000 Request ต่อ Service ปัจจุบันก็ 50000
- มี Logic บางอย่างเช่นการ Append header ตั้งแต่ Gateway
Usability
- ต้องการ GUI ในการ Maintain หรือ Monitor ดูได้
- เรื่องการ Deploy ต้องไม่ซับซ้อนมากนัก
- Community และ Service ต้องคึกครื้น
Open source API Gateway ปัจจุบันมีหลายเจ้าแต่ที่ Google และเจอหน้าบ่อยสุดก็จะพบกับ 3 เจ้า คือ น้องกล้อง (Kong), KrakenD และ Tyk เราจะมาเปรียบเทียบกันว่าทั้ง 3 เจ้าในปี 2020 ใครจะดีกว่าใคร ?
สิ่งที่จะงัดกันมีทั้งหมด 5 เรื่องหลักๆครับ
1. Features
Kong
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
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 เดียวได้
Tyk
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 เจ้า อันนี้ต้องใช้วิจารณญาณในการรับดู
แล้วอะไรดีล่ะ ?
ทั้ง 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