프로젝트명 '다봄' 은 '다' 같이 '본다' 는 동시 시청의 핵심 기능과 새로운 디지털 공동체 문화가 '봄' 처럼 새롭게 시작된다는 의미를 동시에 담고 있습니다.
![]() 팀원: 최민성 |
![]() 팀원: 양형모 |
![]() 팀원 : 김성인 |
![]() 팀원 : 김륜환 |
![]() 팀원 : 강병욱 |
"혼자 보는 영상에서 함께하는 경험으로"
비대면 소통이 일상화된 시대에, 단순한 영상 시청을 넘어 실시간 공유와 소통이 가능한 스트리밍 서비스를 개발하고자 합니다. 영상 콘텐츠와 실시간 채팅, 동시 시청 기능을 결합하여 새로운 형태의 디지털 공동체 경험을 제공하는 것이 저희의 목표입니다.
인증/인가 (Member)
- JWT + Refresh Token 구조로 전환해 세션 저장소 의존도를 제거
- HTTP-Only Cookie 저장 방식으로 보안 강화
- Access/Refresh가 함께 전달되는 특성을 활용해 재발급 통신 단축
실시간 같이보기 (Together)
- STOMP 기반 WebSocket에서 채팅/제어 이벤트를 분리 구독하도록 설계
- 방장 제어 이벤트가 모든 시청자에게 동기화되도록 처리
- 인증/인가 플로우를 단순화해 보안성과 효율성 동시 확보
- N+1 개선 및 반정규화로 응답 시간 약 20% 감소
- 구독 분리로 실시간 서비스 안정성 강화
- 회원가입/로그인/로그아웃, 이메일·채널명 중복 체크
- JWT Access/Refresh 쿠키 기반 인증 및 재발급 플로우
- 채널 정보 조회/수정, 소프트 삭제 처리
- 프로필/배너 이미지 S3 URL 연동
- 인증 상태 유지를 위해 Stateless JWT + 쿠키 저장 방식 도입
- 채널명 중복 방지 및 소프트 삭제 회원의 재가입 처리
- 방 생성/검색/참여/삭제, 공개/비공개 + 참여 코드(UUID) 기반 입장
- 방장 권한 제어 (제목/영상/인원/공개 여부 변경)
- 참여자 관리 (입장/퇴장/강퇴, 인원 수 동기화)
- 방장 권한에 따른 변경/강퇴 로직 분리로 권한 검증 흐름 명확화
- Together/TogetherJoinMember로 참여 상태와 이력 분리
- STOMP 기반 채팅 메시지 발행/구독
- 방장 재생 제어/영상 이동 이벤트 브로드캐스트
- 접속자 수 추적 및 입장 알림
- STOMP 메시지 발행/구독 경로 및 이벤트 흐름 정리
- 방장 제어 이벤트와 일반 채팅 이벤트의 분리 구조 강조
sequenceDiagram
participant Client
participant Gateway
participant Auth
participant WS as WebSocket(STOMP)
participant TogetherSvc as TogetherService
participant Room as TogetherRoom
Client->>Gateway: 1. 방 입장 요청 (HTTP)
Gateway->>Auth: 2. JWT 검증
Auth-->>Gateway: 3. 인증 결과
Gateway-->>Client: 4. 입장 응답
Client->>WS: 5. STOMP CONNECT/SUBSCRIBE (/topic/together/{id})
WS->>TogetherSvc: 6. 구독 이벤트 처리
TogetherSvc->>Room: 7. 입장 처리 + 인원 업데이트
TogetherSvc-->>WS: 8. 입장 알림 브로드캐스트
WS-->>Client: 9. 입장 알림 수신
Client->>WS: 10. 채팅 메시지 발행 (/app/together/{id})
WS->>TogetherSvc: 11. 메시지 처리
TogetherSvc-->>WS: 12. 채팅 브로드캐스트
WS-->>Client: 13. 채팅 수신
Client->>WS: 14. 방장 제어 발행 (/app/master/control/together/{id})
WS->>TogetherSvc: 15. 방장 권한 검증
TogetherSvc-->>WS: 16. 제어 이벤트 브로드캐스트
WS-->>Client: 17. 재생 제어 수신
- 로그인 성공 시 Access/Refresh 쿠키 발급
- Access 만료 시 Refresh로 재발급 후 재요청
sequenceDiagram
participant Client
participant API
participant Auth as JwtAuthFilter
Client->>API: 1. 로그인 요청
API-->>Client: 2. Access/Refresh 쿠키 발급
Client->>API: 3. 인증 필요 요청
API->>Auth: 4. Access 검증
alt Access 유효
Auth-->>API: 인증 성공
API-->>Client: 5. 정상 응답
else Access 만료
Auth->>Auth: Refresh 검증
alt Refresh 유효
Auth-->>Client: 6. 새 Access/Refresh 쿠키 발급
else Refresh 만료
Auth-->>Client: 7. 재로그인 요구
end
end







