나는 이렇게 논다/글또 슬랙 봇 개발기

카테고리 수집하려다 슬랙 봇까지 개발해버린 건에 대하여…

daco2020 2023. 2. 26. 23:58
반응형

*이 글은 글또 8기에서 사용하는 슬랙 봇 [또봇]의 개발 이야기입니다.
*글또는 ‘글 쓰는 또라이가 세상을 바꾼다’라는 뜻으로 슬랙을 활용에 2주에 한 번 글을 올리는 개발자 글쓰기 커뮤니티입니다.


 
 
 

모든 글을 쉽게 검색할 수 있도록


작년에 나는 글또 7기 [백엔드-인프라 e] 조로 참여했다. 글또는 조별로 서로의 글을 공유하고 피드백을 나누는데, 백엔드의 경우 같은 직무라도 사용하는 언어나 기술에 따라 다루는 글 내용이 천차만별이었다.

나는 비교적 소수가 사용하는 Python을 사용하기 때문에 다른 기술을 사용하는 분들의 글이 잘 읽히지 않았다. 예를 들어 자바 스프링에 대한 내용은 내겐 이해하기도 어려울뿐더러 큰 도움이 되지 않았다.(내 글 또한 그분들에게 도움이 되지 않았을 것이다.) 이러다 보니 회차가 진행될수록 글쓰기에 대한 부담은 커지고 읽고 싶은 글의 수도 점차 줄어들었다.
 
글또 8기 운영진을 신청하면서 내가 겪은 이 문제를 어떻게 해결할 수 있을까 고민했다. 문득 한 가지 아이디어가 떠올랐다. 이번 8기에서는 모든 글을 쉽게 검색할 수 있도록 하면 어떨까?
 
기존에는 내가 속한 채널의 글만 볼 수 있었고 그마저도 기한이 지나면 글이 지워졌다.(무료 버전 슬랙은 특정 시간이 지나면 메시지가 지워진다) 또한 링크로 글을 제출했기 때문에 글의 카테고리나 주제가 무엇인지 직접 들어가보지 않는 이상 정확히 알기 어려웠다.

나는 사용자가 글을 쉽게 찾고, 읽고, 소통할 수 있는 환경을 만들어주고 싶었다.
그렇다면 글을 제출할 때 링크뿐만 아니라 '카테고리'나 '태그' 같은 메타 데이터도 함께 수집하면 어떨까. 그렇게 수집한 데이터들을 한 곳에 모아둔다면, 사용자는 채널이나 기한에 구애받지 않고 원하는 글을 손쉽게 찾아볼 수 있을 것이다.


 
 
 

 

카테고리 수집

글을 쉽게 검색하기 위해 내가 가장 먼저 해야할 일은 '카테고리'와 같은 메타 데이터를 수집하는 일이었다. 그렇다면 데이터는 어떻게 수집할 수 있을까?
 

기존에는 사용자가 글 링크를 올리고 해당 메시지에 [제출] 이모지를 남기면 이를 추적하여 데이터를 수집했다. 그렇다면 마찬가지로 [카테고리] 이모지를 추가하면 될까? 하지만 이모지를 추가하는 방식에는 다음의 문제가 있었다.
 
- 이모지를 추가하는 것은 결국 사용자가 직접 하는 것이기에 누락되거나 오류가 발생할 가능성이 높다.
- [제출]처럼 고정적이지 않은 이모지라면 어떤 이모지가 카테고리를 의미하는지 알기 어렵다. 
- 사용자 입장에서 액션이 하나 더 추가되는 것이므로 피로도가 높아진다.
 
 
결국 이 문제를 해결하려면 기존과는 다른 방식의 제출 프로세스가 필요해보였다. 이러한 고민을 운영진 회의 때 나누었고 결론적으로 슬랙 봇을 활용해 보자는 의견이 나왔다. 슬랙 봇은 제출하는 데이터를 강제할 수 있고(데이터가 누락되지 않고), 더 직관적인 UI를 제공할 수 있으며(모달과 응답 메시지), 서버를 통해 데이터 수집을 100% 자동화할 수 있었다.
 

운영진-자동화팀 회의 때 작성했던 메모

 
 
 
 
 

슬랙 봇 '또봇'

당시만 해도 나는 슬랙 봇에 대해 아무것도 모르는 상태였다. 다행히 같은 자동화팀이었던 종윤 님께서 [대나무숲 슬랙 앱]을 만드신 경험이 있었고 내게 이런저런 정보들을 알려주셨다. 이를 바탕으로 레퍼런스와 공식문서를 찾아보며 ‘제출’과 '수집'기능만 있는 첫 번째 프로토타입을 개발했다.
 
 
아래는 첫 번째 프로토타입(글똥이)을 녹화한 영상이다. 이 영상을 운영진분들께 공유하여 피드백을 요청했다.

