최근 회사에서 fluentd, hdfs, golang 을 기반으로 프로젝트를 진행하고 있어서 조사하다가 LINE BusinessConnect: Error Detection and Notification Using Fluentd and Norikra « LINE Engineers’ Blog 를 보게 되었습니다. 그 내용을 정리합니다.

LINE BusinessConnect 란?

“자동응답이 가능한 공식 라인 계정” 이라고 생각하면 됩니다. 이것이 카톡의 “플러스 친구” 와 동일한 것일까 싶기도 합니다. LINE 이 기업을 위해 CMS 를 제공하고, 기업의 운영자가 CMS 에서 어떤 메시지를 쓰면 사용자에게 라인 메시지가 발송되는 구조입니다. 사용자가 보낸 메시지를 읽고 내용에 따라 자동으로 답장을 하는 프로그램도 만들 수 있는데, 이 부분은 각 기업이 구현해야 하는 듯합니다.

예를 들면 이런 흐름입니다. 사용자 이상욱이 “서울 택시” 공식 계정을 친구 추가하고, 자신의 위치를 입력해서 보냅니다. 그러면 택시가 옵니다.

문제

기업 측에서 “제대로 구현한 것 같은데, 메시지가 오지 않는다” 와 같은 문의가 들어옵니다.

해결

이미지

탐지된 오류를 fluentd 로 보냅니다. fluentd 는 들어온 데이터를 Norikra 로 보냈다가 다시 가져옵니다. Norikra1분 당 50회 이상 발생했는가? 같은 정보를 처리하기 위한 부분인 것 같습니다. fluentd 는 다시 결과를 MySQL 로 저장하고, 일부는 email 알림으로 담당자에게 보냅니다.

내가 보기에 특이한 점

fluentd 가 TCP가 아니라 HTTP로 로그 스트림을 받습니다. active/standby 구조로 2대를 쓴다고 하는 것을 보면, 발생하는 이벤트 수가 매우 적어서 HTTP로 받아도 충분할 것 같습니다. Norikra 성능 테스트로 초당 5,000 의 부하를 주었는데 테스트로는 작아서 제게 도움이 되지는 않습니다. 게다가 fluentd 성능 테스트는 없습니다. 그래도 “x시간 동안 x오류가 x번 발생하면 개발자에게 이메일을 준다” 같은 사용 사례를 얻은 것만으로 도움이 되는 글입니다.