멀티모듈 아키텍쳐 Monolithic->MSA 전환 생각정리

아이스__아메리·2024년 2월 14일
0

Architecture

목록 보기
4/4

*날림주의
머리속에서 정리한 것들을 글로 남기려는 목적에서 작성했습니다. (삭제할지도...)

Security + 로그인 구현과 나머지는 모듈화로 분리

머리속으로 구현 모놀리식 서버 구현

Service-Repository 도메인별, 패키지별로 모듈화

  1. Auth Module -> Auth Server Module
    Security를 포함한 로그인 기능 및 회원 가입, 탈퇴
  2. User Module -> User Server Module
    유저 정보, 수정, 탈퇴
  3. Billing Module -> Billing Server Module
    포인트 조회, 결제 등
  4. Shop Module -> Shop Server Module
    상품 구매, 취소
  5. Seller Server Module
    판매자 등록 수정 삭제, 상품 등록, 수정

이라고 가정했을때
각자의 Mondule을 Service Mondule에서 Server Mondule로 전환한다.
메인 서버는 Auth Sever Mondule 이 되고
User Server, Shop Server, Billing Server, Seller Server 로 작동한다.
메인 서버의 외의 나머지 서버는 내부 서버로 명명한다.

현재까지 생각한 시나리오

#1 메인 서버외에 다른 서버들은 외부와 통신하지 않는다.

  • 메인 서버에서 모든 Controller를 작성하고 OpenFeign를 활용하여 타서버간의 통신을 한다. (SSL 설정만 하면 된다.)
    -> 내부 서버는 Security 설정을 하지 않기 때문에 개발 시간 단축 및 유지보수가 간단해진다.
    (보안적으로 괜찮은지 잘 모르겠다.)

#2 서버간 트랜잭션 관리는 try-catch문 사용

  • OpenFeign으로 서버를 사용하기 때문에 예외 발생시에 관리가 가능할 것으로 예상된다. 하지만 서버간의 통신이 실패된다면 Kafka나 다른 MQ가 필요할 것 같다.

#2.1 kafka로 트랜잭션을 관리한다면?

  • spring.kafka.producer.transaction-id-prefix로 트랜잭션 관리가 가능하다
    참고블로그

#3 개발이 완료된 서버는 관리가 간단해진다.

  • 개발이 완료되었다고는 추가 개발 가능성이 낮은 상태라고 하는게 더 정확하다.
  • Shop Server의 경우 주요 기능들을 완료하게 된다면 추가개발이 더이상 없을 가능성이 높다. 이에 경우 서버상태 관리 및 운영 위주로 전환가능하다.

마무리하며

현재까지 생각한 것들을 간단하게 정리해봤으며 글이 추가될 가능성이 있다.

profile
츠케멘 좋아

0개의 댓글