บทบาทของ API Gateway บน สถาปัตยกรรม Microservices
ปัจจุบันเรามีอุปกรณ์ต่าง ๆ มากมายเข้ามาเรียกใช้บริการ Microservices ผ่านทาง API Server ซึ่งก็อาจจะทำให้เกิดปัญหาตามมาได้หลายหลาก เช่น การมีหลาย Entry point, การเข้าถึง Service ต่าง ๆ ภายใน Server ที่ง่ายดาย ทำให้ต้องมานั่งปวดหัวกับการจัดการ, ปัญหาด้าน Security และ อื่น ๆ…
API Gateway สามารถแก้ปัญหาข้างบนให้ท่านได้ ไม่ว่าจะเป็นการจัดการ Single entry point หมดกังวลกับการจัดการ การเข้าถึงจากภายนอก โดยให้ API Gateway เป็นคนจัดการให้ ทั้งยังเสริมสร้างความ Security ให้กับการเข้าถึง Server ภายในได้มากขึ้นอีกด้วย
API Gateway คืออะไร
API Gateway เป็น singular interface ที่จะคอยจัดการกับ Request ต่าง ๆ ที่หลากหลาย ก่อนจะทำการส่งต่อไปยัง Servers ที่อยู่ภายใน ซึ่ง API Gateway อาจทำหน้าที่แบ่งได้ดังนี้
- Filter ทำหน้าที่กรอง traffic หรือ request ที่เข้ามาจากทั้ง web, mobile, B2B, O2O, C2B, web service และ อื่น ๆ
- Single entry point ทำหน้าที่ เปิดเผย Endpoint ของ APIs ต่าง ๆ โดยเปิดเผยเพียงแค่ endpoint เดียว แล้วให้ request เข้ามา อาจจะแบ่ง endpoint ให้ยิงไปยัง service ต่าง ๆ ผ่าน context path หรือ วิธีอื่น ๆ จากนั้นจึง ทำหน้าที่ Routing ต่อไป
- API Management การจัดการกับ API ต่าง ๆ ที่จะถูกส่งต่อไป
- จัดการกับ API rate limit และ traffic management
- Security mechanism กลไกของเรื่องความปลอดภัย ไม่ว่าจะเป็นการเข้าถึงผ่านการ authentication การ logging หรือ อื่น ๆ
6 สิ่งที่คุณจะได้รับจาก API Gateway
- Separation of Application Layer and Requesting Parties การแบ่งชั้น Layer ของ application จะเป็นประโยชน์อย่างมาก ในการนำ Microservices ออกห่างจากผู้ใช้งาน โดยให้ทำการเข้าถึงผ่านเข้า API Gateway แทน โดยการมีตัวกั้นก่อนเข้าถึง API ก็ทำให้เรามีความปลอดภัยมากขึ้นไปอีกขั้น ในขณะที่การทำงานภายในอื่น ๆ ยังคงทำงานเหมือนเดิม
- Increases Simplicity for the Consumer สร้างความเรียบง่ายให้กับผู้ที่จะเข้ามาใช้งาน
- Improves Development and Increases Server Load การแยกการทำงาน แบบนี้ ทำให้การพัฒนา service ของแต่ละทีมมีความคล่องตัวมากขึ้น นอกจากนี้ยังจะช่วยลดภาระหน้าที่ของ server อีกด้วย
- Buffer Zone Against Attacks มี buffer ในการต่อต้าน การถูกโจมตี Gateway จะทำหน้าที่ เป็นด่านหน้า ในการรับ request ทาง user อาจจะ request มาเพียง 1 request แต่จริง ๆ แล้วภายในอาจแยกการทำงานไปอีกหลาย service โดยที่ user ไม่จำเป็นต้องรู้ว่าภายในของเราทำงานอะไรอีกบ้าง นั่นก็ถือเป็นข้อดีทั้งในมุมของผู้ใช้งาน และ สามารถป้องกันการเข้าถึงได้อีก
- Cater to Specific Customers to Improve UX การตอบสนอง user experience ของ user เนื่องจากภายใต้ API Gateway user จะไม่ต้องเห็นการทำงานภายใน Microservice เลย ไม่ต้องมานั่งอ่านเอกสารเป็นพัน ๆ บรรทัด หลาย ๆ service ของเรา user อ่านแค่ API ของทาง Gateway อย่างเดียวก็พอแล้ว ตัว Gateway จะทำการ filter และ routing ให้ ทำให้เราสามารถ จัดการ services ต่าง ๆ ภายในของเราได้ โดยที่ user ไม่ได้รู้สึกมีผลกระทบ
- Log Metrics to Anticipate Change ตรวจสอบ Metrics การเข้าถึงระบบ รวมถึงสามารถคาดการณ์ การเปลี่ยนแปลงได้ด้วย เราสามารถตรวจสอบข้อมูลของการ request สามารถคาดการณ์ได้ว่า Service ไหนมี request เข้ามามาก หรือ น้อย เพื่อจัดการกับ resource ของเราได้
ข้อควรระวังของ API Gateway
พูดถึงข้อดีกันมามากแล้ว เรามาดูข้อควรระวังกันบ้างครับ สิ่งแรกเลย API Gateway ต้องรองรับการทำงานที่ซับซ้อนมาก ในการจัดการกับ Request ที่ถูกส่งเข้ามาจากหลากหลายแบบ และ มีปริมาณมหาศาล โดยที่คุณต้องรองรับการทำงานตลอดเวลา ด้วยแบนด์วิตท์ที่สม่ำเสมอ รวมถึงการกระจายทราฟฟิกต่าง ๆ ให้ดีอีกด้วย
โดยปกติ เวลา User ทำการ Request เข้ามายัง Server ของคุณ โดยผ่าน load balancer จากนั้นก็อาจจะผ่านการกรอง จาก Service นั้น ๆ ที่คุณ Provide ให้ ซึ่งการเชื่อมต่อกันตรง ๆ แบบนั้นทำให้ User ได้รับ Response ที่รวดเร็ว เนื่องจากไม่มีอะไรที่สลับสับซ้อนมากนัก
ทีนี้เมื่อคุณมาใช้ API Gateway แล้ว Request ต่าง ๆ จะวิ่งเข้ามาทาง API Gateway แทน ก่อนหน้านี้ user จะ request เข้ามาที่ Server A, B, C หรือ D โดยตรง แต่ตอนนี้ User จะวิ่งมาที่ API Gateway แทนแล้ว ก่อนจะ forward ต่อ น่าจะพอเห็นภาพนะครับ โดยจะวิ่งเข้ามาผ่านทาง load balancer เช่นกันนั่นแหละ การเข้ามาของ Request ต่าง ๆ จะถูก กรอง โดย API Gateway และ / หรือ ถูก Verify ด้วย และ / หรือ ต้องผ่านการทำ Security บางอย่างด้วย ก่อนจะวิ่งไปหา Server ภายใน จะเห็นได้ว่ากว่า Request จะถูกส่งไปหา Service ภายในแบบดั่งเดิมนั้น ต้องผ่านกรรมวิธีก่อนจะเข้ามาได้
ข้อควรระวังหลัก ๆ ของการทำ API Gateway จะมีอยู่ด้วยกัน 2 ข้อ
- ระวังความซับซ้อนที่เกิดขึ้นจากการแยก API
- ระวัง Response ที่อาจจะ “ช้าขึ้น” เนื่องจากมี layer ที่มากั้นอีก level นึง อีกทั้งอาจจะมีการ Verify ที่มากขึ้น
Gateways as a Security Feature
พูดถึงความปลอดภัยกันบ้าง ไม่ว่าคุณจะทำ API อะไร แบบไหน อย่างไร สิ่งที่ควรคำนึงถึง หนึ่งในนั้นก็ควรจะมี Security
ข่าวดีก็คือการใช้ API Gateway เป็นหนึ่งในสิ่งที่ดี ที่คุณสามารถทำได้ สำหรับความปลอดภัยของของข้อมูล ซึ่งความปลอดภัยที่คนหมู่มากที่เชี่ยวชาญไอทีทั่วโลกมักจะกล่าวถึงก็คือ CIA (ไม่ใช่ Central Intelligence Agency นะครับ)
Confidentiality ความเป็นส่วนตัวของข้อมูล
Integrity ความมั่นใจได้ว่า ข้อมูลจะไม่ได้รับการเปลี่ยนแปลงอย่างไม่ถูกต้อง
Availability มั่นใจได้ว่าข้อมูลสามารถเข้าถึงได้ เมื่อมี Request เข้ามา
Conclusion
API Gateway เป็นหนึ่งในเครื่องมือที่มีประสิทธิภาพ ในการพัฒนา API และ ช่วยแบ่งเบาภาระของระบบ Microservices ของเรา โดยทำการกรอง Request ต่าง ๆ ให้ และ ยังได้ประโยชน์ทางด้านของความปลอดภัยอีกด้วย
แน่นอนครับ มันจะไม่มีประโยชน์มากนัก ถ้าหากเราไม่ได้มี API อะไรมากมาย หรือ ซับซ้อนมากนัก หรือ จำเป็นต้องการ filter request ก่อน ว่าที่เข้ามานั้นถูกต้องไหม ก่อนจะถูกส่งต่อ แต่ถ้าหาก จริง ๆ แล้ว 1 API ของคุณมีการเชื่อมต่อมากมาย ต้องการให้มีตัวกรองก่อน หรือ ต้องการปกป้อง Service ข้างหลัง ต้องการความปลอดภัยมากขึ้น ผมคิดว่ามันเป็นตัวเลือกที่ ยอดเยี่ยมเลยครับ
หวังว่าทุกท่านจะมีความเข้าใจกับบทบาทของ API Gateway มากขึ้นนะครับ
Ref# https://nordicapis.com/api-gateways-direct-microservices-architecture/