본문 바로가기

회고

03년간 챗봇을 운영해온 이야기

 

고등학교 1학년이었던 2016년에 간단한 챗봇 하나를 개발했고, 여러 업데이트와 시행착오를 겪으며 운영한지 벌써 3년이 되었습니다.

이 서비스를 3년 동안 운영해오면서 느낀 것들, 배운 것들을 공유해보려 합니다.

 

 

용산03버스_봇

용산03 버스의 도착예정시간과 버스의 크기를 알려주는 서비스입니다. - 공간정보동아리 SmartSpace

pf.kakao.com

 

이 챗봇은 저희 학교 학생들이 통학할 때 주로 타는 버스인 용산 03이라는 버스의 도착 정보와 크기를 알려주는 챗봇입니다.

현재는 매일 30~40명 정도가 이 챗봇을 사용하고 있습니다.

 

따라 하기의 기획

챗봇을 처음 보게 된 것은, 오늘의 급식을 알려주는 챗봇이었습니다. 

다른 동아리에서 만들었지만, 이 챗봇이라는 것을 처음 접해보고 카카오톡 같은 메신저 플랫폼을 통해서

빠르게 정보를 받을 수 있다는 것에 많은 흥미를 가졌습니다.

그 작품을 보고 떠오른 것은 "어? 버스 정보를 이렇게 보여줘도 될 것 같은데?"였습니다.

빠르게 정보를 얻어야 하는 버스 도착 정보를 챗봇이라는 것으로 불러와 보자! 이렇게 생각하고 개발을 시작했습니다.

 

그렇게 마음을 먹은후, 그 급식 봇을 개발했던 선배님에게 달려가 이 봇을 어떻게 개발했나 여쭈어보았습니다.

하지만 서버도 모르던 저에게는 너무나도 어려웠고, 모르는 것이나, 안 풀리는 것들은 직접 물어보거나 찾아보며 해결하려 했습니다.

많은 친구들에게 이 작품을 이야기해주고 , 피드백을 받으려 했지만, 이미 다 있는 거라고 하기도 하고, 모른다고 하였습니다.

사실상 피드백은 0에 가까웠고, 저는 이 서비스만이 제공할 수 있는 것을 생각해 보았습니다.

그때 떠오른 것은 버스의 크기였는데요,

 

https://cy.cyworld.com/home/40954079/post/54BB8B23069573825A768401

위 사진과 같은 작은 버스, 그리고 큰 버스 (일반적인 버스)를 구별해주면 어떨까?라고 생각하였습니다.

그리고 시작을 했을 때, 어떻게 저 버스들을 구별할 것인가라는 문제를 곰곰이 생각해 보았고, 

아래와 같은 생각들을 했었습니다. 

 

  1. 빅데이터를 이용해 오는 버스들을 구별하자
  2. 하드웨어를 달아서 구현하자
  3. CCTV로 불러오자

나는 왜 그렇게 밖에 생각을 못했는가

그러던 어느 날, 차량번호를 보게 되고, 차량번호로 구별하면 되겠구나!라고 결정한 후, 버스정보를 제공하는 OpenAPI들을 찾아보았습니다

https://www.data.go.kr/dataset/15000303/openapi.do

 

버스정류장 고유번호를 입력하여 , 해당 정류장에 도착하는 버스의 도착 예정시간 + 차량 정보를 알려주는 

해당 API를 활용하기로 하고 그렇게 개발을 시작했습니다.

 

지옥의 개발 

매일매일이 새로워! 짜릿해!

 

그때 당시 제 능력으로 가능한 건 jQuery에서 Ajax로 외부 API 불러오는 것이 전부였는데, 그때에서야 

맨 처음 이 프로젝트를 시작하겠다 하고, 매일 새로운 것을 공부하며 머리가 아파왔습니다.

그렇지만, 목표가 잡힌 이상 매일 재밌고 즐겁게 공부할 수 있었습니다. 

어려운 것은 직접 뛰어다니며 알아보거나 찾아보고, 매일 삽질을 해도 즐겁게 작업 할 수 있기도 했고요.

 

개발 외에도 다른 이슈도 있었는데, API에서 보이는 차량 번호는 차량 ID였기 때문에,

해당 ID와 맞는 버스번호, 크기를 전부 수작업으로 알아야 했습니다.

