디스코드 채팅 봇을 통해, 자신의 리그오브레전드 매칭에 배팅을 가미한 서비스입니다.
다음링크를 통해 해당 채팅봇의 테스트 서버에 방문하실 수 있습니다! (현재 폐쇠되었습니다)
또한, 다음 깃허브 링크를 통해 제 프로젝트의 소스를 보실 수 있어요 😁
해당 글은 제가 notion 에 프로젝트에 대해 정리한 글을 토대로 일부 재구성하여 작성한 글입니다!
고등학교 사설 디스코드 서버에 "샤키야 밥" 이라는 생소한 채팅이 올라왔습니다. 제 친구가 만든 디스코드 채팅 봇 "샤키" 의 특정 단어를 명령어로 학교 급식 메뉴를 알려주는 "급식 알리미" 기능을 사용하기 위함 이었습니다.
저는 이러한 디스코드 채팅 봇을 제 주력 언어인 Java 로 개발 할 수 있다는것을 알고, 제가 주로 하는 게임 리그오브레전드와 접목시켜 개발해보기로 하였습니다!
LOL 관련 유틸성 디스코드 봇 "소나"
이미 소나 라는 봇이 리그오브 레전드에대한 대부분의 서비스를 제공하고있었습니다. 전적을 보거나, 게임 패치내역을 보거나 내전 팀을 관리하거나... 저는 새롭고 창의적인 즉, 독점할 수 있는 서비스를 찾아보기로했죠
트위치의 채널 포인트 예측 기능
그러던중, 제가 자주 보는 스트리밍 플랫폼인 "트위치" 의 한 기능이 떠올랐습니다.
바로 "채널 포인트 예측" 이라는 기능인데요. 스트리머가 설정한 2가지의 선택지중, 하나를걸어 채널 포인트를 거는 일종의 배팅 기능입니다.
라고 생각했습니다!
저는 이번 프로젝트에 다음과 같은 기술들을 적용해보고싶었습니다
일단, 스프링에 대한 호기심이 넘쳤기에,
Spring Framewok 의 Bean Container 를 적극적으로 사용해보고싶었습니다!
또한, 다양한 OOP 원칙/패턴 들을 접목시켜보고싶었으며,
무엇보다도 TDD 를 통해 제 코드에 확신을 가지고 싶었습니다!
이 외 다양한 디자인패턴들 을 사용해 서비스를 개발하였습니다!
하고싶은건 별처럼 많은데, 정작시간은 많지 않았습니다. 3개월 내로 끝낼거라 생각했지만,
어떻게하면 더 깨끗한 코드를 만들지?
이런 기능도 추가해보면 어떨까?
라는 생각들에 휩쓸려 결국 개발도중 떠오른 몇몇기능은 배포 후 차차 추가해보기로 하였습니다.
Mockito 를 몰랐을때 작성한 테스트. 사용자 데이터가 잘 가공되는지 확인하는 테스트에서 API 로 데이터를 불러오는 로직전체를 실행하기에 하나의 테스트가 초단위를 넘어가는 것을 보실 수 있습니다.
처음 프로젝트를 개발할땐 "좋아, 내 프로젝트의 목표 테스트 커버리지는 100%다!!" 하고 패기좋게 시작하였지만... 정작 TDD에대해선 잘 이해하지도못하였고, 프로젝트 중반즈음엔 테스트를 어떻게 짜야할지도 몰라, 아예 어플리케이션을 통째로 돌린적도 있었습니다. (NullPointerException 이 저를 반겨주더군요) 결국, 테스트 커버리지는 10퍼센트 미만으로 떨어지게되었고, TDD의 도입은 실패하게 되었습니다... 하지만 덕분에 TDD에 대해 정확히 알게 되었기에, 마냥 슬프지만은 않았습니다.
이번 프로젝트를 진행하면서, 예상치도 못하게 아주 편리한 기능을 발견하였습니다. 바로 인텔리제이의 ShowDiagram 이라는 기능인데요. 여러 클래스간의 구조를 UML 다이어그램으로 보여주는 기능입니다. 저는 이 기능을 활용하여, 제가 SOLID원칙을 잘 지켰는지, 디자인 패턴은 잘 쓰였고 MVC는 제대로 적용되었는지를 알 수 있었습니다.
많은것들을 배웠고, 스프링이나 TDD 에 대해 더욱더 깊은 관심을 가지게 되었습니다. 특히 Spring Bean 의 광활한 활용성을요, 또한, UML 에 대해 알아보다가애자일 방법론이나 폭포수모델, 프로토타입 모델등 여러 소프트웨어 공학에 관련해서도 발을 들이게 되었습니다.
성공하였다고 생각합니다. 비록 지구보다도 넓은 제 욕심을 다 채우진 못하였지만, 제 지금 실력을 알게 해주고, 제가 앞으로 1년간 어떻게 공부해나갈지
방향을 제시해준 이정표 프로젝트라고 생각합니다
비록 아쉬운점도 많았고, 힘든점도 많았던 프로젝트였지만, 저에겐 무엇보다도 사랑스럽고 소중한 프로젝트였습니다. 앞으로 있을 여러 프로젝트들도 기대해주세요! 😀
배팅기능 수요가 많을거같네요,,