최악의 오픈 API를 면하려면

Daum의 오픈 API 서비스를 맡고 있는 Channy입니다. DNA 블로그에 오랜만에 글을 쓰는 것 같습니다. 자주 블로그에 오픈 API에 대한 저의 이야기를 올릴 생각입니다. 많은 피드백 부탁 드립니다.

HackersNews에서 개발자들에게 어떤 오픈 API가 최악인지 무엇이 가장 골칫꺼리인지에 대한 설문조사를 했더군요.

그 결과 예상외로 페이스북이 1위를 차지했습니다. 웹 개발자들은 버그, 문서의 미비, API 변경이 자주 일어나고 답변의 지연 모든 분야에서 Facebook을 최고로 꼽았습니다. 2위는 구글 API, 3위는 트위터 API입니다. 물론 가장 많이 쓰는 API이니 문제도 가장 많겠죠.

하지만, YourTrove의 조사에서도 최악의 API에 페이스북이 압도적 1위이고, 그나마 Twitter와 Yahoo YQL이 최선의 API로 선정했습니다. 트위터의 경우, 쉽고 직관적인 인터페이스를 가지고 있을 뿐 아니라 문서도 이해하기 쉽지요. 특히, JSON이나 SQL 같은 이해하기 쉬운 기술이 개발 비용일 낮춘다라는 점을 반영합니다.

그래서인지 오픈 API에서 가장 골칫꺼리로 문서화 미비(변경 사항 포함)와 oAuth와 SOAP와 같은 생소한 기술을 많이 지적했습니다. 아래는 개발자들이 느끼는 문제점에 대한 Daum API의 대한 노력에 대해 한번 이야기 나눠 보겠습니다.

1. 문서화 미비
API 문서가 있어도 상세하게 설명이 안되어 있는 경우에 대한 지적입니다. Daum DNA에서는 올해들어 각 API 마다 시작하기를 두어서 기본적인 문서화와 사용법, 샘플 코드를 하나 이상 담고 각 문서에서도 입출력 결과값을 미리 볼 수 있도록 문서 수정을 계속 하고 있는 중입니다.

2. API 자주 바뀌는 문제
사내 서비스 중단이나 계약 해지등의 이유로 특정 API가 중지되거나 변경되는 사안은 Daum 서비스 약관에 따라 미리 고지되고 메일로도 알려 드리고 있으나, 가끔 오픈 API의 결과값이 조금씩 바뀌는 경우 쉽게 인지시켜드리는 방법이 없는 것이 사실입니다.

지도 API의 경우, 버전을 나누어 제공해 드리고 있지만, 앞으로는 일반 API에 대해서도 문서화 버전을 만들고 변경 사항(ChangeLog)을 적시하도록 노력하겠습니다.

3. 인증의 어려움 (특히 oAuth)
개발자 교육을 나가보면 항상 부딪히는 문제가 바로 oAuth입니다. 다음의 경우, 로그인 기반 서비스가 많다보니 앞으로 oAuth 인증을 쓰는 오픈 혹은 제휴 API가 계속 늘어날 것입니다. 그렇게 이해하기 쉬운 방식이 아니다보니 참 애로 사항이 많지요.

올해 부터 oAuth에 대한 문서 및 샘플 코드를 확충해서 닷넷, 자바, 자바스크립트, PHP, 파이썬 등 주요 언어에 대한 튜토리얼을 거의 모두 완성했습니다. 하반기에는 그냥 컨슈머키만 넣으면 바로 쓸 수 있는 한글화된 라이브러리와 샘플 코드를 더 많이 제공하겠습니다.

4. 표준의 미비
아무래도 오픈 API는 각 사의 이해에 따라 만들다 보니 별도의 표준이 없는 것이 사실입니다. Daum API는 적어도 REST 방식의 입력과 JSON 방식의 출력으로 표준을 정하고 있습니다. (해외와 달리 국내 다른 API는 아직 JSON 방식을 제공하는 곳이 별로 없습니다.)

5. SOAP, non-REST
SOAP은 사실 서비스 지향 구조(SOA) 및 웹서비스(Web Services)의 원류가 되는 기술인데도 , 개발자들은 이해하기 어려워 여전히 싫어합니다. Daum에는 SOAP 방식 API가 없습니다만 이 부분은 API 제공자들이 꼭 염두해 두어야 하는 사항입니다. “Simple is the Best!”

6. 바로 써 먹을 샘플코드
Daum DNA에서도 상반기에 노력했던 부분 중 하나입니다. 전체 API 샘플 코드를 모아서 github와 Google Code에 정리했습니다. 앞으로도 API Playground를 DNA 사이트에 직접 연동해서 바로 테스트할 수 있도록 할 예정입니다.

그 밖에 테스트 환경(Sandbox)가 없거나 오류 처리가 형편없는 문제도 지적했습니다. 앞으로 DNA도 API키 하나 만으로 전체를 테스트해볼 수 있는 샌드박스 환경을 제공하면 어떨까 생각해 보고있습니다. (물론 트래픽 제한이 있을 예정입니다.)

그리고, 얼마전 부터 오류 처리에 대해 JSON 방식으로 호출한 경우, JSON 포맷으로 보내기 시작했고 좀 더 다양하고 친절한 오류 메시지를 제공하려고 검토하고 있습니다. 

외국 개발자에게 마이너한 문제지만 국내 개발자들이 크게 생각하는 점이 바로 서비스 제한이 자의적이고 이용과 남용(어뷰징)의 경계가 모호하다는 점입니다.

다음의 REST API의 경우, 일 5천 쿼리, 자바스크립트 API의 경우 일 1만 쿼리의 제한이 있습니다만… 이는 특정 API가 대량의 어뷰징을 하는 것을 사전에 막아 다른 API에 피해가 가지 않게 하기 위한 목적입니다.

REST API는 일 5천 쿼리가 막히는 경우, 그 다음날 1만 쿼리까지 자동으로 증가됩니다. 따라서, 서비스 중단이 크게 일어나지 않도록 운영 중입니다. 제휴 문의를 통해, 서비스에 대해 간단한 소개를 해 주시먄 별도 계약 없이 3만까지 쿼리를 증가시켜 드리고 있습니다. 향후에는 간단한 추가 약관 동의만으로 10만까지 제공해 드릴 예정입니다.

다만, 상업적 목적으로 사용할 경우에도 Daum의 광고 프로그램을 이용하거나 데이터 제휴를 하는 경우에 대해서는 무료로 제공해 드리는 정책을 가지고 있습니다.

오픈 API는 단순히 다음의 이익을 위해 제공하는 것이 아니라 서드파티와 윈윈할 수 있는 방법을 찾기 위해 제공해 드리는 것입니다. 따라서, 오픈 API 이외에도 다음에서 제공하는 모든 서비스가 제휴 API로 제공될 수 있습니다.

여러분이 필요하시면 언제든지 협력해 드리고자 합니다. Daum API를 쓰시면서 문제라고 생각하신 것은 어떤 것이 있으셨나요?

이 글은 Daum DNA 공식 블로그에 게시된 글입니다

- ;

Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. 본 채널은 광고를 비롯 어떠한 수익도 창출하지 않습니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources. This channel does not monetize via any advertising.)