3P by kunggom 2023-01-11 | favorite | 댓글 1개

Microsoft에서 서비스하는 Microsoft 365 클라우드 서비스와 관련된 애플리케이션을 제작하고 유지보수해야 하는 사람들에게는 어떻게든 피해갈 수 없는 것이 바로 Microsoft Graph API입니다. 이게 뭔지 혹시 모르는 사람을 위해 잠시 소개하자면, MS에서 제공하는 모든 클라우드 리소스에 통합적으로 접근할 수 있는 RESTful API지요. MS에서는 이 API를 편리하게 사용하기 위한 Graph SDK를 몇몇 언어로 제공하고 있습니다.

문제는 이 API를 사용한 부분을 테스트하기가 영 까다로웠다는 것입니다. 제가 특히 이런 걸 느꼈던 부분은 Graph API에서 rate limit이 걸려 응답이 429 Too Many Requests인 경우였습니다. Graph SDK를 사용하면 throttling으로 429 응답 코드를 받았을 때 응답 헤더의 Retry-After 값에 따라 자동 재시도를 해주긴 하는데, 간혹 재시도하지 않고 빠르게 실패 처리하거나 아니면 기본값과는 다른 정책을 적용하는 것이 더 나은 경우가 있었습니다. 문제는 이런 경우를 개발 환경에서 테스트할 방법이 마땅치 않다 보니, 초기 제품을 배포한 뒤에야 Graph SDK의 요청 재시도 정책을 기본값에서 바꾸어야 한다는 것을 깨닫고 이후 버전에서 수정한 경험이 있습니다.

MS에서도 이런 점을 어느 정도 알고는 있어서 API 요청 URL에 test429=true 매개변수를 추가하면 429 응답 코드인 경우를 Mock해주는 기능을 추가했지만, 이건 오직 SharePoint/OneDrive 관련 엔드포인트에서만 동작한다는 한계점이 있었습니다.
https://pnp.github.io/blog/post/…

그런 와중에 드디어 반가운 도구가 새해 연초에 등장했습니다. 바로 Microsoft Graph Developer Proxy입니다.
Graph API에서 반환되는 각종 응답값을 Mock할 수 있고, 각종 오류나 throttling을 편리하게 재현할 수도 있는 도구입니다. 테스트하는 요청이 로컬 개발 환경을 벗어나지 않는 것은 덤이죠. 아직 개발 초기 단계이지만, 올해 내로 정식 버전이 출시될 거라고 합니다. 적어도 관련 업무를 하는 사람으로서는 정말 편리한 도구의 등장이네요.

참고로 이 도구가 나오기 전에도 Graph API에서 429가 걸리는 상황을 흉내내는 방법이 아주 없었던 것은 아닙니다. Fiddler와 같은 도구를 사용하는 방법이 있긴 있었죠. 하지만 꽤나 불편했습니다.

위에서 소개한 도구는 README에 따르면 작년(2022년)의 해커톤 대회에서 Waldek Mastykarz라는 분이 만드신 것인데, 그 분의 예전(2018년) 블로그 글을 보면 Fiddler로 SharePoint API에서 429가 걸리는 상황을 모사하는 방법을 소개하고 있습니다.
https://blog.mastykarz.nl/simulating-throttling-sharepoint/