Skip to content

kusitms-com/32nd_Meetup_Team5_Mogakjak_Back

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

λͺ¨μ—¬μ„œ 각자 μž‘μ—…ν•˜λŠ” μ‹œκ°„ , λͺ¨κ°μž‘πŸ…

πŸ”—Β Link : https://mogakjak-fe.vercel.app

λͺ¨κ°μž‘ μž₯ν‘œ

νŒ€λͺ…

🀿 λͺ°λ”₯브 (More Deep Dive)

λͺ°μž…에 Deep Dive ν•˜κ² λ‹€λŠ” 포뢀와,
νœ΄μ–‘μ§€ Maldives처럼 νŽΈμ•ˆν•˜κ³  즐거운 λͺ°μž… ν™˜κ²½μ„ λ§Œλ“€κ² λ‹€λŠ”
μ€‘μ˜μ  의미λ₯Ό 담은 νŒ€λͺ…μž…λ‹ˆλ‹€.


πŸ”– μ„œλΉ„μŠ€ κ°œμš”

πŸ‘€ μœ μ € λ¦¬μ„œμΉ˜

λͺ¨κ°μž‘ μž₯ν‘œ

기쑴의 μ„œλΉ„μŠ€λ“€μ— μœ μ €λ“€μ€ 압박이 ν•„μš”ν•œ λͺ°μž…에 뢀담을 느끼고 μžˆμ—ˆμŠ΅λ‹ˆλ‹€

πŸ₯ PainPoint

λͺ¨κ°μž‘ μž₯ν‘œ_1

κ°•μ œμ μΈ 경쟁이 μ•„λ‹Œ μžμœ¨μ„± μ†μ˜ μ—°λŒ€λ₯Ό μ›ν•©λ‹ˆλ‹€


πŸ’»Β μ„œλΉ„μŠ€ μ£Όμš” κΈ°λŠ₯

  • κ·Έλ£Ή μ‹€μ‹œκ°„ μƒνƒœ 곡유
    λ©€λ²„λ“€μ˜ 집쀑/νœ΄μ‹ μƒνƒœ ν‘œμ‹œ, β€˜μ½• 찌λ₯΄κΈ°β€™ μ•Œλ¦Ό 제곡

  • λͺ°μž… 지원 κΈ°λŠ₯
    곡개 μ„€μ •, κ·Έλ£Ή 타이머, λͺ©ν‘œ 달성λ₯ , 캐릭터 μ„±μž₯ μ‹œμŠ€ν…œ

  • μ›Ή μ΅œμ ν™” κΈ°λŠ₯
    PIP λͺ¨λ“œ, κ·Έλ£Ή μ•Œλ¦Ό, μ£ΌΒ·μ›” 집쀑 리포트 μ‹œκ°ν™”

λͺ¨κ°μž‘ μž₯ν‘œ_2



πŸ’ΌΒ API λͺ…μ„Έμ„œ

Swagger



πŸ—‚οΈ ERD

image

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

image

πŸ› οΈ 개발 ν™˜κ²½ 및 μ‚¬μš© 기술 μŠ€νƒ

λ°±μ—”λ“œ

  • Spring Boot 3.3.2 + Java 21
    LTS 기반으둜 μ„±λŠ₯κ³Ό νƒ€μž… μ•ˆμ •μ„±μ„ ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€.

  • Spring Data JPA
    λ©”μ„œλ“œ 넀이밍 쿼리, JPQL, Native Queryλ₯Ό μ‚¬μš©ν•˜κ³ 
    JOIN FETCH둜 N+1 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

  • MySQL
    μ•ˆμ •μ μΈ κ΄€κ³„ν˜• 데이터 ꡬ쑰에 μ ν•©ν•˜μ—¬ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€.

  • Spring Security + JWT (jjwt 0.13.0)
    OncePerRequestFilter 기반 JWT ν•„ν„° 체인과 Stateless μ„Έμ…˜μœΌλ‘œ
    λ³΄μ•ˆμ„±κ³Ό ν™•μž₯성을 ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€.

  • Redis + Pub/Sub
    λ‹€μŒ 8개 채널을 Pub/Sub ꡬ쑰둜 μš΄μ˜ν•˜λ©° μ‹€μ‹œκ°„ λ©”μ‹œμ§•μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€:
    chat, focus-notification, group-member-status, timer-completion,
    poke-notification, cheer-notification, group-timer-event, user-active-status

  • WebSocket (STOMP + SockJS)
    토큰 기반 인증 인터셉터와 Simple Broker둜
    κ·Έλ£Ή νƒ€μ΄λ¨ΈΒ·μ±„νŒ…Β·μ•Œλ¦Ό λ“± μ‹€μ‹œκ°„ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

  • AWS S3 SDK (NCP Object Storage ν˜Έν™˜)
    이미지 μ €μž₯μ†Œλ‘œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.


