Computer/Java, Kotlin

BananaAllergy 개발 일기 - Java 프로그래밍

kentakang 2018. 4. 26. 03:39
반응형

프로그래밍은 자신이 가장 필요로 하는 것을 개발할 때, 가장 재미있는 것 같다.

평소에도 프로그래밍을 좋아하는 편이지만, 이번엔 내가 원해서 제작하게 된거라 더 재미 있었다.

이 서비스를 개발하게 된 계기는 네이버 TV의 검색 시스템이다.



나는 최근 올라온 바나나 알러지 원숭이 음악방송 무대가 보고 싶어 검색을 했는데, 내가 원하는 영상들은 잘 보이지 않는다.

내 생각으로는 태그 기반의 검색 시스템을 갖고 있어 이런 결과가 나오는 것 같다.

바나나 알러지 원숭이는 그 경우의 수가 한정적이라서 중간 중간 있는 음악방송 영상들을 쉽게 찾을 수 있지만 가수 이름으로 검색하면 그렇지 않다.



오마이걸로 검색 뒤 최신순으로 정렬하면 음악 방송 영상들은 하나도 안보인다.

이외에도 어느 정도 페이지를 넘어가면 같은 영상들만 계속 목록에 나온다던가 하는 자잘한 오류들이 있다.

내가 네이버 TV 검색 시스템을 고칠 수는 없으니, 내가 원하는 영상이라도 골라보기 위해서 개발한게 BananaAllergy다.

사실 처음에는 바나나 알러지 원숭이의 음악 방송 무대만 모아보고 싶어서 개발하게 되었는데,

개발하다 보니 이를 네이버 TV 전체로 범위를 넓혀서, 검색 기능을 만들어도 되겠다고 생각해서 추가로 서비스를 개발하고 있다.


BananaAllergy 서비스의 모습


의외로 서비스를 개발하는 것 자체는 어렵지 않았다.

Java는 라이브러리가 잘 구축되어 있어 jsoup이라는 라이브러리를 통해 간단하게 파싱할 수 있었고,

웹 페이지 또한 JSP로 쉽게 만들 수 있었다.

여기에 관련 된 기능의 소스를 하나 하나 적기에는 비효율적이라서 많이 부족한 소스 코드이지만 GitHub에 공개했다.

내가 어느정도 완성되었다고 생각하기 까지는 2일 정도의 개발 기간이 걸렸다.

첫 번째 날에는 영상을 가져오고 채널 별로 분류하는 파서를 개발하고, 파싱한 리스트를 보여주는 JSP 페이지를 만들었다.

하지만 이때는 저화질의 썸네일만 가져와 썸네일이 깨져 보이는 문제가 있었다.

두 번째 날에는 많은 수정 사항들이 있었는데,

가장 어려웠던 과정은 서버를 구축하는 과정이였다.

Linux 서버에 톰캣을 올리고, 톰캣에 바로 Let's Encrypt를 적용하는 건 어려워서 nginx를 통해 프록싱했다.

https는 성공적으로 적용되었지만, 썸네일 이미지를 링크하는 네이버 TV는 HTTP를 사용하는 관계로 이미지를 제공하는 구조를 수정했다.

1일차에 구축했던 파서는 이미지의 주소를 따와서 바로 링크했다면, 

2일차에서는 이미지 다운로더를 새로 개발하여 이미지를 다운 받고, 로컬 서버에서 이미지를 링크했다.

그 과정에서 네이버 TV에서 고화질 썸네일을 받아오는 방법을 발견해서, 썸네일 또한 고화질로 나올 수 있게 수정했다.


어느 정도 서비스가 완성되고 나니까 뿌듯한 것 같다.

특히 내가 원하는 서비스여서 그런지 나도 자주 이용하게 된다.

앞으로도 이런 식의 개발을 자주 해봐야겠다.

반응형