Spring boot 를 사용하여 REST API를 설계 및 구축하고 문서화하여, Vue.js 와 연동하여 랜덤 소개팅 웹 어플리케이션을 제작한다.
- Java 8
- Gradle
- SpringBoot
- Spring Data JPA
- Spring Web MVC
- Spring Security Oauth2
- Spring Rest HATEOAS
- Spring Rest Docs
- Vue
- Vuex
- Vue-Router
- Axios
- Vuetify
- Travic-CI
- AWS CodeDeploy
- Spring Security 와 OAuth2 Server 구축으로 Access Token 및 Refresh Token을 사용하여 사용자 인증 및 인가
- JWT Token을 사용한 인증 시스템
- Spring Data JPA 와 Maria DB를 사용하여 데이터를 저장하고 처리
- Vue 와 Spring boot 서버가 통신하기 위해 REST API 설계
- /v1/posts, /v1/comments, /v1/matching 와 같이 API 버전 관리
- Spring Rest Docs과 테스트 코드를 이용하여 최신화된 API Document 제공
- Rest API Document 바로가기
MatchingScoreComparable
인터페이스를 통해 매칭알고리즘과 도메인 객체 분리- 매칭 알고리즘은 현재는 데모버전이므로 랜덤으로 매칭되게 한다.
Spring Scheduler
을 이용하여 일주일에 한번 매칭데이터를 일괄 처리
Vuetify
를 이용한 UI 개발Vuex
로 어플리케이션 상태 관리Axios
로 REST API와 HTTP 통신
- Github Repository 로 버전 관리
- Travis-CI 를 사용해 Git의 Master branch가 push 될 때 마다, 자동으로 빌드되는 환경 구현
- Travis-CI 와 AWS S3, CodeDeploy와 연동
- 리눅스 쉘스크립트를 작성 후 EC2 인스턴스에 자동으로 배포되도록 구현
- Nginx 와 스프링 서버 연동
- 무중단 배포를 하기 위한 profiles 설정 및 스크립트 작성
소개팅에 필요한 프로필 및 원하는 이상형을 입력받아 회원가입을 합니다.
연애 및 소개팅과 관련된 내용을 자유롭게 게시할 수 있도록 하였습니다.
댓글 시스템
과 게시물 좋아요
기능을 구현하였습니다.
소개팅은 1주일에 한번씩 일괄적으로 진행되며, 소개팅 신청을 한 회원들 사이에서 이루어집니다.
소개팅 신청하기→
버튼을 눌러 소개팅을 신청할 수 있고, 소개팅이 진행되는 날까지 남은 시간이 상단 보라색 패널에 표시됩니다.
후 에, 결과확인→
버튼을 통해 소개팅 결과를 조회할 수 있고, 소개팅이 매칭된다면 상대방 카카오톡 ID를 알 수 있습니다.
회원의 프로필 수정 및 활동 이력을 조회할 수 있습니다.
- 매칭 알고리즘 고도화
- Spring Scheduler 를 통해 데이터를 일괄처리하는 것을 Spring Batch로 변경
(일괄처리 하는 도중 예외 및 에러처리, 신뢰성 등의 이유로)
- 게시물 좋아요 기능에 cache 구현
(현재는 DB에 바로 입출력하기 때문에 부하가 많다)