프로토타입의 이름은 '글똥이'였다. 이후에 수현님 제안으로 '또봇'으로 이름을 바꾸었다.

 

당시 받았던 피드백과 액션플랜

 
피드백을 받고, 반영하고, 다시 피드백을 받고, 이를 몇 차례 반복하면서 점차 지금의 ‘또봇’ 형태로 자리 잡기 시작했다. 특히 날카로운 피드백을 남겨주신 지환님, 그리고 성윤 님께 감사하다. 덕분에 ‘또봇’을 사용자 관점에서 생각해 볼 수 있었고, 내가 놓치고 있던 로직과 디테일도 보완할 수 있었다.
 
 
 
 

 
 

그래서 무엇이 달라졌나?

 
기존 이모지를 통한 글 제출
 
기존에는 글을 올리면 제출 이모지를 붙여야 했다. 언뜻 보면 쉽고 간단해 보이지만 사용자가 직접 붙인다는 점에서 몇 가지 문제가 있었다. 예를 들면 글은 제출했지만 이모지를 누락하여 [제출]로 체크되지 않는다거나, 다른 사람의 글에 이모지를 붙이는 등 이모지를 잘못 사용하는 경우다. [제출]뿐만 아니라 [패스]와 [피드백]도 이모지 기반으로 추적했기 때문에 오류의 빈도가 적진 않았을 것이다.

 

운영하는 입장에서도 이모지 추적을 위해 매 마감일마다 관련 스크립트를 실행해야 했다. 또한 오류가 있다면 이를 확인하고 바로잡는 수고가 들었다.
 

[제출] 이모지를 사용자가 직접 붙여야만 제출로 인정된다.

 

마찬가지로 피드백 또한 [피드백] 이모지를 직접 붙여야 했다.


 


 
 
 
 
 

 
또봇을 통한 글 제출
 

 
또봇의 경우 '/제출'과 같은 명령어를 통해 호출한다. 사용자가 '/제출' 명령어를 입력하면 왼쪽의 모달창이 나타난다. 모달창에서 글 링크와 카테고리를 입력 후 하단 제출버튼을 누르면 오른쪽 이미지처럼 또봇이 슬랙 메시지를 응답해 준다.
 

또봇은 이모지 제출 방식과 비교해 다음의 이점들을 가진다.
- 필수로 받는 값들을 강제하기 때문에 누락되는 데이터가 없다.
- 또봇이 글을 대신 올려주기 때문에 일관성 있는 메시지 형태를 갖는다.
- 글의 카테고리와 태그 같은 메타 데이터들을 수집할 수 있다.
- 서버를 통해 제출하기 때문에 24시간 자동화로 운영된다.
- 글 데이터와 관련하여 유연한 확장성을 가진다. (e.g. 제출내역 확인)
 
 
물론 문제가 완전히 없는 건 아니었다. 사용자가 실수로 글을 잘못 제출할 수 있고, 링크를 중복으로 제출할 수도 있었다. 이런 경우에는 사용자가 직접 운영 측에게 알리고 운영 측이 잘못된 데이터를 수동으로 삭제해주어야 한다. 하지만 데이터 누락 오류가 아니라는 점, 오류가 가시적으로 드러난다는 점에서 그 빈도와 치명도는 낮아졌다고 생각한다.



 
 

 
 
 

또봇 데뷔

본격적으로 글또 8기가 시작되기 전, 유튜브로 글또 OT가 진행되었다. 그리고 성윤 님의 소개로 또봇이 공개되었다.
 

 
만약 또봇이 OT 시작 전까지 완성되지 못했다면 데뷔하지 못했을 거다. 글 제출 방식이 도중에 바뀌게 되면 사용자 입장에서 큰 혼란이 생길 거고 운영 쪽에서도 큰 부담이 된다. 설날 연휴가 껴있어서인지? 다행스럽게도 개발을 제시간에 완료할 수 있었고 실제 글또 8기에서 사용하고 있다.
 
현 시간 기준(2회 차 마감 직전) 패스를 포함한 제출은 총 667건이다. 4주 동안 667번 또봇이 호출된 셈이다. [제출내역] 확인까지 합하면 사용빈도는 훨씬 더 많을 것이다.
 
 
 


 
 

그렇게 성공적으로 마무리될 것 같았던 또봇.

 
사용자들로부터 제보가 올라오기 시작하는데, 다음에 계속…
 
 
 
 
 

반응형