개인 프로젝트

[PODO Music] 음악 스트리밍 사이트

뮤츠 2023. 1. 10. 00:15

한줄소개

결제를 통해 준비된 곡을 재생 가능한 음악 스트리밍 사이트

 

진행기간

2022.11.01 ~ 2022.11.17

 

기술 스택

Java 11, Java Servlet, TomCat 8.5, JSP, Oracle11g

HTML5, CSS3, JavaScript, JQuery

 

Tools

Eclipse 2022.6, SqlDeveloper, VSCode

MicroSoft Teams, GetterTown

 

팀 구성원

팀원 5인.

 

관련 활동

(디지털컨버전스) 공공데이터를 활용한 Springframework기반 웹 개발자 양성과정 세미프로젝트.

 

담당 내용

프로젝트 총괄(팀장), ERD 통합 및 관리, 회의록 작성, GIT 총괄.

음악 컨트롤러 제작, (관리자 모드) 공지사항 및 문의내역 페이지 제작.

 

GitHub repository

https://github.com/OranGeShine01/Podo-Project-BackUp

로그인 후 홈페이지 메인 화면.

 

우측 하단 컨트롤러 클릭시, DB에 저장된 음악 목록이 등장하며 클릭시 해당 음악이 재생된다.

 

공지사항은 전형적인 CRUD 게시판이며, 댓글 작성 기능 및 조회수 기능은 제외하였음.

문의내역 글쓰기는 회원의 영역이라 관리자 모드에서는 제외되었으며, 대신 답글을 달 수 있다.

글 당 1개만 달 수 있도록 하였다.

최종 ERD.

 

기술 리뷰

1.

 음악 컨트롤러 제작에 있어 난항을 겪었다. 컨트롤러의 다른 부분은 audio 태그를 배워서 금방 구현할 수 있었는데,

타이머 부분이 상당히 까다로웠고, 마치 알고리즘 문제를 푸는 느낌이었음.

그래서인지, 레퍼런스 검색시 개인 프로젝트에서는

타이머 구현이 빠진 경우가 많았다.

 

그 외에도 목록 재생을 어떻게 구현할 것인지도 고민이 많았는데, index 값을 커스텀 속성값으로 부여해서 재생하는 식으로 구현하였다. 컨트롤러 구현을 하면서, 하다보니 대부분이 JS의 영역이라

재미는 있었는데 백엔드 비중은 흔한 CRUD라서 아쉬운 부분이 있었다.

 

2.

 나머지 관리자모드 게시판 영역은 수업때 배웠던대로 그냥 CRUD라 큰 상관은 없었는데,

최초의 협업과정에서 다른 사람들과 영역을 공유하다보니 충돌 아닌 충돌이 있었다.

DAO, Controller 등에서 재활용할 수 있는 부분들에 있어 작명이나 코드 구현 문제로 리팩토링을 다시 하고 작업을 이어나가야 했던 경험이 있었다. (일정상 회원 부분을 구현한 뒤, 관리자 부분을 구현하는 경우)

 

그런 부분을 확실히 잡고 갔으면 더 좋았을텐데, 첫 협업이다보니 시행착오를 거치는 작업으로 받아들였다.

 

3.

 음악 컨트롤러를 제대로 구현하려면 문제점이 있었다. 페이지가 바뀌더라도, 컨트롤러의 상태 (재생곡, 타이머, 재생상태 등) 는 변경되어선 안 되었다. 이를 위해서는 SPA로 구현하거나, 컨트롤러를 팝업창으로 따로 빼두어야 했다.

 

SPA는 첫 프로젝트에서 너무 어렵게 느껴졌다. 5인이서 한 페이지에서 동시에 작업하면, 어마어마한 충돌이 감당하기 어려울 것 같았다. 팝업창은 팀 내부에서 반대가 있었다. 결국 잘 쓰이지 않는 iframe으로 구현하였는데, 문제는 나중에 발생하였다. 음악 컨트롤러 관련 함수가, 아이프레임 내에서 제대로 먹히지 않았던 것.

결국, 이 문제 때문에 전체 곡 재생만 구현할 수 있었고, 아이프레임 내 클릭이벤트에 따른 목록 교체는 구현할 수 없었다.

 

전체후기

 처음으로 진행하는 팀 프로젝트였던만큼, 모든 것이 어색하고 서툴렀다.

Servlet 이라는, 레거시에 가까운 기술스택으로 진행하다보니, 구현할 수 있는 기능도 제한적이었고,

레퍼런스도 거의 국비 프로젝트 위주라 아쉬운 점이 많았다.

 

 또한 팀장이라는 의무감 때문인지, 너무 많은 역할을 맡게 되어

개인 개발보다 팀원들의 고민을 같이하고 해결하는 부분이 많았다.

따라서 파이널 프로젝트에서는 너무 많은 역할을 맡지 않으려 노력하였다.

 

 역할 분담을 컨텐츠 별로 나누다보니, 선후행 작업에 따른 시차의 문제가 있었다.

어떤 팀원은 초반에 너무 바쁘고, 어떤 팀원은 초반에 딱히 할일이 없다가 나중에 너무 바빴다.

다음에는 동선에 맞춰 일정을 짜야겠다는 생각을 하게 되었다.

 

 중간에 코로나에 걸리게 되어서 팀원들에게 너무 미안했다.

최종 발표일 날에서야 격리해제되었는데, 다행히 팀원들이 현장에서 잘 수습해주었다.

팀즈나 게더타운 등으로 어떻게 커버할 수 있었지만, 현장 소통과는 큰 차이가 있었다.

 

 개인적으로 리더형 인재라기보다 팔로워형 인재라고 생각하는데,

팀원들이 모두 실력적으로나, 인성으로나 큰 문제가 없었던 사람들이었다.

그렇기에 프로젝트를 무사히 마칠 수 있었고,

파이널 프로젝트까지 함께할 수 있었다.

'개인 프로젝트' 카테고리의 다른 글

[Buddy] 업무용 협업 툴  (0) 2023.01.10