대규모 트래픽 게시판 구축 시리즈 #1: 프로젝트 기획 및 요구 사항

2024. 9. 5. 11:19·프레임워크/자바 스프링

 

안녕하세요, 오늘은 제가 최근에 진행한 "A High-Performance Distributed Forum System for Handling Massive Traffic with Spring" 프로젝트에 대해 소개해드리고자 합니다. 이 프로젝트는 대규모 트래픽을 효과적으로 처리할 수 있는  게시판 시스템을 개발하는 것을 목표로 했습니다.

프로젝트 목적

  • 대용량 트래픽 처리: 초당 1000 TPS 이상의 게시글 검색 API를 구현하는 등 대규모 동시 접속자를 처리할 수 있는 시스템 구축
  • 코드 품질 향상: 객체지향 원칙과 디자인 패턴을 적용하여 가독성과 유지보수성이 높은 코드 작성
  • 협업 및 품질 관리: 코드 리뷰 프로세스를 통한 지속적인 개선 및 팀원 간 지식 공유
  • 시스템 안정성: 모니터링 도구 구축 및 트러블 슈팅 프로세스 확립
  • 개발 생산성 향상: Jenkins를 이용한 CI/CD 파이프라인 구축으로 배포 자동화 실현
  • 확장성: 분산 시스템 아키텍처를 통한 수평적 확장 가능성 확보

주요 기능

1. 회원 관리 시스템

  • 회원 가입 및 탈퇴 기능
  • 아이디와 닉네임 중복 체크
  • 안전한 비밀번호 관리를 위한 SHA-256 암호화 구현
  • 로그인 및 로그아웃 기능 (세션 기반 인증)
  • 사용자 권한 관리 (일반 사용자, 관리자)

2. 게시판 기능

  • 카테고리 관리
    • 카테고리 추가, 삭제, 수정 기능 (관리자 전용)
  • 게시글 관리
    • 게시글 작성, 수정, 삭제, 조회 기능
    • 파일 첨부 기능
  • 검색 기능
    • 작성자 ID, 게시글 제목, 내용 등 다양한 조건으로 검색 가능
    • Redis를 활용한 검색 결과 캐싱으로 성능 최적화
  • 태그 시스템
    • 게시글에 태그 추가 및 태그 기반 검색 기능
  • 댓글 시스템
    • 게시글에 대한 댓글 작성 및 관리 기능
    • 대댓글 지원

3. 관리자 기능

  • 공지사항 작성 및 관리 기능
  • 사용자 관리 및 권한 설정

4. 알림 시스템

  • AWS SNS를 활용한 실시간 알림 기능
  • Slack 통합을 통한 중요 이벤트 알림

기술 스택

1. 백엔드

  • Java 17
  • Spring Boot 3.1.4
  • MyBatis 3.0.1
  • MySQL 8.0.31

2. 캐싱 및 세션 관리

  • Redis

3. 빌드 도구

  • Gradle

4. CI/CD

  • Jenkins

5. 클라우드 서비스

  • AWS SNS

6. 외부 통합

  • Slack API

개발 및 운영 전략

  1. 객체지향 설계와 디자인 패턴 적용:
    • 코드의 가독성과 유지보수성을 높이기 위해 객체지향 원칙을 철저히 준수
    • 적절한 디자인 패턴을 적용하여 코드 구조 개선 (예: DTO 패턴, 서비스 레이어 패턴)
  2. 코드 리뷰 프로세스:
    • 정기적인 코드 리뷰를 통해 코드 품질 향상
    • 팀원 간 지식 공유 및 협업 능력 강화
  3. 모니터링 및 트러블 슈팅:
    • 시스템 성능 및 안정성을 실시간으로 모니터링할 수 있는 도구 구축
    • Log4j2를 활용한 효과적인 로깅 시스템 구현
    • 문제 발생 시 신속하게 대응할 수 있는 트러블 슈팅 프로세스 확립
  4. CI/CD 파이프라인 구축:
    • Jenkins를 활용한 자동화된 빌드 및 배포 시스템 구축
    • Docker를 이용한 컨테이너화로 일관된 개발 및 운영 환경 제공
  5. 성능 최적화:
    • Redis를 활용한 캐싱으로 데이터베이스 부하 감소 및 응답 속도 개선
    • 데이터베이스 인덱싱 전략 수립 및 적용
  6. 확장성 고려:
    • 마이크로서비스 아키텍처를 고려한 모듈화된 설계
    • 수평적 확장이 용이한 구조 설계 (예: 멀티 노드 Redis 클러스터 고려)

