*날림주의
머리속에서 정리한 것들을 글로 남기려는 목적에서 작성했습니다. (삭제할지도...)
Security + 로그인 구현과 나머지는 모듈화로 분리
머리속으로 구현 모놀리식 서버 구현
Service-Repository 도메인별, 패키지별로 모듈화
- Auth Module -> Auth Server Module
Security를 포함한 로그인 기능 및 회원 가입, 탈퇴
- User Module -> User Server Module
유저 정보, 수정, 탈퇴
- Billing Module -> Billing Server Module
포인트 조회, 결제 등
- Shop Module -> Shop Server Module
상품 구매, 취소
- 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
의 경우 주요 기능들을 완료하게 된다면 추가개발이 더이상 없을 가능성이 높다. 이에 경우 서버상태 관리 및 운영 위주로 전환가능하다.
마무리하며
현재까지 생각한 것들을 간단하게 정리해봤으며 글이 추가될 가능성이 있다.