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

chore: 플그 db 연결 작업 #376

Merged
merged 11 commits into from
Sep 16, 2024
Merged

chore: 플그 db 연결 작업 #376

merged 11 commits into from
Sep 16, 2024

Conversation

mikekks
Copy link
Member

@mikekks mikekks commented Sep 14, 2024

👩‍💻 Contents

  • 플그 db 연결 작업을 진행했습니다.
  • read-only 계정을 만들어 일단 플그 dev 테이블만 or 플그 prod 테이블만 조회 가능하도록 했습니다.
  • 로컬의 경우, 현재 로컬 db에 플그 테이블이 추가되도록 생각했는데 의견 궁금합니다!
  • 플그의 member_block은 연결시켜놨습니다! 간략하게 TestService 파일에 테스트 가능한 코드도 적었는데 이는 기능 구현할 때 삭제하면 좋을 것 같습니다!
  • secret 값 변경은 노션에 업데이트했습니다!

테스트 (플그 db의 member_block 데이터 조회)

스크린샷 2024-09-15 오후 5 57 14

📝 Review Note

  • 문제 없이 잘 동작하는 거 확인하고, 플그에 있는 테이블에 접근해서 조회하는데도 성공했습니다!
  • 하지만 아직 초기이고, 혹시 모르니 작업 전에 db를 pg_dump 로 db 백업 만드는 작업이 선행되면 좋을 것 같습니다! (약 3분이면 백업가능, 익숙치 않으시면 바로 말씀주세요!!)

📣 Related Issue

✅ 점검사항

  • docker-compose.yml 파일에 마이그레이션 한 API의 포워딩을 변경해줬나요?
  • Spring Secret 값을 수정하거나 추가했다면 Github Secret에서 수정을 해줬나요?
  • Nestjs Secret 값을 수정하거나 추가했다면 Docker-Compose.yml 파일 및 인스턴스 내부의 .env 파일을 수정했나요?

@mikekks mikekks added the 🪛 chore 기능 수정 label Sep 14, 2024
@mikekks mikekks self-assigned this Sep 14, 2024
Copy link

height bot commented Sep 14, 2024

Link Height tasks by mentioning a task ID in the pull request title or commit messages, or description and comments with the keyword link (e.g. "Link T-123").

💡Tip: You can also use "Close T-X" to automatically close a task when the pull request is merged.

hoonyworld
hoonyworld previously approved these changes Sep 15, 2024
Copy link
Member

@hoonyworld hoonyworld left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 민규님!

두 개의 datasource 연결 관련 코드가 문제없이 잘 이루어져 있는 것 같습니다!(블로그 참조하면서 코드 비교를 해본 결과입니다 ㅎㅎ)

작업 전에 db를 pg_dump 로 db 백업 만드는 작업이 선행되면 좋을 것 같다고 말씀하셨는데, 이 dump 파일은 작업이 시작되면 notion에 업로드 해두겠습니다.

또한, "로컬의 경우, 현재 로컬 db에 플그 테이블이 추가되도록 생각했는데 의견 궁금합니다!"라고 말씀하셨는데, local-yml 파일에 플그-dev member_block 테이블을 연결하셨다는 말씀이실까요? 아니면, 로컬 db에 플그-dev member_block 테이블을 추가하셨다는 말씀이실까요?

저는 전자가 더 dev, prod와 일관된 환경을 관리할 수 있어서 좋은 방법인 것 같습니다.

@mikekks
Copy link
Member Author

mikekks commented Sep 16, 2024

고생하셨습니다 민규님!

두 개의 datasource 연결 관련 코드가 문제없이 잘 이루어져 있는 것 같습니다!(블로그 참조하면서 코드 비교를 해본 결과입니다 ㅎㅎ)

작업 전에 db를 pg_dump 로 db 백업 만드는 작업이 선행되면 좋을 것 같다고 말씀하셨는데, 이 dump 파일은 작업이 시작되면 notion에 업로드 해두겠습니다.

또한, "로컬의 경우, 현재 로컬 db에 플그 테이블이 추가되도록 생각했는데 의견 궁금합니다!"라고 말씀하셨는데, local-yml 파일에 플그-dev member_block 테이블을 연결하셨다는 말씀이실까요? 아니면, 로컬 db에 플그-dev member_block 테이블을 추가하셨다는 말씀이실까요?

저는 전자가 더 dev, prod와 일관된 환경을 관리할 수 있어서 좋은 방법인 것 같습니다.

블로그 참조하시면서 리뷰해주셔서 감사합니다 ㅎㅎ

dump 파일은 로컬에만 일단 저장해두셔도 상관없을 것 같습니다!! 문제 생길일은 거의 없을거 같아서요! 참고로 저는 어제까지의 데이터 dump 파일 로컬에 가지고 있습니다.

"로컬 db에 플그-dev member_block 테이블을 추가" 였습니다! 사실 이 부분은 고민이 많았는데요!
'로컬환경에서 크루 테이블은 local db이고, 플그쪽만 dev db로 해도 괜찮을까?'라는 생각이 들었습니다! 플그의 dev db는 다른 팀과 의존성이 깊기 때문에 prod dev와 마찬가지로 지워지면 큰일이라고 생각하는데요! '로컬환경에서 그리 어렵지 않은 실수로 플그 dev db 가 지워질 수도 있겠다' 라는 생각이 들었습니다! 왜냐하면 local 환경에서는 생각보다 ddl-auto: create 를 사용할 수 있는 케이스가 조금 있다고 생각하기 때문입니다! 반면 dev나 prod에서는 절대 ddl-auto: create 옵션을 사용할 일이 없다고 생각이 들어 이렇게 구현했는데요!

이거에 대해서는 의견 궁금합니다!!

@hoonyworld
Copy link
Member

블로그 참조하시면서 리뷰해주셔서 감사합니다 ㅎㅎ

dump 파일은 로컬에만 일단 저장해두셔도 상관없을 것 같습니다!! 문제 생길일은 거의 없을거 같아서요! 참고로 저는 어제까지의 데이터 dump 파일 로컬에 가지고 있습니다.

"로컬 db에 플그-dev member_block 테이블을 추가" 였습니다! 사실 이 부분은 고민이 많았는데요!
'로컬환경에서 크루 테이블은 local db이고, 플그쪽만 dev db로 해도 괜찮을까?'라는 생각이 들었습니다! 플그의 dev db는 다른 팀과 의존성이 깊기 때문에 prod dev와 마찬가지로 지워지면 큰일이라고 생각하는데요! '로컬환경에서 그리 어렵지 않은 실수로 플그 dev db 가 지워질 수도 있겠다' 라는 생각이 들었습니다! 왜냐하면 local 환경에서는 생각보다 ddl-auto: create 를 사용할 수 있는 케이스가 조금 있다고 생각하기 때문입니다! 반면 dev나 prod에서는 절대 ddl-auto: create 옵션을 사용할 일이 없다고 생각이 들어 이렇게 구현했는데요!

이거에 대해서는 의견 궁금합니다!!

말씀을 듣고 나니, local 환경에서는 ddl-auto: create를 사용할 수 있는 케이스가 꽤 많을 것 같다고 생각됩니다!(ex. 테스트 중 DB가 꼬이는 issue 등)
따라서 의견을 주신대로 로컬 db에 플그-dev member_block 테이블을 추가하는 방식이 안정적인 환경을 위해서는 적합할 것으로 판단이 됩니다.

그런데, application-local.yml에서 PLAYGROUND_LOCAL 설정을 Crew 데이터베이스에 연결하는 부분에서 한 가지 이슈가 있습니다. PlayGround 데이터베이스에 접근할 때는 레포지토리에서 @Qualifier("secondaryEntityManagerFactory") 속성을 명시해줘야 합니다. 문제는 로컬 환경에서는 member_block이 Crew 데이터베이스에 연결되어 있어, 이 속성을 적용하지 않아도 DB 접근이 가능하다는 점입니다.

