[Spotify Web API 1편] 주제 및 기능 설계

2026. 6. 5. 02:36·개인 프로젝트

내일 배움 캠프를 수료하고, 그동안 배운 것을 정리하고 싶어서 개인프로젝트를 하려고 한다.

 

이번 프로젝트의 목표를 정해보자면?

  1. 인증/인가 구현
  2. CI/CD 구성 및 AWS 배포
  3. 모니터링 구성
  4. Jmeter or k6로 부하테스트 하기
  5. 도메인/API/테이블/인프라 설계서 작성
  6. 모노레포의 MSA 환경 구성
  7. 내가 하고 싶은 주제로 서비스 만들기
  8. 실 사용자의 피드백받기

프로젝트 주제

밴드인들을 위한 전문 커뮤니티가 없는 것 같아서 밴드 커뮤니티로 방향성을 정했다.

평소 지인들과 두 달에 한번 정도는 합주하는데, 그 경험을 살려서 필요한 기능을 고민해 봤다.

일단 나는 2개의 밴드에 속해있다.

  • 직장인 밴드
  • 친구들끼리 하는 밴드

직장인들로 구성된 밴드인데 기존에 불편한 점을 적어보면..

  1. 카톡방에 올린 사진이 만료가 된다.
  2. 이전에 갔던 합주실이 기억이 안 나서 찾는데 오래 걸렸던 기억이 있다.
  3. 매번 악보 및 파트를 공유하는데 카톡방에 그냥 적으니 정리가 잘 안 됐다.

합주날짜를 기준으로 같은 밴드멤버만 볼 수 있는 페이지가 만들어지고, 그 안에 합주내용을 기록하면 좋지 않을까?

  • 합주실 이름, 위치
  • 사진
  • 합주 영상
  • 인스타 스레드 같은 댓글 등

친구들끼리 하는 밴드는 즉흥적으로 초대해서 합주를 하는 경우가 많아서
악기 구성 자체가 풀세션이 아닌 경우가 많았는데 이에 대한 불편함으로는

  1. 악보바다 같은 사이트의 악보는 원곡기준이어서 풀세션인 경우가 많음.
  2. 원곡과 악기구성이 다르다면 편곡을 해야 함.
  3. 편곡된 악보 등 관련 정보가 적음.

그래서! 곡을 검색하고 해당 곡의 합주 경험을 글로 남기면 좋을 거 같았다.

  • 자신의 밴드가 어떤 악기구성으로 합주를 했는지
  • 합주할 때의 팁
    • 키보드 연주자가 없어서 일렉이 건반파트를 커버했다면
    • 일렉 연주자가 없어서 키보드가 커버했다면

같은 고민을 하는 사람이 이 글을 보고 DM도 날릴 수도 있다.

핵심 기능 설명

정리하면, 이 프로젝트의 기능은 크게 3가지다.

  1. 합주곡 중심의 '위키형 게시판' 시스템 (정보 공유)
  2. 유저/밴드 간 '네트워킹 & 커뮤니션' 시스템 (관계 확장)
  3. 밴드 멤버 전용 '프라이빗 타임라인' 시스템 (팀 결속 및 추억 저장)

위키형 게시판 기능

먼저 '위키형 게시판'의 뜻은 키워드를 기준으로 글이 저장된다는 것을 의미한다.

 

예를 들어, 데이식스의 "한 페이지가 될 수 있게"라는 곡으로 A작성자가 글을 작성하면

"한 페이지가 될 수 있게"라는 페이지에 A작성자의 글이 저장된다.

 

- 키워드(노래 제목)로 검색 및 저장

  • 사용자는 검색창에 이번에 합주하고 싶은 곡명을 검색한다.
  • 해당 곡에 실린 글이 조회된다.
  • 그 페이지에 새로 글을 작성할 수 있다.

이때 곡 제목 검색 시, Spotify Web API를 통해서 나온 곡을 선택하는 형식이기에
오타나 띄어쓰기 실수 같은 상황을 방지할 수 있다.

- 글을 작성할 때의 시나리오

  1. 사용자가 노래 제목 검색
  2. 백엔드 서버에서 스포티파이 Web API를 통해 전달받은 노래 제목으로 정확도가 높은 순으로 곡 목록을 조회 및 프런트로 전달
  3. 사용자는 조회된 노래 목록에서 앨범표지, 제목, 아티스트명을 확인 후 원하는 곡을 클릭
  4. 합주했을 때의 악기 구성을 체크
  5. 자신이 속한 밴드 중 어떤 밴드로 참여했는지 선택 후 글 작성 페이지로 이동
  6. 글 본문을 작성(사진, 합주한 유튜브 영상 업로드, 연주 Tip 작성)
  7. 편곡한 악보가 있다면 판매 링크 공유

유저/밴드 간 SNS(팔로우, DM)

유저가 적은 곡에 대한 후기를 보고 그 사람을 팔로우하고, DM을 통해 연주 방법 등에 대해 질문한다.

