🚨 챗봇을 개발하게 된 계기
SW마에스트로 과정을 진행하면서 우리가 기획한 서비스의 가치를 판단할 필요가 있었다.
하지만 앱을 통해 서비스를 제공하기에는, 유저에 대한 설치/가입 비용 등이 존재해 리스크가 있다고 판단했다.
그렇게 시작하게 된 것이 카카오톡 챗봇 서비스를 통한 파일럿 서비스 개발이다.
기존에 운영하던 프로토타입은 자동화되어 있지 않은 상태였고, 그저 카카오톡 채널에서 유저에게 일일이 답변을 해줘야 했다.
직접 유저를 관리한다는 점에서 휴먼리소스가 쓰일 수 밖에 없었는데, 우리 서비스의 특성상 유저의 메시지에 대한 답장, 엑셀 관리 등 다양한 업무를 진행했어야 했으며, 이에 대해 굉장히 오랜 시간이 소요되곤 했다.
2일에 3h 24m… 해당 시간은 유저 수에 따라 선형적으로 증가하게 된다.
간단한 유저 관리임에도 불구하고 꽤 많은 시간이 유저 관리에 사용되고 있다고 판단했으며, 이는 빠른 서비스 개발에 지장을 준다 생각했다. 챗봇을 통한 자동화가 불가피하다고 생각이 들었으며, 그렇게 우리는 카카오톡 챗봇 개발을 추진했다.
구글링을 통해 다양한 자료를 찾아볼 수 있지만, 가장 도움이 많이 됐던 것은 카카오톡 챗봇 공식 Reference였다.
1️⃣ 챗봇 개발의 장/단점
구글링을 통해 카카오톡 챗봇 개발 방법에 대해서는 많은 레퍼런스를 찾아볼 수 있으므로, 챗봇 개발 방법 보다는 “챗봇을 이용한 서비스 개발의 장단점”에 대해 얘기하고자 한다.
장점
- 프론트엔트(채팅)는 카카오톡이 제공해주므로 백엔드만 작업하면 된다. 클라이언트 개발이 줄어들어 개발 리소스를 현저히 줄일 수 있다.
- 자연어처리 기능을 무료로 제공한다.
- 블록 기능을 통해 원하는 메시지를 편하게 제공할 수 있다.
- 스킬 기능을 통해 커스텀이 필요한 경우 직접 API 서버를 개발하여 메시지를 제공할 수 있다.
단점
- 스킬 기능을 사용하기 위한 프로그래밍 기술이 필요하다.
- 러닝타임이 존재한다. 즉, 챗봇 레퍼런스를 이해하고 개발하기까지 오랜 시간이 소요된다.
- 채팅을 기반으로 서비스를 제공하는데 어려움이 있다. (채팅이라는 제한이 있기 때문에 우리가 사용자에게 제공하고 싶은 기능을 모두 제공하기가 힘들다.)
장단점을 따져가며 개발하는 것은 물론 중요하다.
카카오톡 챗봇의 경우에도 서비스 제공 측면에서는 장/단점이 확실하다고 생각한다.
하지만 온전한 서비스를 제공하기 위해선 카카오톡 챗봇은 적합하지 않다고 생각하며, 초기의 서비스 제공에는 나쁘지 않다고 생각이 든다.
우리의 프로젝트에서도 챗봇은 서비스의 시작을 도와주는 도구일 뿐이지, 마지막은 앱 서비스를 생각하고 있다.
2️⃣ 어떻게 구현했는데?
기존에 사용하던 Spring Boot를 사용해 백엔드 서버를 구현하고, 이를 배포하기 위해 AWS EC2를 이용했다.
잦은 업데이트, 기능 추가 등이 있었기 때문에 CI/CD 구축이 필요했으며 Github Actions를 이용해 빌드 시스템을 구축했다.
아래 코드는 챌린지 참여 현황 메시지를 호출하는 API이다.
@PostMapping("/status") // 챌린지 참여 현황
public HashMap<String, Object> status(@RequestBody KakaoRequestDto kakaoRequestDto) {
String kakaoId = kakaoRequestDto.getUserRequest().getUser().getId(); // 유저의 카카오 아이디
MemberResponseDto memberResponseDto = memberService.findByKakaoId(kakaoId); // 유저 정보
String message = memberResponseDto.getUsername() + "님의 현재 절약 현황입니다.\r"
+ "💸총 절약 금액: " + memberResponseDto.getSavedMoney() + "원\r"
+ "🎁총 포인트: " + memberResponseDto.getReward() + "원";
return new KakaoResponseDto().makeResponseBody(message);
}
3️⃣ Admin 페이지가 필요하다!
개발을 하다보니 Admin 페이지가 필요해졌다.
유저가 인증한 챌린지 사진을 하나하나를 관리할 필요가 있었는데, 빠른 배포를 해야하는 시점에서 Admin 페이지를 직접 구현하는 것에는 시간적 어려움이 있었다.
이 때 알게된 툴이 바로 retool이라는 툴이다.
해당 툴은 직접 database에 접근하여 기본적인 랜딩 페이지를 제공해주는 것이다.
웬만한 랜딩 페이지는 제공해주기 때문에, 기본적인 기능을 사용하는 경우에는 사용해보는 것을 추천한다.
물론 또 카카오톡 챗봇과 같이 장단점이 존재한다.
다음은 Retool을 이용하면서 생각한 필자의 주관적인 생각이다.
장점
- 랜딩 페이지를 제작할 필요가 없기 때문에 개발 시간 단축을 할 수 있다.
단점
- 직접 database에 접근하는 형태이므로 위험성이 있다.
- 원하는 기능이 존재하지 않을 수도 있다.
﹥ 실제 필자는 선택된 모든 유저의 데이터를 수정하는 기능이 필요했는데, 해당 기능이 없어 불편함을 겪었다.
'대외활동 > SW마에스트로 14기' 카테고리의 다른 글
[SWM] SW 마에스트로 14기 서류 합격 후기 (0) | 2023.03.26 |
---|---|
[SWM] SW마에스트로 14기 최종 합격 후기 (0) | 2023.03.23 |