Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 2029

ข้อดีและข้อเสียของ API Gateway

$
0
0

api-gateway-00

api-gateway-00 ในโลกของการสร้างระบบแบบ API-centric หรือแยก service ต่าง ๆ ออกมาในรูปแบบของ Microservice นั้น สิ่งที่มักจะถูกพูดถึงก็คือ API Gateway ดังนั้นเรามาดูกันว่า
  • API Gateway มันคืออะไร ?
  • API Gateway มีข้อดีและข้อเสียอย่างไรบ้าง ?
มาเริ่มกันเลย

API Gateway คืออะไร ?

เป็นจุดศูนย์รวมของการเข้าถึง API ต่าง ๆ ในระบบ ทั้งการเข้าถึงแบบ 1:1 และ 1:N ทำให้การเข้าถึง API ง่ายขึ้น ทำให้สามารถกำหนดรูปแบบการใช้งานได้ง่ายขึ้น ตัวอย่างเช่น limit การใช้งาน เป็นต้น ทำให้สามารถกำหนดเรื่อง authentication และ authorization ได้ง่ายขึ้น ทำให้สามารถวิเคราะห์การใช้งานได้ง่ายขึ้น
โดยรวมแล้วเป็นอีกหนึ่ง layer ที่เพิ่มขึ้นมาเพื่อจัดการ API ที่มีจำนวนมากมายนั่นเอง
ลองคิดดูสิว่า ถ้าระบบที่มีสถาปัตยกรรมแบบ Microservice จริง ๆ จะมีจำนวน service มากมายเพียงใด ตั้งแต่หลัก 10 ไปจนถึงหรือพัน หลักหมื่น แน่นอนว่า การเข้าถึงแต่ละ service มันน่าจะยากนะ นั่งจำ endpoint ของ service กันเยอะเลย !! ดังนั้น API Gateway น่าจะเป็นอีกหนึ่งตัวช่วยที่น่าสนใจ แต่ถ้าออกแบบไม่ดีก็บรรลัยได้ง่าย ๆ เช่นกัน !! แสดงโครงสร้างดังรูป api-gateway

มาดูข้อดีของ API Gateway กันบ้าง ?

1. แยกส่วนการใช้งาน API จากผู้ใช้งาน ผู้ใช้งานจะเห็นเพียง API จาก gateway เท่านั้น ว่าต้องส่ง request ไปที่ไหน ? มี input อย่างไร ? ได้ output อย่างไร ? โดยไม่รู้เลยว่าข้างในทำงานอย่างไร วิธีการนี้จะส่งผลดีต่อการแก้ไขปรับปรุง API ที่อยู่ด้านในระบบ โดยไม่กระทบต่อผู้ใช้งานโดยตรง รวมทั้งซ่อนการจัดการเรื่อง versioning และ service discovery ไว้อีกด้วย 2. ใช้สำหรับป้องกันการโจมตีจากผู้บุกรุก ทั้ง SQL Injection, XML exploit และ Denial-of-Service (DoS) เนื่องจากเป็น layer ที่ผู้ใช้งานจากภายนอกจะเข้าถึง API ได้ 3. ทำให้ service ภายในใช้งาน protocol ที่หลากหลายได้ ผู้ใช้งานสามารถใช้งานผ่าน HTTP/REST ได้ปกติ แต่ service ภายในสามารถใช้ protocol ที่หลายหลาย ในการติดต่อสื่อสารกันได้ เนื่องจากแต่ละ protocol ก็มีข้อดีและข้อเสียแตกต่างกันไป รวมทั้งทำให้ง่ายต่อการ integrate เข้ากับ Legacy system อีกด้วย เช่น ProtoBuf, SOAP, RPC, WebService เป็นต้น 4. ช่วยลดความซับซ้อนของ service ต่าง ๆ ลงไป ความสามารถพื้นฐานต่าง ๆ ของแต่ละ service นั้น เราสามารถนำมา implement ไว้น API Gateway ได้เลย ทำให้ผู้พัฒนาสนใจเฉพาะ service นั้น ๆ ไปเลย ไม่จำเป็นต้องไป implement ไว้ในแต่ละ service เนื่องจากเป็นการเพิ่มความซับซ้อนเข้าไปโดยใช่เหตุ เช่น
  • การ authentication
  • การ authrorization
  • กำหนด usage limit
5. ทำให้ทดสอบระบบได้ง่ายขึ้น ในทดสอบแบบ integration นั้น เราสามารถจำลองหรือ mock service ขึ้นมาได้ง่าย ๆ เนื่องจากบางครั้ง API ด้านหลังอาจจะพัฒนาไม่เสร็จหรือยังไม่พร้อม

มีข้อดีก็ต้องมีข้อเสียกันบ้างสิ ?

ปัญหาใหญ่ก็คือ Single Point of Failure (SPoF) ดังนั้นในการออกแบบต้องให้ความสำคัญอย่างมาก ลองคิดดูสิว่า ถ้า API Gateway พังไป มันส่งผลกระทบต่อทั้งระบบเลยนะ และจะ scaling ระบบกันอย่างไร ? ต่อมาเรื่องของการ configuration routing ของ service ต่าง ๆ ซึ่งมันเยอะมาก ๆ ดังนั้นควรต้องมีเครื่องมือและระบบที่สนับสนุนเรื่องเหล่านี้ด้วย มิเช่นนั้นจะกลายเป็นปัญหาใหญ่ในการจัดการ สิ่งที่สำคัญมาก ๆ คือ การ deploy ระบบงาน จำเป็นอย่างยิ่งต้องทำงานแบบอัตโนมัติ ทั้งการเพิ่ม แก้ไข และ ลบ service จำเป็นต้องใช้คนที่มีความสามารถ จำเป็นต้องใช้เครื่องมือที่เหมาะสมกับงาน Reference Websites https://dzone.com/articles/why-do-microservices-need-an-api-gateway

Viewing all articles
Browse latest Browse all 2029

Trending Articles