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

ทำไมต้องมี API Gateway ด้วย ?

$
0
0

คำถามที่น่าสนใจมาก ๆ ที่ถูกถามเป็นประจำคือ
ทำไมต้องมี API Gateway ด้วย ? ไม่ใช้ได้ไหม ?
พอดีซื้อมาแล้ว ก็ต้องใช้ ?
คนออกแบบกำหนดว่าต้องให้มี ?

แต่ก็มักตอบกลับด้วยคำถามคือ ใช้ API Gateway ไปทำไม ?
ทำไมต้องใช้ ?
ไม่ใช้ได้ไหม ?
การใช้หรือไม่ใช้ มีข้อดีและข้อเสียอะไรบ้าง ?

ยิ่งพูดถึงบริบทของ Microservices ก็ยิ่งมีการพูดถึงหรือใช้งาน API Gateway มาก

แต่ก่อนอื่นเรามาดูก่อนว่า ถ้าไม่มีการใช้งาน API Gateway จะเป็นอย่างไร
ไปเจอรูปจากบทความ Why do microservices need an API Gateway?
อธิบายด้วยรูปนี้

คำอธิบาย

ในแต่ละ service จะมีการทำงานต่าง ๆ มากมาย ทั้ง function การทำงานหลัก ทั้ง function การทำงานอื่น ๆ ที่ไม่ใช่ส่วนหลัก แต่เป็นส่วนเสริม เช่น

  • Authentication และ Authrorization
  • การจัดการ CORS (Cross-Origin Resource Sharing)
  • การจัดการเรื่อง Traffic และ Rate limit
  • การ Monitoring ระบบงาน
  • การจัดการ Logging
  • การจัดการ Request termination
  • การจัดการเรื่องของ caching data

ทำให้แต่ละ service หรือ ระบบงาน มีการทำงานเยอะจนเกินไป
หรือมีการทำงานที่ผูกมัดจนเกินไป (Tight coupling)
เกิดงานที่ทำซ้ำ ๆ จนน่าเบื่อ
การที่จะเปลี่ยนแปลง อาจต้องเปลี่ยนแปลงในหลาย ๆ ที่

ดังนั้นจะดีกว่าไหม ถ้ามีส่วนการจัดการสิ่งต่าง ๆ เหล่านี้

นั่นคือ การสร้างอีกส่วนงานหรือ layer ขึ้นมา
ซึ่งจะเรียกว่า API Gateway หรือบางคนเรียกว่า Backen for Frontend (BFF)
ทำให้ระบบงานหลักกับส่วนงานซ้ำ ๆ ออกจากกัน
ทำให้ไม่ผูกมัดกันมากนัก (Loose Coupling)
ที่สำคัญทำให้ แต่ละส่วนงานทำหน้าที่ของมันไป (Single Responsibility)
แสดงดังรูป

แต่เมื่อแยกออกมาแล้ว ไม่ใช่จะมีเพียงข้อดี แต่ก็ยังมีข้อเสียที่ต้องเข้าใจ

เพื่อที่จะได้หาวิธีแก้ไขและป้องกัน
ทั้งเรื่องของการเปลี่ยนแปลง
ทั้งเรื่องของการ configuration
ทั้งเรื่องปัญหาคอขวด
ทั้งเรื่องของปัญหา Single Point of Failure ที่อาจจะเกิดขึ้น
ทั้งเรื่องของการ scale เพื่อรองรับการใช้งานที่มากขึ้น
รวมทั้งการมีจำนวน hop/layer เพิ่มเข้ามา  อาจจะส่งผลต่อ rsponse time ที่สูงขึ้น

อีกอย่าง เราชอบทำการร้อยเรียง service ต่าง ๆ ใน API Gateway

หรืออาจจะเรียกว่า API Management เลยก็ได้
ทำให้ business logic เกิดขึ้นในนี้
ถามว่า ทำได้ไหมก็ตอบว่าได้
แต่ถ้าถามว่า มันถูกใช้ไหม ?
ตรงนี้อาจจะตอบได้ยาก
เพราะว่า มันใช่หน้าที่ของมันหรือไม่ 
ดังนั้นจำเป็นต้องกำหนดหน้าที่รับผิดชอบให้ชัดเจนก่อนเสมอ
มิเช่นนั้นก็อาจจะเกิดความซับซ้อนมากมายขึ้นมาอีก
ส่งผลให้เมื่อมีการเปลี่ยนแปลง จะส่งผลกระทบที่สูงมาก ๆ

การใช้งาน API Gateway นั้นมักจะใช้ใน traffic ที่เรียกว่า North-South traffic

ซึ่งเป็นการติดต่อสื่อสารระหว่างระบบภายในและภายนอก
หรือการติดต่อจาก public zone มายัง private zone
ซึ่งจะผ่านตัว API Gateway ก่อนเสมอ
เปรียบได้กับ ตม. เข้าประเทศนั่นเอง

สุดท้ายลองตอบคำถามให้ได้ก่อนว่า

ทำไมคุณถึงใช้งาน API Gateway มิใช่เพียงบอกว่า
เราหรือเขาบอกว่าต้องใช้งาน
มิเช่นนั้น ของที่มีประโยชน์อาจจะกลายเป็นโทษก็ได้


Viewing all articles
Browse latest Browse all 1997

Trending Articles