으악 개인프로젝트 진짜 시작할 것이다..!!! 라는 다짐과 함께 힘차게 출발~
사실 아이디어는 그렇게 중요한 부분은 아닙니다.
멀티 모듈 기반의 RestApi를 Spring Boot와 Jpa를 기반으로 여러가지 기술들을 적용하여 backend를 만들어 보자는 것이 핵심 아이디어입니다.
일단, todo + diary + 친구와 상호작용의 서비스를 개발할 예정이다.
너무 많은 API를 만드는 것보다, 하나하나 API에 집중해서 보다 빠르게 개발할 것이 필요해보여서 todo는 개발을 생략했습니다.
개발할 서비스를 목록화하면 다음과 같습니다.
- 다이어리
- 친구
- 댓글
- 하트(좋아요)
- 알림
많다..
<예정>
다른사람들의 오픈소스 코드를 많이 참고해보았습니다.
그 결과, 다음과 같이 레이어드 아키텍처 기반의 구조를 만들것입니다.
- core api
- application
- auth
- repository
- global
처음에 위와 같이 구성했는데요, 프로젝트를 실제로 개발하고 모듈과 아키텍처를 더 공부하면서 다음과 같이 구조를 변경하였습니다.
- api-diary
- application
- auth-jwt
- common
- core-mysql
- core-redis
이에 대한 자세한 설명은 후에 포스팅할 멀티 모듈에서 자세히 다뤄볼 예정입니다.
데이터의 요청/응답을 처리하는 패키지입니다.
서비스마다 클라이언트로부터 받는 request와 response, 그리고 이를 다루는 controller가 포함됩니다.
즉, presentation 레이어의 역할입니다.
api로 받은 데이터로 비즈니스 로직을 수행하는 패키지입니다.
주의해야 할 점은, api와 무관하게 (참조하지 않게) 설계 로직을 짜야한다는 것입니다. api가 변경되어도 핵심로직은 똑같아야 하기 때문입니다.
db에 접근하여 정보를 가져오는 패키지입니다.
jpa로 구현할 것입니다.
spring security를 기반으로 jwt토큰 통신을 하고, 여기에 OAuth2(Google, Naver, Kakao)를 추가하여 로그인 처리를 담당할 패키지입니다.
즉, 인증/인가를 담당합니다.
api나 비즈니스 로직과 무관하게 전역적으로 처리해야할 설정을 담는 패키지이다.
- config (swagger/spring ...)
- controllerAdvice / interceptor / filter / resolver ...
- exception
: 전역처리 할 exception을 따로 빼주었다.
git을 사용할 때도 git-flow 브랜치 전략을 사용해서, 깃을 꾸준하게 관리하며 사용해보기로했다! (혼자 하는 프로젝트라 큰 의미는 없겠지만..)
- main
- develop
- feature
- hotfix
자세한 git-flow 전략은 다음을 참고!
https://puleugo.tistory.com/107
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html