/////
Search
Duplicate

ThreeFun 앱 프로젝트

생성일
2022/09/01 12:36
태그
기간

프로젝트 설명

게임을 더욱 더 재밌게 즐길 수 있도록! 도와주는 안드로이드 앱 취미 서비스
게임에 참여를 원하는 사람들이 모여, 상금을 걸어 더 재밌고 열정적인 게임을 즐길 수 있습니다.
내 위치 주변에서 나와 같은 취미를 즐길 사람을 구하고 친목을 쌓을 수 있습니다.
앱 내의 여러 유저들과 팔로우 기능을 통해 더 넓은 곳에서 이루어지는 게임들을 확인하고 즐길 수 있습니다.
ThreeFun이란 3가지의 재미를 주는 앱이라는 의미에서 만들었습니다.

개발 환경

운영체제 : Windows 10
통합개발환경(IDE) : IntelliJ
JDK 버전 : JDK 11
데이터 베이스 : AWS RDS (MySQL)
빌드 툴 : Gradle
관리 툴 : Git, GitHub

Dependencies

Spring Security
Lombok

기술 스택

Server
SpringBoot, AWS EC2, Nginx, php, RDS, DataGrip

구현 기능

사용자 프로필 조회 API
팔로우/언팔로우 API
팔로우, 팔로워 조회 API
메인 화면 조회 API
팀 조회, 생성, 수정, 삭제 API
팀 입장, 탈퇴 API
모임 완료 동의 + 결제 API
댓글 등록, 수정, 삭제 API

Learned

지난 프로젝트에서는 Spring Data JPA를 주로 사용했었다면, 이번 프로젝트는 JPA 없이 구현하였습니다. 스프링에서 제공하는 모듈에만 의존하는 것이 아닌, 직접 EntityManager와 Hibernate에 접근하여 JPA의 본질을 공부하고 싶었습니다. AqueryTool을 사용하여 DB를 설계하고 쿼리문을 통해 DataGrip에 테이블을 생성하였습니다. JPA처럼 프로젝트 내에서 Entity 객체를 만들고 연관관계 매핑 후 자동으로 생성되는 테이블과 달리, 직접 테이블을 생성하고 쿼리문을 통해 데이터를 조작하여 가공해 보았습니다.
클라이언트 단으로부터 요청받은 모든 데이터를 validation 처리와 정규 표현 검증을 진행한 후, 각 에러에 맞는 코드와 메세지를 생성하여 응답함으로써 클라이언트와의 에러 처리 과정에서 효율적이면서 빠르고 정확하게 처리를 진행할 수 있도록 하였습니다.
서비스단은 Service 에서 주로 처리하였는데, 이를 Service와 Provider로 분리하여, Service에서는 Create, Update, Delete 로직 처리와 Provider는 Read의 비즈니스 로직 처리를 나누어 구현하였습니다. 로직을 나눠서 처리함으로써 CRUD 내에서도 select와 그 외의 기능 구분이 확실하게 되었고, 추가적으로 코드의 가독성도 올라 유지보수가 편리해졌습니다.
쿼리문은 Dao를 통해 JdbcTemplate으로 처리하였습니다. 쿼리문으로 데이터를 주고받는 로직을 구현해보며 느낀점은 기존에 사용했던 JPA가 단순 DB 접근 방면에서는 편리한 부분도 있지만, 복잡한 부분은 직접 쿼리문을 작성할 필요가 있었기에 JPA로는 한계가 있을 것 같다는 생각을 했었습니다. 이번 프로젝트는 쿼리문을 모두 직접 작성하였기에 이를 통해 정확하고 필요한 데이터만 불러와 이를 가공하고, 전달해주어 성능적으로 효율성이 높아짐을 많이 느꼈습니다.

Link

ThreeFun_Server
rladuswl