롤 전적 검색 사이트 프로젝트

안유태·2022년 9월 2일
4

프로젝트

목록 보기
1/4
post-thumbnail

3주간 진행했던 토이 프로젝트가 끝이 났다. 스프링부트에서 외부 api를 사용한 것은 처음이고 혼자 진행하다보니 생각보다 시간이 오래 걸렸다.
간단한 프로젝트 주제로 어떤게 좋을까 고민을 하다가 즐겨하는 게임인 리그오브레전드의 검색 사이트를 한번 만들어보자 생각하여 만들어보게 되었다.
riot api key는 https://developer.riotgames.com/ 에서 personal api key를 신청해서 발급받았다. 발급 받는데 대략 3주정도 걸렸다. (사실상 프로젝트 종료 며칠전에 받았다...)

기술 스택

  • Springboot
  • Riot api
  • Thymeleaf
  • jQuery

화면 구성

  • 초기 화면
  • 검색 화면
  • 더보기 화면

회고록

나름대로 꾸민다고 꾸며본건데 역시 디자인쪽은 나랑 잘 안맞는듯 하다.
이번 프로젝트는 db를 사용하지 않고 순수 api만을 사용해 제작하였기 때문에 로딩 시간이 굉장히 길다. 심지어 초기에는 전적 5개를 불러오는데 최소 10초 가량이 걸리기도 하였다.

프로젝트를 진행하면서 어려웠던 점이 여러가지 있었다. 그중 하나는 JSON 처리 방식이었다. 스프링부트에서 api를 처음 다뤄보다보니 처리를 어떻게 해야할까 공부를 해야했고 공부를 하면서 jason-simple 라이브러리에 대해 알게되었다. 거기서 JSONParser, JSONObject, JSONArray 사용 방법을 익힐 수 있었다. 굉장히 편리했기에 다음에도 사용하지 않을까싶다.
다음 어려웠던 점은 로딩 시간 단축이였다. 앞서 말했듯이 로딩 시간이 너무 길었다. aws 프리티어 인스턴스를 사용한다고 감안해도 너무 느렸다. db를 사용하지 않고 매번 많은 양의 api를 호출했기 때문이었던 것 같다. 이부분을 해결하기 위해 병렬 작업을 찾아보았지만 코어가 1개인 프리티어는 스레드 수만 늘어나고 번갈아가며 스케줄링을 해야하므로 병렬 처리가 오히려 더 느려진다는 정보가 있었다. 다른 방법을 찾아보다가 논블록에 대해 알게되었다.
(동기, 비동기, 블록, 논블록) Webclient를 사용하는 방식으로, api 호출을 논블로킹으로 해주었더니 눈에 띄게 속도가 향상되었었다. 5개의 전적을 불러오는데 최소 10초가 걸리던 초반에 비해 지금은 10개의 전적을 불러오는데 5~6초 정도, 빠르면 4초대에도 나오게됐다 !!
물론 webclient의 오류 처리 부분이 아직 미숙해 완전한 논블록은 아니지만 그래도 이정도면 만족한다.

도메인을 이용하는 것도 요번에 처음 해보았다. 생각보다 과정이 어렵지 않아 쉽게 할 수 있었다. yose는 유 서치 매치의 줄임말이다. 그런데 aws route53을 이용하니 요금이 0.5달러가 나왔다..... 이부분은 주의하시길 바란다.

생각만하던 롤 전적 사이트를 직접 만들어보니 색다른 경험이었다. 본래 목표였던 외부 api 사용은 완료했으니 시간이 된다면 db를 연결하여 속도 개선을 한번 도전해 봐야겠다.

주소

소스 코드는 깃허브에 올려두었으니 참고하실 분은 참고 하시기 바랍니다.

profile
공부하는 개발자

0개의 댓글