안녕하세요!
벌써 무더운 날씨가 지나고 쌀쌀한 날씨가 찾아오고 있는 요즘입니다.
면역력이 떨어지는 환절기 조심하시고 건강한 연말을 준비하셨으면 좋겠다는 말씀 드리면서
해당 글을 쓰게 된 계기와 함께 궁금증에 대한 내용을 조심스레 작성해보겠습니다.
현재 대략 3명 정도의 인력(백엔드+기획 / 프론트 / 기획+디자인)으로 토이 프로젝트를 진행하고 있습니다.
서비스의 개요는 특정 카테고리&내가 원하는 기준에 해당하는 "내주변"식당의 위치를 조회하는 서비스 + 여러 조건에 대해 실시간으로 선택하며 달라지는 결과들을 확인하는 서비스를 기획하고 있습니다.
향후 예약 기능도 추가할 계획도 하고 있구요,
서비스의 전체적 느낌은 네이버 지도 + 망고플레이트 + 테이블링 정도 입니다.
조회가 많고 다양한 쿼리문이 나올 것 같고
지역/지리 정보를 빈번하게 사용할 것 같아 MySQL이 아닌 PostgreSQL에 관심이 생기기 시작했고
자연스레 많은 고민과 궁금증이 생기게 되어 이렇게 찾아와 질문드리게 되었습니다.
이에 대한 주요 질문의 내용은 아래와 같습니다.
[PostgreSQL을 고려하는 이유]
많은 양의 지역정보(행정동 경계 및 구역)를 빈번하게 사용할 예정 -> 데이터 타입(geometry) 이 적절하고 조회 작업이 많은 면에서 효율적일 것이라고 생각
PostGIS를 사용해보고 싶습니다. (현재 erd 작성에 사용하고 있는 예시 : https://www.erdcloud.com/d/2mDmcrHWY3CqW4Rrp )
PostgreREST 라이브러리로 REST 방식 사용 가능 -> 오픈 API
다양한 객체 타입으로 데이터 조회하는 기능이 많은 서비스
여러가지 조건(복잡한 쿼리 예상)을 적용할 검색 조회 서비스
[고민하는 이유]
오픈 API를 많이 사용할 예정( 소셜로그인 , 행정동 경계, 소셜 공유, 지도 등) 인데 공식 문서에서는 보통 REST API 방식의 사용법만 찾을 수 있음.
부족한 개인 역량..(MySQL만 사용한 적이 있습니다..) -> 충분한 학습없이 시간낭비 할 가능성이 높은데 혼자만 진행하는 프로젝트가 아닌 팀원들이 함께 진행하는 프로젝트여서 더욱 고민이 됩니다.
[찾아본 결과(확실하진.. 않습니다ㅠ)]
MyBatis & Master-Slave 형식으로 각각의 Configuration 및 properties 관리를 통해 다중 db 사용
DB Link를 활용하여 원격으로 서로 다른 table의 정보를 받아와서 사용하는 방법
하지만 보통 MySQL과 Maria를 연결(DB 특성이 유사)의 예시만 찾아볼 수 있었고
대부분 PostSQL로 이관하는 내용이 가장 많았습니다.
생각했던 것 처럼 보안이나 운용 측면에서 관리하기 어려움이 있는 요소이다 보니
레퍼런스도 많지 않아 위와 같이 확실하지 않은 방법으로 유추하고 있습니다.
사실 프로젝트 규모나 서비스 기능 복잡도 측면에서는 이렇게까지 번거롭게 하지 않고
하나의 DB(MySQL)로도 충분히 작동하는데 문제 없겠지만
서비스에 조금 더 최적화된 DB라고 생각되기도 하고 경험해보고 싶은 마음에 이런 고민을 하고 있습니다.
혹시나 현업에서도 여러 DB를 한 서비스에서 사용하는 경우가 많은지
많다면 효율성 증진이나 개선된 사항으로 어떤 점 들이 있는지, 어떤 방식으로 연결하는지 궁금합니다 ㅠㅜㅜ
너무나도 부족한 역량과 지식을 기반으로 허술한 질문을 드려 죄송합니다..!!
직접적인 해결방법이 아니더라도 선생님께서 생각하시는 어떤 것이든 전달해주시면
적극적으로 습득하고 활용해보겠습니다..!!
감사합니다.
안녕하세요. 정동규님^^
실무에서도 하나의 서비스에 여러 DB를 사용하는 경우는 아주 많습니다. DB마다 각각의 특성이 있기 때문이지요. 추가로 제가 발표한 배달의민족 마이크로서비스 여행기를 보시면 도움이 되실 것 같아요.
그런데 여러 DB를 사용하면 운영하기가 어렵기 때문에 토이 프로젝트라면 처음부터 너무 고민하기 보다는 가장 익숙하고 쉬운 DB로 시작하는 것을 권장합니다.
감사합니다.
답글
정동규
2022.10.06바쁘신 일상이실텐데도 불구하고
친절한 답변주셔서 너무 감사드립니다!!
영한님께서 공유해주신 링크를 참고하고
해주신 말씀 명심하면서 프로젝트 진행해보도록 하겠습니다!!
감사합니다!!