[카톡봇] LOCO PROTOCOL

최대 1 분 소요

LoCo 프로토콜이란

  • 겁나 빠른 황소 프로젝트로 개발됨
  • 트래픽이 카카오톡에 많이 몰리면서 더욱더 빠른, 기존의 HTTP POST 방식의 대체제가 필요해짐
  • 따라서 아예 자체적으로 프로토콜을 하나 만듬
  • TCP/IP 바탕으로 전송하는 HTTP Request / Response 프로토콜

Loco 프로토콜의 특징

  • 패킷사이즈 경량화
  • 푸시 시스템 구조 최적화
  • 백엔드 시스템 성능개선
  • 일 6억건에 달하는 메세지를 지연없이 전송가능

패킷사이즈 경량화가 필요한 이유

  • TCP 세그먼트는 40byte 상당의 플래그와 헤더를 포함해 전송한다.
  • 단어 하나 1byte를 전송할때에도 기본 세그먼트들이 포함되어 전송되어진다면 상당히 비효율적이다.
    • Nagel 알고리즘
    • Nagel 알고리즘은 세그먼트 크기가 최대크기가 되지 않으면 전송을 하지 않는다
    • 전송하기에 충분할만큼의 세그먼트가 버퍼에 쌓였을때 전송한다.
    • 크기가 작은 HTTP 메세지는 버퍼가 쌓일때까지 전송이 지연된다.
    • 따라서 카카오톡에 적합하지 않다.

Node KaKao

  • 어떤 한 사용자가 올린 오픈소스 라이브러리
  • LOCO 프로토콜을 통해 패킷이 이동될 때 패킷을 분석하여 카카오톡에 존재하지 않는 기능들을 만들어낼 수가 있다.
  • LOCO 프로토콜을 리버싱해서 만들었다.
  • 카카오톡의 공식 챗봇빌더인 카카오 오픈빌더 i에서 등록절차 등을 거치지 않더라도 챗봇을 만들 수 있다.