코로나19 때문에 카톡 '뉴스봇'도 바빠…엔지니어가 택한 해결법은?

이프 카카오, 백엔드 프로세스 효율화 과정 소개

컴퓨팅입력 :2020/11/19 18:13    수정: 2020/11/20 08:32

코로나19가 급격히 확산하던 시기 카카오톡 ‘뉴스봇’이 처리해야 하는 뉴스 수도 대폭 늘었다. 뉴스봇은 카카오톡 사용자가 원하는 키워드의 실시간 뉴스나, 정해진 시간에 하루치 뉴스를 갈무리 했다 자동으로 받아볼 수 있는 챗봇 서비스다. 코로나19 키워드의 알림 수는 코로나19 직전 대비 무려 10배나 증가했다. 그에 따라 자꾸만 뉴스봇이 이용자가 정한 시간보다 뉴스 알림을 늦게 보내는 일이 생겼다. 1분의 지연도 허락하지 않는 카카오톡 뉴스봇 엔지니어는 비효율을 발생하는 부분을 수정해 다시 정각에 뉴스를 내보낼 수 있도록 했다.

카카오 이선영 소프트웨어 엔지니어는 18일 온라인으로 열린 개발자 컨퍼런스 ‘if(카카오) 2020’에서 뉴스봇의 백엔드 기본 작동 원리 및 코로나19 위기상황에서 문제를 해결했던 경험에 대해 소개했다.

카카오톡 뉴스봇

지난해 4월 처음 공개된 뉴스봇은 크게 세 가지 카테고리로 뉴스봇 구독자에게 뉴스 목록을 보내준다. 사용자가 타이핑 한 키워드를 검색하면 최신 뉴스 5건을 보여주는 ‘키워드 검색 목록’, 새 뉴스가 뜨면 사용자에게 이전과 중복 없이 최대 5개 뉴스를 보여주는 ‘뜨면줘 알림 목록’, 하루에 한 번 사용자가 설정한 시간에 보내주는 ‘모아줘 알림 목록’ 등이다. 이 목록의 뒷단으로 들어가면 개발자가 뉴스 데이터가 서버에서 이용자 화면에까지 노출되기까지 다양한 명령어들로 구성됐다.

코로나19로 알림이 늦게 도착했을 때 문제가 된 목록은 모아줘 알림 목록이었다.

코로나19로 인해 뉴스봇이 처리해야 할 키워드 값이 대폭 증가했다.

이선영 엔지니어는 “(뉴스봇을 운영해오던 중) 어느날 알림이 좀 늦게 온다는 제보를 받았다. 예기치 못한 코로나19 상황이 발생했기 때문이었다”면서 “사용자는 관심 지역의 뉴스를 빠르게 찾아보고 알림 받기를 원했는데, 그런 사용자들이 많아짐에 따라 알림이 점점 밀리고 있었다”고 말했다.

그렇다고 처음부터 뉴스봇을 다시 설계할 순 없었고, 문제가 되는 부분을 빠르게 찾아 해결하기로 했다. 먼저 업데이트 된 키워드 키 목록을 정제하는 방법을 택했다. 키워드 알림 수가 코로나19 발생 대비 10배 증가한 상황에서 ‘갱신되는 키는 누군가는 알림을 받을 것’이란 초기 전제가 비효율을 초래한 것이다. 즉 24시간 내 업데이트 되는 뉴스 속 키워드에 모두 키 값을 걸기보다는 이용자가 요청한 키워드만 값을 매겨야 했다. 해당 시점에 누구에게도 알림을 주지 않는 키워드를 불필요하게 처리하느라 시간을 낭비하지 않아야 했다.

코로나19로 뉴스봇 모아줘 알림이 늦어지는 문제가 발생했다. 이에 뉴스봇 팀은 불필요한 키워드 키 값을 주는 비효율을 제거하고, 나이파이 프로세스도 수정했다.

불필요한 키워드 처리 문제를 해결했는데도 1분씩 알림이 지연되는 일이 이어졌다. 원인은 또 다른 데 있었다. 나이파이 프로세스 과정에서 비효율이 발생했다. 뉴스봇은 한 번 실행으로 여러 이벤트를 발생시키는 부분이 필요한데 바로 나이파이를 통해 가능하다. 나이파이는 웹기반의 데이터플로우시스템으로, 사용자가 데이터 플로우를 쉽게 설계하고 제어할 수 있다. 각 처리 단계별로 인아웃 처리량과 데이터 모니터링도 쉽게 할 수 있는 부분이다.

관련기사

이 엔지니어는 “나이파이에서는 각 프로세스 별로 스케쥴링 기능을 제공하는데, 프라이머리 노드에서만 실행하고 스케줄링을 걸었음에도 자꾸 전체 노드에서 실행되는 문제가 있었다”면서 “그래서 스케줄링을 이용하지 않고 에어플로우 배치로 나이파이 한 개 노드를 API로 호출하고 있었던 것”이라고 말했다.

이어 “그렇게 호출하고 있던 트리거로 인해 에어플로우 잡이 무려 1분가량 늦게 호출됐다”며 “그런데 매우 다행스럽게도 최근 변경한(업데이트 된) 나이파이 버전에서는 크로니에 프라이머리 노드에서만 잘 실행됐다”고 덧붙였다.