มารู้จักกับ API Management ของ Google ชื่อ Apigee กัน

Ploy Thanasornsawan
5 min readAug 22, 2019

ถ้าใครเคยเล่น Api gateway ตัว community อย่าง kong, wso2 และ Tyk มา
อยากให้ลองเล่น Apigee ในการทำ Api Gateway ดู เพราะ Apigee ถือว่าเป็น Leader ใน Gartner Magic Quadrant เรื่องการจัดอันดับ Api Gateway ว่าเจ้าไหนดีที่สุด
อ้างอิงจากรูป

ถ้าใครยังไม่รู้จักว่า API Gateway คืออะไร สามารถไปอ่านได้จาก บทความ นี้

เราสามารถเลือกใช้ Apigee ได้หลากหลายแพลนตามรูปแบบการใช้งาน ใช้มากใช้น้อย ราคาต่างกันไป แต่ถ้าใช้คนเดียว ก็สามารถลองเล่นฟรีได้ตามแพลน Evaluation

รู้จัก Model full Cycle API Management กันไหม ?

Apigee ของ Google ถือว่าเป็น full life cycle management ที่สามารถทำการ design api ด้วย Document Swagger 2.0 ในหมวดของ Develop-> Specs

และเลือก plan ได้ว่าอยากสร้างให้ user คนนี้มี limit request ต่อเดือนเท่าไร แล้วเชื่อมต่อกับ Api Biling รายงานการใช้งาน service และสามารถสร้าง Api services เองได้มี API Baas (API Backend-as-a-Service) คือเป็น platform ที่สามารถสร้าง service ได้โดยที่ไม่ต้องมี back-end development อะไร แถมยัง built-in programing language รองรับหลายภาษาเช่น java, python, javascript สามารถทำการ format request-response data ได้ อย่างเช่น apigee รับข้อมูลจาก service endpoint มาแบบ soap ซึ่ง pattern เป็น xml ก็มาแปลงเป็น json

สามารถ monitor และ analytic ดู traffic และ performance การใช้งานที่เกิดขึ้นกับ service แต่ละตัว มี web portal สำหรับ developer และการทำ Secure api

จากรูปจะเห็นว่า Apigee สามารถเอาไปเชื่อมกับ Cloud รูปแบบไหนก็ได้ Internet of things, moblie app, website และ System

สรุปเรื่องฟีเจอร์ Api Baas (Backend-as-a-Service)

1. Database management
2. Social graph functionality
3. Geolocation functionality
4. User management
5. Push notifications
6. Client authentications
7. Performance monitoring

ลักษณะ web portal developer ของ Apigee คือ หลังจากเรา create web portal สมมติตั้งชื่อว่า testApi ทาง Apigee จะให้ลิงค์หน้าเว็บ portal มาให้ ซึ่งภายในเว็บก็จะมี tutorials วิธีการจัดการหน้าเว็บ portal developer ว่าเราสามารถทำอะไรได้บ้าง เช่น สร้างเมนู , การจัดการสมาชิกในทีมและ publish api ให้สามารถใช้งานได้บนหน้าเว็บ portal , การตกแต่งหน้าเว็บโดยการใส่สีกับข้อวามด้วยตัวเอง แล้วก็จัดการเพจแต่ละหน้าด้วย Markdown ทำการเพิ่มส่วนของ Google analytic และสคริปสำหรับรันในทุกหน้าได้ในส่วนของ Setting นอกจากนี้ admin ยังสามารถดูลิตส์รายชื่อแอพทั้งหมดว่าถูกพัฒนาโดย devloper คนไหน เพื่อทำการ approve app และดูรายละเอียด credentials app นั้นๆได้ ซึ่ง credential สามารถตั้งได้ว่าให้ใช้ได้ตลอดไปหรือ expired เมื่อไหร่

ตัวอย่างหน้าเว็บ portal developer

และเนื่องจาก Apigee เป็นของ Google เราสามารถเพิ่ม extension api policy ความสามารถต่างๆของ google ให้กับ services ของเราได้อย่างง่ายดาย ไม่ว่าจะ google Authentication, Google cloud spanner, Google bigQuery และอื่นๆลองไปเล่นดู

นอกจาก Product google แล้วยังมี extension อื่นๆ เช่น AWS S3, Lambda, Saleforce และ Informatica Integration Cloud

