배포 사이트 들어가기 : 📚3runner.shop (8/30일 부로 MySQL, Redis, RabbitMQ, Elasticsearch 지원이 끊겨 웹사이트가 닫혔습니다)
- 장바구니
- 비회원, 회원 장바구니 REST API 구축과 UI 구현
- 주문
- 회원,비회원 주문 프로세스 REST API 구축과 UI 구현
- 행안부 주소도로명 API 연동
- TOSS PAYMENTS API, 결제 서비스 트랜젝션 연동 구현
- 쿠폰
- 쿠폰 REST API 구축과 UI 구현
- 높은 트래픽을 안정적으로 처리하기 위해 쿠폰 발급 요청시 Redis로 데이터를 모으고 RabbitMQ로 Spring Batch에 데이터를 보내 10분 배치로 DB에 인서트
- 포인트
- 포인트 REST API 구축과 UI 구현하였습니다.
- 포인트 정책 REST API 구축과 UI 구현하였습니다.
- 인프라
- Spring Eureka, Spring Gateway, Docker compose를 사용하여 CI/CD 구현
- 카테고리 (CRUD)
- 2단계 이상 자기 참조 카테고리 구현
- 메인 페이지 카테고리 전체 조회 UI 구현
- 도서
- 도서 페이지 조회/정렬 (이름순, 조회순, 좋아요순, 가격순) - 내림차순/오름차순 구현
- 메인/도서 상세 페이지 UI 구현
- 리뷰 (CRUD)
- 등록 : 자신이 구매한 도서에서만 작성이 가능하도록 구현 (toast ui 이용, 이미지 등록 가능)
- 삭제 : 관리자 권한 확인/삭제 사유 적은 후 soft delete -> 각종 조회 시 리뷰 상태가 delete인 경우 조회에서 제외되도록 구현
- 조회 : 마이페이지에서 자신이 작성한 리뷰 페이지/ 도서 상세 페이지에서 해당 리뷰 페이지 조회/정렬(추천순/날짜순)되도록 구현
- 도서-좋아요 (CRD)
- 리뷰-좋아요 (CRD) : 자신이 작성한 리뷰에서는 좋아요 추가되지 않도록 구현
- 리뷰-댓글 (CRD)
- 인프라
- Git, GitAction, Docker로 네트워크를 설계 프로젝트의 유지보수성 높임
- Spring cache
- redis cache를 이용해서 메인 페이지(도서 조회/카테고리 조회) 성능 약 96% 개선 (5000개의 요청이 갔을 때 6092ms -> 240ms)
- 프론트
- 타임리프 레이아웃(header, footer, sidebar, login_check.js) 설정
- 회원
- 멤버 정보 수정 및 삭제 구현
- 멤버 인증 정보 관련 API 작성
- JWT, Redis 활용한 인증 시스템 구현
- 로그인 및 로그아웃 기능 구현
- 스프링 게이트웨이
- 클라이언트 요청을 각 서비스로 라우팅하고, JWT를 검증하여 유효한 요청만 전달
- 회원
- 회원가입 및 탈퇴 구현
- 로그아웃 구현
- 멤버 정보 조회 구현
- 멤버 정보 삭제 조회
- Payco 인증 구현
- 휴면 상태 인증번호로 인증 후 해지 구현
- 스프링배치
- 회원 구매 비용 주기적으로 확인하여 등급변경 구현
- 회원 마지막 접속일 주기적으로 확인하여 휴면 상태 변경
- 주문
- 주문 내역 조회 (회원, 비회원) UI 구현
- 주문 내역 상태 변환 구현
- 주문 환불 구현 및 결제 취소 구현 및 UI 구현
- 회원 주문 및 장바구니 서비스 구현
- 도서
- 북 태그 서비스 구현
- ERD
- 관리 및 보수
- 도서
- 도서 REST API 구축
- 도서 설명에 Toast UI를 적용시켜 다양한 방식의 도서 설명 활용성을 증가
- 도서 이미지를 object storage에 저장하여 유지보수를 높임
- 알라딘 API를 통해 도서 등록 기능 구현
- 검색
- 도서 검색 REST API 구축
- Elastic Search 도입으로 2.7배 속도 개선
- Elastic Search nori, ngram을 적용하여 Full Text Search 구현
- Elastic Search 사전 정의어, 동의어, 금지어 구현
- 스프링 배치
- 배치 서버를 통해 Elastic Search 데이터 입력 및 백업 데이터 생성
- front
- Spring Security를 사용하여 회원의 인증, 인가 확인 기능 구현
- 기타 편의기능
- Log & Crash Search 적용하여 로그 수집
- Key Manager 적용하여 정보 보안
- Rest Doc, Swagger 사용하여 API 명세서 적용
- 꾸준히 변경할 때 마다 버전 관리하여 0.05버전이 최종 버전이 되었습니다.
- 정주혁
- DDL코드보기
- Spring Gateway가 각 서버를 효율적으로 찾아가기 위해 Spring Eureka를 사용하여 서버의 내부 정보를 캐싱하여 네트워크를 설계하였습니다.
- Client Side 로드밸런싱을 하기위해 OpenFeign을 사용하여 각 서버에 효율적으로 접근하도록 네트워크를 설계하였습니다
- 여러 서버에서 같은 토큰으로 인증을 관리하기 위해서 JWT 토큰을 도입하였습니다.
체계적이고 효율적인 관리를 위해, Github Project을 활용하여 프로젝트를 진행하였습니다.
- 매일 9:30에 RoadMap과 BackLog를 활용하여 스크럼 회의를 진행했습니다.
- 스크럼은 평일, 하루에 한 번씩 진행하였습니다.
- 개발시 Issue가 나왔을때 Issue관리를 통해서 해결하였습니다.
- git flow branch 전략은 main/develop/feature로 나누어 개발을 하였습니다.
- feature는 각각 기능을 만들때 사용하였고
- develop은 기능이 완료되고 확인이 되었을때 pr을 올려 merge를 진행했습니다.
- main은 배포시에 merge를 진행하였습니다.
- 완성되지 않은 코드도 PR로 올려 팀원들이 코드리뷰를 지속적으로 진행하였고
- 팀원들이 전부 한번씩 확인해야만 코드를 merge할 수 있게 하였습니다.
- 일정은 도서, 주문, 회원 파트로 나누어서 일정을 유연하게 관리하였습니다.
- 처음부터 중요도가 있는 파트에 일정을 배분하였습니다.
- Spring REST DOC을 사용하여 API 명세서를 만든 후 Swagger UI를 사용하였습니다.










