Skip to content

dami0806/Trello

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗓️ Trello

image image

📌 프로젝트 개요

  • 프로젝트 기간: 2024.06.03 ~ 2024.06.10
  • 프로젝트 설명: 칸반 보드 기반의 프로젝트 관리 시스템 개발

기술 스택 백엔드


데이터베이스

테스트

문서

인프라


🔧 아키텍처 구성

[아키텍처 다이어그램 필요]


🚀 주요 기능

  • 사용자 관리: 회원가입, 로그인, 권한 부여 (Manager, Member)
  • 보드 관리: 보드 생성, 초대, 초대할 사용자 목록 조회
  • 컬럼 관리: 컬럼 추가, 이동, 삭제
  • 카드 관리: 카드 추가, 이동, 삭제, 댓글
  • 권한 관리: AOP 기반 접근 제어 및 Role 기반 인증 처리

팀 역할

역할 팀장 박다미 팀원 김현민 장재현 팀원 조성훈
담당 기능 회원관련 기능
사용자 초대
카드,컬럼이동
카드,댓글 CRUD
로그아웃
회원탈퇴
컬럼CRUD 보드CRUD
프론트엔드

⚡️ 성능 개선

카드 순서 관리 및 성능 최적화

기존 방식의 문제점

  • 각 카드가 개별적으로 위치를 관리 → 모든 카드의 위치를 업데이트해야 하는 성능 저하 발생
  • 대량의 데이터가 수정될 경우, 데이터베이스 부하 증가

개선 방식

  • 중앙에서 카드 위치를 관리 → 불필요한 업데이트 최소화
  • 트랜잭션 단위 최적화 → 변경 사항이 있을 때만 업데이트 수행
개선 후 개선 후
image image

쿼리 최적화 및 인덱싱 적용

  • 기존 fetchCount() 사용 → fetchOne() + select(qComment.count()) @BatchSize(size = 10)
  • N+1 문제 해결: Fetch Join, EntityGraph, BatchSize 적용
  • 복합 인덱스 사용: 카드, 댓글, 컬럼 관련 조회 최적화

쿼리 최적화 개요

  • fetchCount() 대신 fetchOne() + count()를 활용하여 필요 없는 데이터 조회 감소
  • N+1 문제를 해결하기 위해 Fetch Join 및 BatchSize를 활용
  • 카드 및 컬럼 이동 시 복합 인덱스를 적용하여 검색 속도 개선

sql로 인한 성능 개선(인덱스 사용 및 sql개선후 explain으로 확인)

설명 explain 개선결과
매니저 확 image
member인지/ Manager인지 확인 image
초대된 사용자인지 여부 확인 image
카드 순서 관리 성능 문제 및 비정규화 도입 image

🔍 트러블슈팅 및 고민

동시성 문제 해결

  • 문제: 여러 스레드가 동시에 데이터를 수정할 경우, 트랜잭션 충돌 발생
  • 해결책: StampedLock을 활용하여 읽기 성능 최적화 및 충돌 최소화
개선 후 개선 후
image image

트랜잭션 충돌 최소화

  • 이전 방식: @Version 기반 낙관적 락 사용 → 읽기 중 변경 감지 어려움
  • 개선 방식: StampedLock 적용하여 읽기 중 데이터 변경 감지 및 안전한 재처리

📂 ERD

image

🎥 시연 영상

유튜브 시연 영상


📌 프로젝트 관리

  • 이슈 관리: Jira를 활용한 GitHub 연동
  • 코드 스타일: Java 코드 컨벤션 준수, MapperStruct 활용하여 가독성 향상
    🔗 Jira link

📚 추가 문서 및 참고 링크

About

일정관리 앱 서버 📋

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%