Blog

[TEAM258] 누리책마루 - Brochure

온라인 도서관 서비스의 대규모 트래픽 안정적인 이벤트 참여와 대량 도서 데이터 검색을 최적화

목차

 01 - 프로젝트 누리책마루 소개

누리는 세상을, 마루는 모이는 공간을 의미하여, 세상의 책이 모여 순환하는 곳이라는 뜻입니다.

프로젝트 배경

사회적 문제인 공공 도서관의 도서 폐기 문제를, 책이 필요한 사람들에게 분배함으로써 해결할 수 있지 않을까 하는 아이디어에서 출발한 프로젝트입니다.

프로젝트 소개

도서관에 과도하게 쌓인 책을 필요로 하는 이들에게 나누는 것을 목표로 한 온라인 도서관 웹 플랫폼 서비스
도서 나눔 이벤트 진행을 위한 웹 티케팅 서비스
동시성 제어 관련 112.9% 응답 속도 성능 향상
도서 검색 및 예약 기능을 제공하는 웹 서비스
검색 성능 최대 388.1% 향상

주요 기능

도서 나눔 이벤트 관리 기능 : 사용자들이 온라인으로 도서 나눔 이벤트에 참여할 수 있도록 관리자가 이벤트와 분배하는 도서를 지정하여 해당 이벤트를 생성 할 수 있습니다.
도서 검색 기능 : 사용자가 원하는 책을 쉽게 찾을 수 있도록 다양한 검색 필터와 함께 빠르고 정확한 검색 서비스를 제공합니다.
도서 대출 및 예약 기능: 사용자가 온라인을 통해 도서를 대출하거나 예약할 수 있는 시스템을 구축하여, 대면 접촉 없이도 필요한 책을 받아볼 수 있게 합니다.

 02 - 프로젝트 목표

검색 성능 개선
 검색 문제 해결 과정

03 - 주요 기능

1. 도서 검색 기능

2. 도서 대출/예약 기능

3. 도서 나눔 이벤트

4. 관리자 기능

5. 사용자 기능

 04 - 기술 스택

 Backend

Tech Stack
DataBase
DevOps
HTTPS
CI/CD
Infra
Test
Streaming / Messaging

 Frontend

Tech Stack

기술적 선택 과정

05 - 소프트웨어 아키텍처 및 CI/CD

 06 - ERD

07 - API 명세서

08 - 성능 및 구조 개선

카프카 성능 개선 기록 112.9% 응답 속도 성능 향상

JPA→JPQL→QueryDSL 코드 개선 과정 정리

UI/UX 관점의 검색 기능 개선 348.5% 응답 속도 성능 향상

검색 응답 성능 개선 통해 평균 388.1% 검색 성능 향상

카프카를 통한 서비스 아키텍처 구조 개선

 09 - 트러블 슈팅

카프카를 통한 마이크로서비스 아키텍처 적용 과정

Elasticsearch 구현관련 트러블슈팅

개발 과정에서 발생한 여러가지 트러블 슈팅

10- Team

Search
이름
분담
Contact
기초 MVP 기능 구현 - 관리자의 도서 관리 기능 API 개발 - 타임리프 레이아웃 및 부트스트랩 활용 기초 프론트엔드 전반 템플릿화 검색 기능 개선 - 애플리케이션 레벨의 개선 - 쿼리 최적화(QueryDSL 적용) - 페이징의 접근 방식 변경 - 슬라이스 활용, 더보기 및 무한스크롤 구현 Elasticsearch 기술스택도입 - Local 환경 ELK 테스트 - Elasticsearch 전용 AWS EC2 환경 구축 - MySQL과 Elasticsearch간의 성능 테스트
DevOps - CI/CD (GitHub Actions, AWS [S3, CodeDeploy, EC2] )환경 구축 - DNS 설정 적용 및 로드 밸런서를 통해 HTTPS 보안 통신과 서버 부하 분산을 구축 ( AWS [ ACM, ALB, Route 53, EC2 ] ) - Spring Security에 JWT 토큰 인증 방식 적용 - 서버 스케일 업 진행 ( EC2, RDS ) 기초 MVP 기능 구현 - 책 나눔 이벤트 관리 API 개발 - 책 나눔 이벤트 도서 설정 API 개발 - 책 나눔 이벤트 신청 유저 API 개발 - 관리자의 유저 관리 API 개발 마이크로서비스 아키텍처 구현 - 카프카 구현 및 배포 ( AWS EC2 ) - 카프카 성능 개선 및 성능 테스트 - Redis 분산락 구현 및 배포 ( AWS EC2 ) 검색기능개선 - 쿼리 최적화(QueryDSL 적용) - 페이징 및 슬라이스 적용 - N+1 문제 완화 ( Fetch Join ) 동시성 제어 - 세마포어, 뮤텍스, 레디스 분산락 구현 및 테스트 Elasticsearch 기술스택도입 - MySQL과 Elasticsearch간의 성능 테스트
기초 MVP 기능 구현 - 책 대출/예약 API 개발 마이크로서비스 아키텍처 구현 - 카프카 성능 개선 및 성능테스트 검색기능개선 - 쿼리 최적화(QueryDSL 적용) - N+1 문제 완화 ( Fetch Join ) 동시성 제어 - DB락, redis분산락 등 구현 및 테스트
기초 MVP 기능 구현 - 책 전체 조회 기능 API 개발 - 책 카테고리 및 키워드 검색 기능 API 개발 검색기능개선 - 애플리케이션 레벨의 개선 - 쿼리 최적화(QueryDSL 적용) - 페이징의 접근 방식 변경 - 슬라이스 정리 - 서버 로직 개선 - 데이터베이스 레벨의 개선 - Full text 인덱싱을 통한 개선 - 인덱싱 방식 별 검색 성능 테스트 - 쿼리 명령어 별 검색 성능 테스트
기획 및 환경 구축 - 프로젝트 아이디어 창출 및 기획 - 각 API 프론트엔드 연결 TEST - JMeter, Junit5, Postman 등을 활용한 성능 및 로직 테스트, 테스트 코드 작성

 TEAM 258 팀노션 Blog

Github 주소

Main Server

Event Apply Server