본문으로 건너뛰기

안마의자 상태 슬랙봇 개발 회고

👀

안마의자 알림 봇
#

배경
#

당시 라이드플럭스의 서울 오피스는 7층과 17층을 사용하고 있었다. 여러 방이 붙은 사무실 자리가 없어서였는데, 복지 차원으로 있는 안마의자는 7층에 있었다.

이후에 17층 사무실에도 리클라이너가 들어오긴 했지만 아예 휴게공간으로 분리되어있는 7층의 안마의자존을 선호하는 사람들이 있었다.

다만 한가지 문제가 있었는데, 현재 안마의자가 사용중인지 알 방법이 없었기 때문에 7층에 갔다가 이미 사용 중인 안마의자를 보고 허탕을 치고 오는 경우가 있었다는 것이다.

회사 건물의 엘레베이터 알고리즘의 성능 이슈로 17층에서 7층까지 가는데 생각보다 시간이 소요되었기 때문에 먼 길을 간 사용자들은 더 허탈할 수밖에 없었다.
나도 그래서 리클라이너를 더 선호했다.

나왔던 의견들
#

이런 이유로 현재 안마의자가 사용중인지 알 수 있으면 좋겠다는 목소리가 나오기 시작했다.
단순히 재실 표찰로 해결할 수 있는 문제는 아니었던 것이, 7층에 붙어있는 표찰을 17층에서 확인할 수 있는 방법이 있어야 하기 때문이다.

cctv 사용
#

cctv를 사용하면 안되나 했는데 알고보니 근무공간을 cctv로 감시하는건 노동법 위반이라고 한다.

구글밋 사용
#

당시 여러 사무실에서 실시간 소통을 위해 24시간 운영 중인 구글밋이 있었기에 해당 방에도 구글밋을 띄워놓으면 어떨까 하는 의견도 있었다.

하지만 cctv와 같은 이유로 반려됐다.

슬랙봇
#

초기 로직
#

그런 이유로 안마의자 사용을 시작할때 시작 버튼을 누르고 반납할 수 있도록 하는 슬랙봇을 만들었다.

원래 회사 슬랙은 무료 버전이라 슬랙봇을 최대 10개까지만 사용할 수 있었다.
그래서 근태 연동 봇을 만들 때에도 OAuth 토큰을 받기 위해 권한을 요청하는 것도 기존의 커스텀 봇에 몰래? 얹혀서 권한을 요청했다.
그런데 마침 슬랙을 pro 버전으로 업그레이드하면서 사용할 수 있는 슬랙봇의 개수가 늘어서 바로 봇을 만들었다.

슬랙봇 등록 역시 근태 연동 봇을 만들던 경험으로 금방 할 수 있었다.

로직은 상당히 간단했는데 자원 하나 (변수)로 현재 사용 중인 사람의 이름을 저장하게 했다.

flask와 slack sdk를 사용해서 상당히 간단하게 구현할 수 있었다.

배포는 마찬가지로 회사 NAS에 했다.

사용자 익명화
#

처음에는 대여 버튼을 누른 사람의 실명이 보이도록 했다.
악질 유저 (malicious user)를 방지하기 위해서인데,
대여를 누르고 반납을 안 하는 경우 책임을 묻기 위해서였다.
악질 유저라 칭하긴 했지만 까먹고 실수로 반납을 안하는 사람이 있을거라 생각했고 실제로 종종 발생했다.

그렇게 첫 프로토타입을 배포한 결과,

안마의자 사용량이 급격히 줄었다..

안마의자를 공개적으로 사용한다는게 아무래도 “나 일 안해요"라고 선언하는거다보니 사용하기가 꺼려지는게 있었다.

실명으로 한 이유를 설명했지만 안마의자를 편하게 사용하고자 하는 취지에 반하는 효과가 밯생했고, 나도 사측으로 오해받는건 싫었기에 수정을 하기로 했다

그래서 표시는 익명으로 하고 오늘의 몇번째 사용자가 빌렸는지는 표시하도록 했다.

대신 로그를 남겨서 누가 반납을 안하면 내가 확인해서 알리기로 했다.

자동 반납 기능
#

usage

내가 굳이 알리지 않더라도 다음날까지 안마의자를 사용할 일은 없기 때문에 00시가 되면 자동으로 반납하도록 했다.

이후에 00시가 아니라 일정 시간 이상 사용하면 자동으로 반납해달라는 피드백이 있어 90분 동안 사용 중이 아니면 자동으로 반납하는 로직을 추가했다.

후기
#

후기

간단하게 구현한 것 치고 꽤나 반응이 좋아서 나도 뿌듯했다.

사람들이 불편은 생각보다 간단한 동작으로도 해소할 수 있다는 걸 알았다.

로그를 열람할 수 있는 나만 아는 사실이지만 일부의 사람이 반복해서 반납을 안했다.

슬랙봇이 돌던 NAS가 강화학습 과제를 위해 데이터를 모으던 NAS여서 한번은 NAS가 꽉 차서 로그가 날아갔다.

이후에는 하루마다 로그를 백업하도록 했다.

그 이외에는 딱히 유지보수할 건 없어서 방치해뒀다.