본문 바로가기
💻 뚝딱뚝딱/북북클럽

[개발일지 #035] 모놀리식 아키텍처를 MSA 아키텍처로 전환하기 (1) - bbc-user-service (User, EmailValidation, Follow 엔티티)

by 뚜루리 2025. 5. 8.
728x90
320x100

🎯 오늘 개발 할 기능

  • 모놀리식 아키텍처를 MSA 아키텍처로 전환하기

🛠️ 개발내용

✅ 모놀리식, MSA 아키텍처가 무엇인지 왜 MSA로 전환하려는지에 대한 내용을 아래의 포스팅을 확인!

 

모놀리식 아키텍처 VS MSA 아키텍처

✅ 모놀리식 아키텍처(Monolithic Architecture)란?애플리케이션의 모든 기능이 하나의 덩어리(프로세스)로 묶여서 돌아가는 구조.특징:단일 코드베이스: 모든 기능(회원, 결제, 주문 등)이 한 프로젝트

ddururiiiiiii.tistory.com


✅ 현재 북북클럽의 아키텍처는

현재 나의 프로젝트는 위와 같은 구조로 모든 도메인이 한 프로젝트에 위치한 모놀리식 아키텍처임. 이 아키텍처 구조를 bbc-user-service, bbc-post-service, bbc-follow-service등 이런 식으로 전환 해보려고 함!

 


📌 프로젝트 생성 하기 (bbc-user-service)

  • spring initializr (https://start.spring.io/) 에 접속해서 사용자 관련 프로젝트를 생성해준다. 디펜던시는 모놀리식 프로젝트에서 사용했던 그대로를 추가해줬다. 나중에 사용하지 않는다면 빼면 되니까...!

 

 


📌 관련 코드 옮기기

com.bookbookclub.bbc_user_service
├── global
│
├── user
│   ├── controller
│   ├── domain
│   ├── dto
│   ├── enums
│   ├── exception
│   ├── policy
│   ├── repository
│   └── service
│
├── emailverification
│   ├── controller
│   ├── domain
│   ├── dto
│   ├── exception
│   ├── repository
│   └── service
│
├── follow
│   ├── controller
│   ├── domain
│   ├── dto
│   ├── exception
│   ├── repository
│   └── service
  • 롬복 셋팅이나, MySQL 설정 등도 모놀리식 프로젝트와 동일하게 하지만 다만 데이터베이스도 이번에 분리하기로 했다. (user DB, post DB등)
  • 그리고 사용자 도메인과 관련된 코드를 그대로 새로운 프로젝트에 옮기면 되는데 프로젝트 구조는 위와 같이 변경하였다.
  • global 패키지 즉, 공통으로 사용하는 코드들도 나중에 분리를 할건데 일단은 공통 코드는 각자의 프로젝트에 그대로 옮기고 제대로 돌아가는걸 확인한 후 분리할 예정임. 코드를 패키지에 맞게 옮기면서 에러나는 부분들을 하나씩 정리해나가면 됨.
  • Email, Follow 도메인의경우 경우 User 도메인 아래 종속적이라고 생각되어 따로 프로젝르를 분리하지 않고 User도메인 안에 편입하려고 함.
  • 코드를 옮기고 정리하고 에러나는 부분들을 고쳐나가서 서버만 돌아가면 일단 기본적인 분리는 된 것. (물론 그 후의 작업들이 더 중요하지만..)

 


 

📌 Swagger(Web API 문서) 적용 하기

Swagger가 무엇이고, 왜 사용하며 적용하는 방법에 대한 내용은 아래의 포스팅 확인

 

Swagger(Web API 문서) 적용

1️⃣ Swagger란?API 명세를 자동으로 문서화해주는 도구.개발자는 API 만들 때 @RestController, @GetMapping 등 스프링 애노테이션만 써도 Swagger가 자동으로 읽어서 정리해줌.API를 테스트/공유/디버그할 때

ddururiiiiiii.tistory.com

 

728x90
320x100