Skip to content

운동을 좋아하는 모든 이들을 위한 매칭/커뮤니티 서비스 💪🏻

Notifications You must be signed in to change notification settings

dlrkdus/HF_backend

 
 

Repository files navigation

서비스 소개

HOME _ 웹용 가이드(푸터 영역 추가)

운동을 좋아하는 모든 이들에게 매칭/커뮤니티/채팅 서비스를 제공합니다.

서비스 주요 기능

  1. 커뮤니티
  2. 통합 검색 기능
  3. 새싹과 고수 회원 매칭
  4. 채팅
  5. 알림

기술 스택

  • Tech Stack
    • Java, Spring Boot, MySQL, JPA, QueryDSL, Redis, JUnit
  • Infra
    • AWS EC2, AWS RDS, AWS ElasticCache, AWS SQS, AWS SNS
  • DevOps
    • Jenkins, Docker

담당 업무

  • 커뮤니티 기능 (CRUD, 찜하기, 좋아요 포함)
  • 대댓글 기능
  • 검색 기능
  • 알림 기능

구현 및 문제 해결 과정

1. 알림 시스템 구현

스크린샷 2025-01-06 오후 9 25 02

문제
기존의 Async와 EventListener 구조는 어플리케이션 의존성이 너무 커 이벤트 내구성 부족, 트래픽 증가 시 스레드 풀이 포화 가능성, 비동기 처리 재시도 전략 미수립 등의 문제점이 있음

해결
AWS SQS는 큐에 메세지를 넣어놓고 Worker가 폴링해 쓰는 구조이기 때문에 발행 속도와 처리 속도 간의 차이를 완충
AWS SNS가 DB 저장 Worker와 Sse Worker에게 이벤트를 발행해 DB 병목이 일어나더라도 실시간 알림 작업은 영향을 받지 않음
DLQ를 생성해두고 누적 메세지가 임계값을 넘어가면 Cloudwatch로 알림 발송

2. 커뮤니티 CRUD 구현

문제
자주 접근하는 특성을 가진 인기글 목록 특성상 접근과 정렬 비용 절감 필요

해결
Redisson의 SortedSet을 활용하여 DB I/O 비용 감소, SortedSet 자료구조로 정렬 비용 감소,
TTL로 외부 스케줄러 없이 주간 인기글 자동 갱신

문제
글 본문이 길어질 경우 DB 병목 현상

해결
단일/Full Text 인덱스로 검색 성능 73% 개선
Full-Text Search 쿼리문이 Hibernate Dialect에 정의되어 있지 않은 문제는 MATCH AGAINST 쿼리문을 커스텀 쿼리로 등록함으로써 해결 SQL Explain으로 쿼리 분석해 효율 개선 확인

문제
댓글 1개를 조회하는데 지연로딩으로 인한 대댓글 조회 N개 쿼리 추가 발생

해결
배치 로딩 적용으로 쿼리 수 90% 감소, 조회 성능 약 60% 개선

About

운동을 좋아하는 모든 이들을 위한 매칭/커뮤니티 서비스 💪🏻

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.9%
  • Other 0.1%