Skip to content

laphayen/High-Traffic-Handling-Board-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

High-Traffic-Handling-Board-Server: 대용량 트래픽 게시판 애플리케이션 - 성능 최적화 및 확장성

🎯 목적

대용량 트래픽(초당 1000 TPS 이상)을 처리할 수 있는 고성능 게시판 애플리케이션 개발을 목표로 합니다. 주요 목표는 다음과 같습니다:

  • 대용량 트래픽을 고려한 성능 최적화.
  • 객체지향 원칙과 디자인 패턴을 적용한 가독성 높은 코드 작성.
  • 실무 코드 리뷰 경험 및 공유.
  • 모니터링 및 문제 해결 전략 공유.
  • 젠킨스를 활용한 자동 배포로 개발 생산성 향상.

🚀 주요 기능

회원 관리

  • 회원 가입/탈퇴: 안전한 회원 데이터 관리.
  • 로그인/로그아웃: 비밀번호 암호화를 통한 보안 강화.
  • 중복 체크: 아이디 및 닉네임 중복 검사.

게시판 관리

  • 카테고리 관리: 추가, 삭제, 수정 기능.
  • 게시글 관리:
    • 게시글 및 파일의 생성, 수정, 삭제, 조회.
    • 게시글 검색 (작성자 ID, 제목, 내용 기반).
    • 태그 기능 (태그 추가 및 조회).
  • 댓글 관리:
    • 대댓글 지원 및 CRUD 기능.
    • 댓글 소프트 삭제.

관리자 기능

  • 공지사항 작성 및 관리.

🛠️ 사용 기술

  • 백엔드: Java 17, Spring Boot 2.3, MyBatis, Redis
  • 데이터베이스: MySQL
  • 성능 테스트: Python 3.9, Locust
  • CI/CD: Jenkins

🗂️ 아키텍처 개요

  • 캐싱: Redis를 활용한 검색 결과 캐싱.
  • 비동기 처리: @Async를 이용한 병렬 처리.
  • 계층형 설계: RESTful API 기반의 명확한 역할 분리.

📊 성능 테스트

Locust를 활용해 검색 및 게시글 작성 API에 대한 성능 테스트를 진행했습니다.

테스트 시나리오

  1. 스트레스 테스트: 최대 500명의 사용자가 초당 50회 요청, 사용자를 분당 50명씩 증가.
  2. 내구성 테스트: 100명의 사용자가 초당 100회 요청을 10분간 지속.
  3. 피크 테스트: 100명의 사용자가 초당 50회 요청, 1분 내 1000명으로 급증.

테스트 결과

테스트 유형 총 요청 수 평균 응답 시간 실패 요청 수
스트레스 테스트 100,354 5 ms 0 (0.00%)
내구성 테스트 191,376 2 ms 0 (0.00%)
피크 테스트 154,303 4 ms 0 (0.00%)

인사이트

  • Redis 캐싱을 통해 평균 응답 시간이 50% 감소했습니다.
  • 비동기 처리로 병렬 요청 처리를 개선, 피크 로드에서도 안정적인 성능 유지.

📝 설계 및 구현 주요 내용

  • Redis 캐싱: @Cacheable로 검색 결과 캐싱 구현.
  • 비동기 처리: PostSearchServicegetPosts 메서드에 @Async 적용.
  • 동적 쿼리: MyBatis를 사용한 유연한 쿼리 생성.
  • 보안 강화: SHA-256을 활용한 비밀번호 암호화 및 세션 유효성 검사.

⚙️ 성능 테스트 가이드

  1. Locust 설치: pip install locust
  2. 테스트 스크립트 실행:
    • locust -f BoardTest.py
    • locust -f AddPost.py
  3. Locust UI 접속: http://localhost:8089

💡 모니터링 및 문제 해결

  • MyBatis SQL 로그를 사용해 쿼리 성능 분석.
  • CPU, RAM, DISK 지표를 실시간으로 모니터링.
  • 검색 API 및 로그인 로직의 병목 현상을 해결.

🖇️ 자료

ERD 다이어그램 ERD 다이어그램

시퀀스 다이어그램

📈 개선 사항

  • 검색 API 성능 개선 (캐싱 및 비동기 처리 도입).
  • 피크 트래픽 환경에서도 실패 없는 안정적인 서비스 제공.

🔗 링크


기여를 원하신다면 이슈 생성 또는 풀 리퀘스트 요청을 통해 참여해주세요!

About

High Traffic Handling Board

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors