Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

db replication 구축 #453

Closed
wants to merge 13 commits into from
Closed

db replication 구축 #453

wants to merge 13 commits into from

Conversation

e-astsea
Copy link
Collaborator

#️⃣ 연관된 이슈

close #452

📝 작업 내용

database replication 을 진행하였습니다.

더 자세한 것은 주말내로 블로깅을 할 예정인데, 간단하게 말하면

  1. db를 복제한다.
  • db를 덤프 떠서 복제함
  • master, slave 구조 (mysql이지원해줌) 을 통해 sync를 맞출 수 있습니다.
  1. db를 연결한다.
  • 코드를 요약하자면 원래 자동으로 db 연결을 진행하는 것을 master, slave 두개를 가져가야하다보니 진행할 수 없습니다. 그래서 직접 dataSource를 삽입해줘야합니다. master/slave 빈을 등록하고 이를 routingDataSource 메소드에서 삽입해줍니다. 그러면 datasource등록이 끝납니다.
  • 스프링 부트 쪽에서 트랜잭션이 시작하기 전에 db connection을 하는데요. 이 과정에서 read/write를 determineCurrentLookupKey 에서 판단하여 빈으로 등록하여 datasource등록한 master/slave를 찾아 이를 사용하는 방식입니다.
  1. 테스트 코드
  • 원래 테스트코드를 작성해서 확인하려 하였으나 현재 저희 테스트는 테스트 컨테이너를 사용하고 있기 때문에 진행하지는 않았습니다.
  1. DB 생성
  • dev 환경 과 prod 환경에 db를 띄워놓고 확인까지는 완료했습니다! 구축과정은 블로깅에 작성할 것 같아요.
  • dev 환경 같은 경우에는 master, slave를 모두 같은 db로 사용해놓을 예정이고 prod만 application.properties를 수정할 생각입니다.
  • 현재 캠퍼스가 아닌관계로 prod 환경 구축은 당장은 못합니다 흐긓ㄱ

큰 걱정

replication을 한다면 db 복제 -> master/slave 연결 과정을 거쳐야 합니다. 다만 db 복제 와 연결 과정 사이에 새로운 db가 들어간다면 replicate db, master db 간 정합도가 깨질 수도 있습니다. 이 과정을 어떻게 해결하면 좋을지 걱정되네요 흠..

💬 리뷰 요구사항

바뀐 파일이 2개가 존재할텐데 여기에 상수값들이 있습니다. 중복이죠. 처음에는 이것을 enum 타입으로 관리하려고 했지만 @qualifier에서 string만 받는 관계로 이렇게 두었는데 이를 한곳에 모아 응집도 높게 해결하고 싶은데 어떻게 할 수 있을까요 ?!?

@e-astsea e-astsea closed this Sep 16, 2023
@e-astsea e-astsea reopened this Sep 16, 2023
@e-astsea e-astsea closed this Sep 16, 2023
@e-astsea e-astsea reopened this Sep 16, 2023
@e-astsea e-astsea closed this Sep 16, 2023
@e-astsea e-astsea deleted the feat/452-db-replication branch September 16, 2023 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants