🖥️ 카카오 링크 API 3.5 적용후기

2014-12-09 by real21c

카카오 링크 API 3.5 적용기

  • 카카오톡 메신저의 대화내용 중에서 아래처럼 카카오톡으로 링크를 공유할 수 있는 API가 있다.

kakaolink-api35-1.jpg

  • 그런데 해당 기능이 아래와 같은 메세지와 함께 작동이 안 되는 것 아닌가? ㅠ확인해보니 OK캐쉬백, 언론사 홈페이지 등… 많은 서비스에서도 작동되지 않는 것을 보니, 혹시 카카오 서버에 장애인가 싶었지만,

kakaolink-api35-2.jpg

  • 장애는 아니었다. 다음카카오에서는 기존의 API 2.0 서비스를 6월 30일에 종료한다는 안내와 3.5로 업그레이드를 권장하는 내용을 개발자 홈페이지에 올 초에 공지하였다. 종료일 이후에도 서비스는 잘 되었는데, 12월 초부터는 완전히 막아서인지, 안되는 서비스들이 발견되었다. 사실 공지를 제대로 확인하지 못한 나의 불찰도 있다.

kakaolink-api35-3.jpg

  • 웹개발을 하고 있다면, 기존의 카카오 링크 API 코드를 API 3.5 스펙에 맞춰 변경하는 것은 어렵지 않다.
  • 나는 여러 도매인을 가지고 있는 서비스 소스를 적용하려다 보니 기술적인 문제보다는 관리적인 문제를 신경써야 했고, 나와 비슷한 고민을 하고 있는 누군가에게 도움이 되고자 내 생각을 정리해보려 한다.
  • 물론 정답은 아니고, 이렇게 처리하는 방법도 있다 정도로 봐주면 좋다.

멀티도메인 우회 적용 방법1

  • 카카오 플랫폼의 운영정책은 애플리케이션에서 허용하는 도매인 최대개수(5개), 개발자 1명이 생성할 수 있는 애플리케이션 개수(10개)가 제한되어 있다. 만약 여러 개의 도매인에서 카카오링크를 사용하려 한다면, 도매인 개수, 관리적인 측면을 고려해서 API를 적용해야 한다.

  • 예를 들어서 20개의 도매인에서 카카오링크를 사용하기 위해서는 애플리케이션 4개를 생성해서 아래처럼 해당 KEY와 도매인을 집합으로 연결해주는 방법이 있다. KEY1 = {A1.com, A2.com, A3.com, A4.com, A5.com}
    KEY2 = {A6.com, A7.com, A8.com, A9.com, A10.com}
    KEY3 = {A11.com, A12.com, A13.com, A14.com, A15.com}
    KEY4 = {A16.com, A17.com, A18.com, A19.com, A20.com}

  • 그러나 KEY에서 요청할 수 있는 쿼터가 제한되어 있기 때문에, 특정 도매인(애플리케이션)에서 사용량이 지나치게 많다면, 같은 그룹에 연결된 모든 도매인이 먹통이 될 수 있다. “미꾸라지 한 마리가 물 전체를 흐린다”는 말처럼… 그렇다고 통계/로그를 자주 들여다볼 수는 없기 때문에, 급한대로 호출 수가 많은, 임계치에 다다른 도매인의 경우 새로운 KEY를 발급해서 분리한다면 해결가능하다. 물론 소스코드상에도 해당 KEY를 호출할 수 있도록 이미 구현이 되어야 한다.

멀티도메인 우회 적용 방법2

  • 도매인과 KEY를 1대 1로 매칭시켜주는 것이 관리적인 측면에서 가장 좋다. KEY1 = {A1.com}
    KEY2 = {A2.com}
    KEY3 = {A3.com}

  • 그러나 이 방법도 단점이 존재하는데, 개발자 1명이 생성할 수 있는 최대 애플리케이션은 10개이고, 도매인이 10개 이상 넘어가는 경우에는 한계가 있다. 새로운 개발자 계정을 생성 후, Editor 권한을 부여하면서 팀으로 묶으면 어느 정도 편하게 갈 수 있으나, 개발자 계정을 관리하는 것이 또 다른 업무의 증가로 다가온다.

멀티도메인 우회 적용 방법3

  • 그래서 고민끝에 내가 적용한 방법은 카카오링크를 적용하려는 서비스의 모든 도매인이, 카카오 플랫폼 운영정책에 허용되는 사용량이라면, 링크를 중계해주는 역할 도매인 1개를 지정하여 KEY를 생성해서 등록하면 관리적인 측면에서는 아주 좋은 방식이라고 생각한다.** KEY1 = {xxx.com} xxx.com/100 -> A1.com
    xxx.com/101 -> A2.com
    xxx.com/102 -> A3.com

  • 즉 A1.com, A2.com, A3.com에서 링크가 걸리는 게 아니라, 카카오 플랫폼에는 xxx.com으로 서비스 도매인을 등록한다. bit.ly, goo.gl 등.. 짧은 URL 서비스를 하는 곳처럼, 실제 URL로 대체하는 방식이라고 보면 되는데, 단점은 추가 개발에 소요되는 시간/비용이 필요하다.
  • URL을 분기해주는 스크립트를 따로 구현해야하고, 카카오플랫폼에서 제공하는 통계는 등록된 중계 도매인 xxx.com만 통계조회가 되기 때문에, 도매인별 세부통계를 얻기 위해서는 통계 기능도 만들어야 하고, 매인 도매인 xxx.com에서 문제가 발생 시, 관리하는 모든 도매인에서 서비스 장애가 발생하는 것에 대한 대처 방법의 설계가 필요하다.
  • 엄청난 API 트래픽이 발생되는 서비스라면, 다음카카오에 쿼터 사용량을 늘려달라고 프리미엄 지원을 요청하는 방법도 있다.
  • 정답은 없으니, 개발사에 주어진 시간과 비용으로 알맞게 구현하면 좋다고 생각한다.