이로 인해, 로컬 환경에서는 @Qualifier("secondaryEntityManagerFactory")를 명시하지 않아도 member_block 테이블에 정상적으로 접근할 수 있기 때문에, 문제가 없다고 착각할 수 있습니다.
그렇게 판단하고 dev나 prod 환경에 배포했을 때, 해당 설정이 적용되지 않아 작동이 되지 않을 테고요...

이 문제를 해결하기 위한 방법으로, 로컬 환경에 스키마를 하나 더 만들어 그 스키마에 플그-dev member_block 테이블을 추가한 후, 이를 secondary datasource로 연결하는 방안을 제안합니다. 이렇게 하면 로컬 환경에서도 @qualifier("secondaryEntityManagerFactory")를 명시해야지만 플그-dev member_block 테이블에 접근할 수 있어, 위에서 말했던 실수를 방지할 수 있을 것 같아요 ㅎㅎ

@mikekks
Copy link
Member Author

mikekks commented Sep 16, 2024

@qualifier("secondaryEntityManagerFactory")

좋은 의견인것 같습니다 ㅎㅎ 해당 부분 수정해서 PR 올렸습니다 !!

@mikekks mikekks merged commit 633c66c into develop Sep 16, 2024
1 check passed
@mikekks mikekks deleted the chore/#371 branch September 16, 2024 12:01
mikekks added a commit that referenced this pull request Sep 17, 2024
* �chore: 유저관련 temp API 추가 (#359)

* del(meeting): 모임 지원자 목록 csv 파일 다운로드 temp 삭제

* del(meeting): 모임 게시글 댓글 리스트 조회 temp 삭제

* chore(meeting): 유저 관련 API temp 버전 추가

* �chore: 모임 관련 API 스웨거에 보이는 응답값 수정 (#361)

* chore(meeting): 모임 활동 시간 Dto 반환 수정

* docs(meeting): status 스웨거상 enum 으로 보이게 수정

* chore(meeting): dto내 NotNull 오류 수정

* docs(meeting): 1,2,3 -> 0,1,2 로 수정

* docs(meeting): number -> integer 로 수정

* feat: 모니터링 서버 구축 (#357)

* add(setting): actuator 및 prometheus exporter 설정

* add(yml): 액츄에이터 관련하여 커스텀 포트 및 path 적용

* chore(config): 헬스체크 엔드포인트 화이트리스트에 추가

* chore(config): 화이트리스트 한 곳에서 관리할 수 있도록 코드 구조 변경

* chore(Advertisement): id, 게시 시작일 데이터 추가 (#365)

* refactor: 시큐리티 config 코드 개선 및 헬스 체크 방식 변경 (#363)

* refactor(config): 중복코드 제거

* del(config): 사용하지 않는 코드 제거

* fix(User): AppliedCount -> ApprovedCount 로 변경 (#374)

* feat(application-local.yml): application-local.yml 세팅 (#375)

* fix(Post): desc 데이터 추가 (#378)

* �chore: 플그 db 연결 작업 (#376)

* feat(MemberBlock): 플그의 MemberBlock 테이블 등록

* infra(Playground): 플그 db 연결

* add(Playground): 차단 관련 repository 추가

* feat(Playground): 기능 테스트를 위한 임시 API 개발 (삭제 필요)

* fix(config): 테스트 db는 기존대로 유지

* chore(config): local db 설정을 위한 수정

* chore(yml): prod yml 수정

* chore(yml): 테스트를 위한 API 수정

* fix(config): validate 추가

* del(config): 사용하지 않는 어노테이션 삭제

* chore(local,config): local-yml 수정

* refactor(ci&cd): docker hub 푸시할 때 태그 추가 (#380)

---------

Co-authored-by: DongHoon Lee <125895298+hoonyworld@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

chore: 플그 db 설정
2 participants