πŸ€– λ°±μ—”λ“œ CI/CD μš”μ•½

  • CI μžλ™ν™”: PR 생성 μ‹œ μ»΄νŒŒμΌΒ·ν…ŒμŠ€νŠΈΒ·μ •μ  뢄석을 μžλ™ μ‹€ν–‰ν•˜κ³ , μ‹€νŒ¨ μ‹œ merge 차단
  • CD μžλ™ν™”: develop β†’ staging, main β†’ production ν™˜κ²½μœΌλ‘œ μžλ™ 배포
  • 무쀑단 배포(블루/κ·Έλ¦°): Docker 이미지 λΉŒλ“œ β†’ 배포 β†’ ν—¬μŠ€μ²΄ν¬ ν›„ νŠΈλž˜ν”½ μ „ν™˜, μ‹€νŒ¨ μ‹œ μžλ™ λ‘€λ°±

🧩 λ°±μ—”λ“œ νŠΈλŸ¬λΈ”μŠˆνŒ… μš”μ•½

1) νŠΈλžœμž­μ…˜ 컀밋 μ „ λΈŒλ‘œλ“œμΊμŠ€νŠΈ 문제

  • 문제: 컀밋 전에 WebSocket λΈŒλ‘œλ“œμΊμŠ€νŠΈ β†’ ν”„λ‘ νŠΈμ—μ„œ μ΅œμ‹  μƒνƒœ 미반영
  • ν•΄κ²°: afterCommit() μ‚¬μš©ν•΄ νŠΈλžœμž­μ…˜ μ™„λ£Œ ν›„ λΈŒλ‘œλ“œμΊμŠ€νŠΈ μˆ˜ν–‰

2) LocalDateTime 직렬화 였λ₯˜

  • 문제: Redis Pub/Sub 전솑 μ‹œ Java 8 μ‹œκ°„ νƒ€μž… 직렬화 μ‹€νŒ¨
  • ν•΄κ²°: JavaTimeModule 등둝 + νƒ€μž„μŠ€νƒ¬ν”„ λΉ„ν™œμ„±ν™”

3) N+1 쿼리 μ„±λŠ₯ 문제

  • 문제: κ·Έλ£Ή/λ©”μ΄νŠΈ 쑰회 λ“±μ—μ„œ N+1 λ°œμƒ
  • ν•΄κ²°: JOIN FETCH + Native Query둜 집계 처리

4) 타이머 μ™„λ£Œ μŠ€μΌ€μ€„λ§ λΉ„νš¨μœ¨

  • 문제: 1μ΄ˆλ§ˆλ‹€ 전체 타이머 쑰회 β†’ μ„œλ²„ λΆ€ν•˜
  • ν•΄κ²°: μ’…λ£Œ μ‹œμ  기반 이벀트 μŠ€μΌ€μ€„λ§μœΌλ‘œ μ „ν™˜

5) 읽기 μ „μš© νŠΈλžœμž­μ…˜ 미적용

  • 문제: 쑰회 쿼리도 κΈ°λ³Έ νŠΈλžœμž­μ…˜ μ‚¬μš© β†’ λ½Β·μ˜€λ²„ν—€λ“œ 증가
  • ν•΄κ²°: @Transactional(readOnly = true) 적용

6) WebSocket μˆ˜ν‰ ν™•μž₯ 문제

  • 문제: 단일 μ„œλ²„λ§Œ λΈŒλ‘œλ“œμΊμŠ€νŠΈ κ°€λŠ₯
  • ν•΄κ²°: Redis Pub/Sub으둜 λͺ¨λ“  μΈμŠ€ν„΄μŠ€ 동기화

7) λ³΅μž‘ν•œ λŒ€μ‹œλ³΄λ“œ 집계 μ„±λŠ₯ 문제

  • 문제: μ—¬λŸ¬ 쿼리 + μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ§‘κ³„λ‘œ 응닡 μ§€μ—°
  • ν•΄κ²°: Native Query둜 ν•œ λ²ˆμ— 집계 쑰회

About

πŸ… λͺ¨μ—¬μ„œ 각자 μž‘μ—…ν•˜λŠ” μ‹œκ°„ , λͺ¨κ°μž‘ πŸ…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •