Posts

음원 스트리밍 서비스 Music Boot 개발 회고

Spring Boot 기반 음원 스트리밍 서비스에서 이용권과 결제 시스템을 담당하며 배운 백엔드 협업 회고입니다.

프로젝트 개요

Music Boot는 Java와 Spring Boot 학습, 그리고 팀 협업 경험을 목표로 진행한 음원 스트리밍 웹 서비스입니다.

  • 기간: 2021-07 ~ 2021-07
  • 구분: 팀 프로젝트, 4인
  • 역할: 이용권 서비스 및 결제 시스템 백엔드 개발
  • 성과: Spring Boot 기반 백엔드 개발과 Git 협업 경험 확보
  • 링크: GitHub

Music Boot 화면

문제

개인 프로젝트에서는 혼자 빠르게 의사결정하고 구현할 수 있었지만, 실제 서비스 개발에서는 여러 사람이 같은 코드베이스에서 일하는 방식이 중요합니다. 이 프로젝트는 Java와 Spring Boot를 학습하는 것뿐 아니라, 팀원들과 역할을 나누고 Git 기반으로 협업하는 경험을 쌓기 위해 진행했습니다.

저는 서비스의 수익 모델과 직접 연결되는 이용권과 결제 파트를 맡았습니다. 사용자가 이용권을 구매하고, 구독 상태에 따라 음원 접근 권한이 달라지는 흐름을 구현하는 것이 핵심이었습니다.

구현

백엔드는 Java, Spring Boot, Spring Security, JPA를 사용했습니다. 데이터베이스는 Oracle을 사용했고, 빌드는 Gradle 기반으로 진행했습니다.

제가 담당한 영역은 이용권 DB 설계, 결제 API 연동, 사용자 구독 상태 관리였습니다. KakaoPay API를 연동해 결제 요청과 승인 흐름을 구현했고, 결제 결과가 서비스 내부의 이용권 상태로 반영되도록 처리했습니다.

또한 사용자의 구독 상태에 따라 음원 접근 권한을 제어해야 했기 때문에, 단순 결제 기능이 아니라 인증과 권한 흐름까지 함께 고려해야 했습니다.

Music Boot 상세 화면

배운 점

이 프로젝트를 통해 Spring Boot 기반 백엔드 구조와 계층 분리의 필요성을 배웠습니다. 결제처럼 상태 전이가 중요한 기능은 컨트롤러, 서비스, 데이터 모델의 책임을 명확히 나누지 않으면 유지보수가 어려워진다는 것을 느꼈습니다.

외부 결제 API 연동에서는 정상 결제 흐름뿐 아니라 실패, 취소, 검증 흐름까지 고려해야 했습니다. 사용자의 결제 상태가 서비스 권한과 연결되기 때문에 작은 예외도 서비스 경험에 직접 영향을 줄 수 있었습니다.

또한 Git-flow 기반 협업을 경험하면서 좋은 서비스는 혼자 작성한 코드만으로 만들어지지 않는다는 점을 배웠습니다. 팀원과의 소통, 역할 분담, 변경사항 공유가 코드 품질만큼 중요했습니다.