จริงๆ Apigee มีฟีเจอร์ที่น่าสนใจอันหนึ่งจากรูปด้านบนเมนู Virtual Host เพื่อใช้จำลอง Host ให้สามารถรันได้หลายเว็บ ปกติแล้ว 1 web server รันได้แค่ 1 เว็บ หรือในกรณีที่เราต้องการตั้งชื่อ alias host name ชื่อของ web server หลายๆตัว ก็ใช้วิธีสร้าง virtual host ได้แต่ว่าในกรณี Free account (Evaluation plan) จะไม่สามารถ create virtual host หรือทำการแก้ไขอะไรได้

ในรูปคือเป็นลักษณะว่า เรามี domain name ของเราอยู่แล้ว โดย Host alias คือชื่อ domain ของเรา แล้วเราก็ต้องไปสร้าง DNS Entry กับ CNAME record เพื่อให้ชี้ไปที่ domain name ของเรา พอมี Request เข้ามา Request จะถูกส่งเข้า Apigee Edge เพื่อไปเรียก Api proxy ใช้งาน services ที่ต้องการ ดูข้อมูลเพิ่มเติมได้จาก docs

API Proxy คืออะไร

API Proxy เป็นเหมือน interface ไว้ไปเรียก backend services ของเราอีกที ก็คือแทนที่เราจะไปเรียก service นั้นตรงๆ สมมติเว็บ service ของเราอยู่ที่ IP 192.168.10.1 แต่พอใช้ Apigee เป็น proxy เราก็มาเรียก service ของเราผ่าน IP ของ Apigee แทน ทีนี้พอเปิดมาหน้า create Api proxy จะรู้สึกว่ามีหลาย options มาก

Default ส่วนใหญ่จะใช้เป็น “Reverse proxy” เพื่อรับ request มาแล้วส่งต่อให้ server ภายใน ทำการจำในแคชว่า serive นี้เคยถูกเรียกยัง ถ้าเคยก็ทำการดึง information เดิมไปตอบกลับ ทำให้การร้องขอข้อมูลระหว่าง server ไปยัง backend service ใช้เวลาน้อยลง แต่ถ้า Forward proxy หรือที่เรียกสั้นๆว่า proxy คือจะถูกเรียกใช้โดย client ไม่ใช่ server ยกตัวอย่าง กรณีการล็อคอินเข้าเฟสบุ๊ค หน้าเว็บเบราเซอร์ทำการเก็บไว้ในแคชแล้วว่า user คนนี้เคยล็อคอิน ก็ไม่ต้องไป request ขอ information อีกรอบ

อันนี้ถ้าเกิดเรายังไม่มี backend service มาลองเล่น เราสามารถใช้ demo service ของ apigee ได้โดยใส่ในช่อง Existing api เป็น https://mocktarget.apigee.net แต่ถ้าเกิดเราอยากลอง mock up request-response เอง ก็เลือกแบบ “No target” จะเป็นการสร้าง Api end point ตรงๆบน Apigee ไม่ต้อง route path ไปยัง service target อื่น

ตัวอย่างขั้นตอนการสร้าง API Proxy โดยวิธี Reverse proxy

ตัวอย่างขั้นตอนการสร้าง API Proxy โดยวิธี No target

หรือถ้าใครถนัด Nodejs อยากสร้าง service ใหม่แบบเขียนโค๊ดปรับแต่ง path ได้ แล้วก็เพิ่ม Policy พวก Authentication เอง ก็เลือก “Hosted Target

หลังจากเราสร้าง API Proxy เสร็จ เราสามารถลอง Test request บน APIgee ได้ แล้วดู Trace เช็ค request, response แต่ละจุดการทำงานระหว่าง Proxy กับ service

ส่วนเมนู Develop เราสามารถทำการเพิ่ม Target endpoint ได้ เลือกทำการเพิ่ม policy ให้ service โดยการ Authentication จากการกด +step หรือทำการแก้ไขโค๊ด nodejs สำหรับ message response ถ้าเกิดไม่อยากได้ค่า default Hello, world! ส่วนแถบ performace ใช้สำหรับดูสรุป Traffic ที่เข้ามายัง service เราในแต่ละช่วงเวลาเป็นกราฟ เพื่อดูว่าช่วงไหน Request เยอะสุดเป็น Traffic

ถัดมา ต่อจากเมนู API Proxies ในหมวดเมนู Develop คือ Shared Flows เอาไว้ใช้ร่วมกันหลายๆ API Proxies อย่างเช่น Authentication ด้วยวิธี Basic login ก่อนเข้า Service ต้องนำไปใช้กับ 4 services ก็ใช้ Share flow แทน ซึ่งในขั้นตอนสร้าง Shared flow เราไม่ต้องมี Existing api เพื่อระบุว่า Backend service ที่จะไปเรียกเป็น path ไหนแบบตอนสร้าง API proxies ดูเพิ่มเติมได้ที่ docs

--

--