3 คะแนน โดย kunggom 2023-01-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

สำหรับผู้ที่ต้องพัฒนาและบำรุงรักษาแอปพลิเคชันที่เกี่ยวข้องกับบริการคลาวด์ Microsoft 365 ของ Microsoft สิ่งที่แทบเลี่ยงไม่ได้ไม่ทางใดก็ทางหนึ่งก็คือ Microsoft Graph API หากใครยังไม่รู้ว่ามันคืออะไร ขออธิบายสั้น ๆ ว่าเป็น RESTful API ที่ช่วยให้เข้าถึงทรัพยากรคลาวด์ทั้งหมดที่ MS ให้บริการได้แบบรวมศูนย์ โดย MS ก็มี Graph SDK สำหรับหลายภาษาไว้เพื่อให้ใช้งาน API นี้ได้สะดวกขึ้น

ปัญหาคือการทดสอบส่วนที่ใช้งาน API นี้ทำได้ค่อนข้างยุ่งยาก จุดที่ผมรู้สึกชัดเป็นพิเศษคือกรณีที่ Graph API ติด rate limit แล้วตอบกลับเป็น 429 Too Many Requests หากใช้ Graph SDK เมื่อได้รับโค้ดตอบกลับ 429 จากการ throttling มันจะรีทรายให้อัตโนมัติตามค่า Retry-After ใน response header แต่บางครั้งการไม่รีทรายแล้วทำให้ล้มเหลวอย่างรวดเร็ว หรือใช้นโยบายที่ต่างจากค่าเริ่มต้น กลับเหมาะสมกว่า ปัญหาคือไม่มีวิธีที่ดีพอสำหรับทดสอบกรณีแบบนี้ในสภาพแวดล้อมพัฒนา ทำให้ผมเคยมีประสบการณ์ว่าเพิ่งมารู้หลังจากปล่อยผลิตภัณฑ์เวอร์ชันแรกไปแล้ว ว่าควรเปลี่ยนนโยบายการรีทรายคำขอของ Graph SDK จากค่าเริ่มต้น และต้องไปแก้ในเวอร์ชันถัดมา

ทาง MS เองก็พอทราบปัญหานี้อยู่บ้าง จึงได้เพิ่มความสามารถในการ mock กรณีตอบกลับ 429 โดยใส่พารามิเตอร์ test429=true ลงใน URL ของคำขอ API แต่ก็มีข้อจำกัดว่าฟีเจอร์นี้ใช้ได้เฉพาะกับเอนด์พอยต์ที่เกี่ยวข้องกับ SharePoint/OneDrive เท่านั้น
https://pnp.github.io/blog/post/…

ท่ามกลางสถานการณ์นั้น ในที่สุดก็มีเครื่องมือที่น่ายินดีเปิดตัวออกมาตอนต้นปีใหม่นี้ นั่นคือ Microsoft Graph Developer Proxy
เป็นเครื่องมือที่สามารถ mock ค่าตอบกลับหลากหลายแบบจาก Graph API ได้ และยังช่วยจำลองข้อผิดพลาดหรือการ throttling แบบต่าง ๆ ได้อย่างสะดวก อีกทั้งคำขอที่ใช้ทดสอบก็ไม่ต้องออกไปนอกสภาพแวดล้อมพัฒนาในเครื่องอีกด้วย ตอนนี้ยังอยู่ในช่วงเริ่มต้นของการพัฒนา แต่มีการบอกว่าจะออกเวอร์ชันทางการภายในปีนี้ อย่างน้อยสำหรับคนที่ทำงานสายนี้ นี่คือการมาถึงของเครื่องมือที่สะดวกมากจริง ๆ

1 ความคิดเห็น

 
kunggom 2023-01-11

เพื่อเป็นข้อมูลเพิ่มเติม ก่อนที่เครื่องมือนี้จะออกมา ก็ใช่ว่าจะไม่มีวิธีจำลองสถานการณ์ที่ Graph API โดน 429 เลยเสียทีเดียว มีวิธีใช้เครื่องมืออย่าง Fiddler อยู่เหมือนกัน แต่ค่อนข้างไม่สะดวก

ตาม README เครื่องมือที่แนะนำข้างต้นถูกสร้างโดย Waldek Mastykarz ในงานแฮกกาธอนเมื่อปีที่แล้ว (2022) และหากดูจากบทความบล็อกเก่าของเขาเมื่อก่อนหน้านั้น (2018) ก็จะพบว่าเขาได้แนะนำวิธีจำลองสถานการณ์ที่ SharePoint API โดน 429 ด้วย Fiddler ไว้แล้ว
https://blog.mastykarz.nl/simulating-throttling-sharepoint/