2주 ~ 3주를 매일 버스 번호를 체크하며, 이 코드는 큰 버스인지 작은 버스 인지 기록해야 했죠.

 

하지만 제일 어려웠던 것은 사용자에게 어떻게 보이는가? 였습니다.

앱보다 빠르게 효율적으로 전달하는 것을 중요하게 생각했기 때문에 그에 따라서 데이터가 보이는 방식,

그리고 최대한 빠르게 조회할 수 있게 하는 접근 순서를 많이 생각했습니다.

 

많은 친구들에게 의견을 구했고, 많은 이야기를 하고 고민을 한끝에 , 아래와 같은 구조로 결정하였는데요.

 

 

빠른 조회 - 학생들이 가장 많이 타는 정류장 ( 등교 및 하교 방향)을 바로 조회합니다. ( 버튼형 )
기타 정류장 조회 -  기타 빠른 조회에서 나오지 않는 정류장을 조회합니다. ( 입력형 & 검색형 )

진짜 별거 아닌 것 같은데

 

이 챗봇에서 가장 중요하게 생각했던 빠른 정보전달을 위해,

빠른 조회에서는 버스를 가장 많이 타는 정류장을 버튼을 통해 빠르게 조회할 수 있게 하고,

기타 정류장 조회에서는 검색이나 정류장 고유번호를 통해 모든 정류장을 조회할 수 있게 하였습니다.

 

그리고 마침내 개발을 마무리하고 처음으로 선배님과 친구들에게 공개를 했습니다.

 

어렵고 어려웠던 운영기

운영기를 한짤로 요약하면

처음 공개한 후, 정말 많은 피드백들이 있었습니다

하지만 가장 대표적인 피드백들은 다음과 같습니다

데이터가 왜 정확하지가 않아요?
이거 5분 후에 온다고 했는데 지금 왔는데요?
이거 큰 버스 온다고 했는데 작은 버스 와요!
12초 후에 온다는데 안 오는데요?

 

공개 당시 제일 많이 들었던 피드백이며, 현재도 많이 듣고 있는 피드백입니다.

우선 데이터는 제가 터치할 수 없는 부분이었는데,

외부에서 API를 긁어 오는 것이니,  크게 건드릴 수가 없없죠

하지만 다음과 같은 사례들은 수정하는 것이 맞다 생각했습니다.

 

0분 32초 [ 0번째 정류장 전 ]

 

원래라면 곧 도착으로 나와야 할 데이터가, 0분 32초로 나와있는 건 이상했습니다.

그래서 0분 / 1분 등의 데이터는 모두 곧 도착으로 처리하였으며, 

출력 형식 또한 위 방식에서 아래 방식으로 변경하였습니다.

 

이번 버스 : 큰 버스
2 정류장 전,  5분 후 도착

 

추가적으로, 사용자에게 더 명확한 데이터를 제공하기 위해,

버스 별 이미지를 출력하게 하였습니다.

 

나름 디자인까지 다했던..

 

그 외에도 정말 중요한 시간에 서버가 맛이 갔다던지,

하교 조회에서 버스가 항상 값이 똑같다 던 지 등의 여러 이야기를 많이 들었고,

일부 기능 수정이나 기능 추가에 많은 도움이 되었습니다 

 

 

결론

길다면 길고 짧다면 짧았던 고등학생 3년 재학 중에 제가 만들고 싶었던 작품들 중 하나를 완성했다 생각합니다.

두 달 가까이 이 프로젝트를 진행하며, OpenAPI와 서버를 공부했고,

3년 동안 서비스를 운영하며 서비스에 대한 피드백을 받거나 공유할 수 있는 좋은 기회이기도 했고요.

 

이 프로젝트를 통해 배운 것이 정말 많았습니다.

해당 서비스에서 사용자에게 가장 필요한 정보는 무엇인지,

어떻게 데이터를 사용자에게 맞게, 그리고 서비스에 맞게 전달해줄지 등에 대해

많은 것을 고민해볼 수 있는 기회였습니다.

 

곧 카카오톡 API형이 종료되고, Kakao i Builder로 개발해야 하는데, 그때 다시 한번 글을 써보려 합니다

감사합니다 :) 

 

'회고' 카테고리의 다른 글

경력 2년차, 다사다난 했던 2020년의 회고  (1) 2021.01.03
경력 1년차, 20살 개발자의 회고  (1) 2020.01.01