프로젝트 구조

프로젝트는 다음과 같은 주요 패키지로 구성되어 있습니다:

  • com.example.boardserver.aop: AOP를 이용한 로그인 체크 기능 구현
  • com.example.boardserver.config: 데이터베이스, Redis, AWS 등의 설정
  • com.example.boardserver.controller: RESTful API 엔드포인트 정의
  • com.example.boardserver.dto: 데이터 전송 객체 정의
  • com.example.boardserver.exception: 예외 처리 및 핸들링
  • com.example.boardserver.mapper: MyBatis 매퍼 인터페이스
  • com.example.boardserver.service: 비즈니스 로직 구현
  • com.example.boardserver.utils: 유틸리티 클래스 (암호화, 세션 관리 등)

결론

이 프로젝트를 통해 대규모 트래픽을 처리할 수 있는 견고한 시스템 설계와 구현 경험을 쌓을 수 있었습니다. 특히 성능 최적화, 코드 품질 관리, 그리고 효율적인 개발 및 운영 프로세스 구축에 중점을 두어 실제 서비스 운영에 필요한 다양한 측면을 고려한 솔루션을 개발했습니다.

주요 성과로는 Redis 캐싱을 통한 검색 성능 최적화, AWS SNS와 Slack 통합을 통한 실시간 알림 시스템 구축, 그리고 MyBatis를 활용한 효율적인 데이터베이스 접근 등이 있습니다.

앞으로도 이 프로젝트를 지속적으로 개선하고 새로운 기술을 적용해 나갈 예정입니다. 특히 성능 테스트를 통한 시스템 한계 파악 및 개선, 보안 강화, 그리고 사용자 경험 향상을 위한 기능 추가를 계획하고 있습니다.

 

저작자표시

'프레임워크 > 자바 스프링' 카테고리의 다른 글

대규모 트래픽 게시판 구축 시리즈 #3: 도커를 이용한 데이터베이스 구축  (5) 2024.09.05
대규모 트래픽 게시판 구축 시리즈 #2: 프로젝트 기획 및 요구 사항  (0) 2024.09.05
[spring cloud][ecommerce] 개요 & 구성  (0) 2024.08.12
콘서트 예매 서비스에서 발생할 수 있는 동시성 이슈와 처리  (0) 2024.07.20
JPA 테스트 코드 작성시 UPDATE Query 생성이 안되네?  (0) 2024.05.28
'프레임워크/자바 스프링' 카테고리의 다른 글
  • 대규모 트래픽 게시판 구축 시리즈 #3: 도커를 이용한 데이터베이스 구축
  • 대규모 트래픽 게시판 구축 시리즈 #2: 프로젝트 기획 및 요구 사항
  • [spring cloud][ecommerce] 개요 & 구성
  • 콘서트 예매 서비스에서 발생할 수 있는 동시성 이슈와 처리
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (282)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (4)
        • 암호화폐 (4)
        • 기타 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    AWS
    WebFlux
    백준
    spring
    DP
    OOP
    항해99
    EC2
    Spring Boot
    celery
    Docker-compose
    완전탐색
    mybatis
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    Spring WebFlux
    그리디
    ecs
    파이썬
    docker
    프로그래머스
    취업리부트
    Redis
    시험
    java
    FastAPI
    RDS
    Python
    자바
    reactor
    SAA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
대규모 트래픽 게시판 구축 시리즈 #1: 프로젝트 기획 및 요구 사항
상단으로

티스토리툴바