이 악기구성으로 해당곡을 합주할 때의 정보공유가 이 사이트의 핵심목적이기 때문이다.

밴드 멤버 전용 '프라이빗 타임라인' 시스템

합주날짜 전/후로 밴드멤버들만 볼 수 있는 기능 제공

  • TimeTree와 Line을 합친 느낌

합주날 전에는 합주실 위치, 파트 분배 정보, 참여 인원 등을 밴드멤버들에게 공유

합주날 이후에는 합주동안 찍은 사진과 합주한 영상을 올리고 나중에 찾아보기 편하게 구성

 

그리고 항상 인스타의 스레드처럼 멤버들이 댓글을 달 수 있도록 구성

프로젝트명

이제 프로젝트 이름을 정해보자!

 

밴드곡 합주의 경험을 다른 사람들에게 공유하고, 구성원끼리 커뮤니티 기능을 제공하니
인스타 피드에서 영감을 얻어 밴드피드(BandFeed)라는 이름으로 정했다.

AI로 만든 BandFeed 로고 이미지

마이크로 서비스 구성

지금까지 생각했을 때, 필요한 마이크로서비스는 총 7개다.

 

- 인프라 관련 서비스

  • 유레카 서버
  • 컨피그 서버
  • 게이트웨이 서버

- 핵심 서비스

  • 유저 서비스
  • 밴드 서비스
  • 게시글 서비스
  • 채팅 서비스

아래는 각 서비스별 필요한 테이블들로 총 9개이다.

 

1. User 서비스 DB

  • users
  • follows

2. Band 서비스 DB

  • bands
  • band_members
  • timeline_posts

3. Post 서비스 DB

  • songs
  • posts

4. Chat 서비스 DB

  • chat_rooms
  • chat_messages

MVP 단계별 개발 로드맵

[1단계] MSA 인프라 및 핵심 비즈니스 구축 (Base MVP)

  • API, 테이블, 인프라 설계서 작성
  • Eureka Server(디스커버리) 및 Config Server(설정 관리) 구축
  • User 서비스, Band 서비스, Post 서비스 생성 및 유레카 등록
  • [핵심 기능] Spotify API 연동 및 Post/Song 위키형 게시판 CRUD 완성 (인증 없이 우선 개발)
  • [장애 격리] Post 서비스 내에 Resilience4j 서킷 브레이커 및 @Retryable 재시도 로직 적용 및 검증

[2단계] 게이트웨이 라우팅/보안 필터 및 커뮤니티 확장 (Feature MVP)

  • Gateway 서비스 구축 및 각 서비스로의 패스 라우팅(Routing) 적용
  • [인증/인가 빌드업] User 서비스에서 로그인 검증 후, Gateway에서 JWT 토큰을 발급·검증하는 흐름 완성
  • [인증 기반 개발] 게이트웨이가 넘겨준 헤더(X-User-Id)를 활용해 BandMember 매핑 및 프라이빗 타임라인(접근 제어) 구현
  • Chat 서비스 추가 분리 및 WebSocket + STOMP 기반 1:1 DM 구축

[3단계] 인프라 고도화 및 아키텍처 검증 (Architecture MVP)

  • GitHub Actions와 Docker를 이용한 AWS 멀티 컨테이너 배포 파이프라인 구축
  • Prometheus + Grafana를 연동하여 서버 메트릭 모니터링 환경 구축
  • JMeter / k6 부하테스트를 통해 외부 API 지연 발생 시 서킷 브레이커 동작(Fallback) 검증 및 Redis 캐싱 적용 전후 TPS 비교
  • 실사용자 배포 및 피드백 수집

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

[Spotify Web API 3편] 애그리거트 경계 설정 및 SA 문서 작성  (0) 2026.06.06
[Spotify Web API 2편] API 분석  (0) 2026.06.05
[Riot API 4편] LoL 전적 조회 – Service/Controller 구현  (0) 2025.10.30
[Riot API 3편] 롤 전적 DTO 설계하기  (0) 2025.10.30
[Riot API 2편] 프로필 조회 기능 만들기  (0) 2025.09.28
'개인 프로젝트' 카테고리의 다른 글
  • [Spotify Web API 3편] 애그리거트 경계 설정 및 SA 문서 작성
  • [Spotify Web API 2편] API 분석
  • [Riot API 4편] LoL 전적 조회 – Service/Controller 구현
  • [Riot API 3편] 롤 전적 DTO 설계하기
MvA
MvA
백엔드 개발자 김재현입니다. 주로 공부하면서 느낀점을 기록합니다.
  • MvA
    Man vs Ai
    MvA
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Java (6)
      • Python (8)
        • 딥러닝 (1)
        • 머신러닝 (7)
      • JavaScript (2)
      • 내배캠 (60)
      • 개인 프로젝트 (11)
      • 책 후기 (5)
      • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    내일배움캠프
    딥러닝
    머신러닝
    배포
    Riot API
    아키텍처
    TiL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
MvA
[Spotify Web API 1편] 주제 및 기능 설계
상단으로

티스토리툴바