[]
사용자들간의 중고 거래를 돕는 플랫폼
AWS RD에서 비용 문제로 Docker-compose로 local 환경에서 진행중
맡은 업무 : 백엔드 전반적인 구현과 성능 테스트, 배포
개발 기간 : 2024.03.04 ~ 2024.03.26
이후로도 꾸준히 성능 향상을 위한 시도나 개선하기 위해 노력하고 있습니다.
SpringBoot:3.1.8-SNAPSHOT, Spring Web MVC, Spring data JPA, Redis(Lettuce)
lombok, thymeleaf, jjwt, swagger:2.0.2, json-simple:1.1.1, cloud-aws:2.2.6, Vault:3.0.2, querydsl:5.0.0
-
네이버와 카카오 OAuth 로그인
-
Vault
라이브러리와JWT
를 이용한 인가(Authentication)으로 보안 요소 구성 -
@Numberic
커스텀 어노테이션으로 sql injection을 대비하는 최소한의 시큐어 코딩 -
aws S3를 이용해서 이미지나 파일을 첨부할 수 있는 게시판과 댓글 CRUD를 구현
-
게시판 유형에 따라서 필터링[
SortStatus
,region
,category
]한 검색 결과를 목록으로 표시 -
Redis의
Caching
으로 게시글 목록이나 검색 결과, 게시물 내용 요청 작업 수행 속도 상승 -
Redis의
Pub/sub
으로 사용자(판매자와 구매 희망자)간의 1:1 채팅 구현- 임시로 Listener를 통해 백엔드 단에서 채팅 내역을 표시
- 대화방의 채팅 기록은
Stream
구조로 시간순으로 기록
Entity보다 DTO를 조회하는 방식의 장점을 이해하고 OneToOne N+1
문제를 해결
게시글 리스트를 불러올때 불필요한 컬럼 조회를 줄여 성능을 개선
4000개의 데이터를 두고, 200명의 사용자가 1초동안 5번씩 게시판의 목록을 조회하는 요청
→ 상황별로 Latency는 50%~70% 정도 줄였고, throughput는 75%~130%까지 개선
캐싱된 데이터에 대한 성능 비교 | 캐시가 없는 경우의 성능 비교 | |
---|---|---|
평균 반응 | 416ms → 110ms | 981ms → 441ms |
throughput | 307.9/sec → 701.3/sec | 168.3/sec→ 295.2/sec |