개발자

개발용 DB와 운영용 DB를 나누는 방법이 궁금해요

2023년 06월 25일조회 993

안녕하세요! 지금 장소추천 서비스를 만들고 있어요. planetScale과 prisma를 이용하고 있어요. 새로 업데이트를 해서 data schema가 변경될 것 같아요. 근데 운영 서버와 개발 서버 모두 하나의 DB에 연결되어 있어서, 개발 시 서비스 운영에 영향을 끼칠거 같은데 어떻게 해결하면 좋을까요? 대학생이고, 처음 만들다보니까 어려움이 많습니다. 많은 도움 부탁드립니다

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 4

김인후님의 프로필 사진

Node.js를 사용 중이신 것처럼 보입니다. 개발 서버와 운영 서버를 나누신 것처럼 디비를 2개 만드시고 각각 환경에 맞게 사용하시면 됩니다. Node는 env를 개발기 테스트기 운영기 등으로 나누어 운영합니다.

이태현님의 프로필 사진

이태현

작성자

프론트엔드 개발자2023년 06월 28일

답변 감사합니다! 디비를 2개를 만든다는게 제가 이해한게 맞나요? 예를 들어, AWS RDS를 사용한다면 instance를 두 개 만들어서 각각 연결한다.

Song님의 프로필 사진

일본에서 시스템엔지니어로 근무중입니다. 운영 서버와 개발 서버 별도로 구축하여 DB도 따로 구축되어 있습니다. 환경은 거의 동일하고 개발 서버에서 개발 및 테스트를 완료 후 운영 서버에 적용하고 있습니다.

이태현님의 프로필 사진

이태현

작성자

프론트엔드 개발자2023년 06월 28일

안녕하세요! 지금 시스템 상황이 다음과 같습니다. - 백오피스 클라 + 서버 - 유저 클라 + 서버 - 하나의 DB 모두, 백오피스와 유저 연결되어있음 서비스는 운영중인 상황입니다. DB의 Schema를 변경하고, 백오피스에 먼저 적용하려고 하는데 이를 위해서는 개발용 DB를 따로 구성해서 개발 DB, 운영 DB 총 두 개의 DB를 사용하는게 맞나요? 답변 주셔서 감사합니다!

삭제된 사용자님의 프로필 사진

삭제된 사용자

2023년 08월 24일

개발시 운영에 영향을 미치지 않도록 되도록 모든 인프라를 분리해야 합니다. 왜냐하면, 개발후 운영에 적용하기 전 모든 부분에서 테스트를 안정적으로 할 수 있어야 하기 때문입니다. 따라서 DB도 개발용/운영용으로 분리되어야 하는게 맞구요, 인스턴스 자체를 분리하시기 바랍니다. 코드베이스의 경우 환경변수 사용등으로 개발/운영 별도의 코드가 나뉘는 일이 최소화 되도록 하시구요~

커리어리 AI 봇님의 프로필 사진

데이터베이스를 관리할 때는 항상 개발 환경(Development Environment)과 운영 환경(Production Environment)을 분리하는 것이 좋습니다. 이를 통해 개발 중에 발생하는 문제가 실제 서비스에 영향을 주는 것을 방지할 수 있습니다. 일반적으로, 개발용 데이터베이스와 운영용 데이터베이스는 같은 스키마를 공유하지만, 데이터는 분리되어 있습니다. 개발용 데이터베이스는 개발, 테스트, 디버깅을 위해 사용되며, 운영용 데이터베이스는 실제 사용자 데이터를 저장하고 관리하는 데 사용됩니다. planetScale과 prisma를 사용하는 경우, 다음과 같은 방법으로 개발용과 운영용 데이터베이스를 분리할 수 있습니다. 1. planetScale에서 두 개의 데이터베이스를 생성합니다: 하나는 개발용이고, 다른 하나는 운영용입니다. 각 데이터베이스에는 서로 다른 접근 권한이 부여될 수 있으며, 필요에 따라 데이터를 복제하거나 마이그레이션 할 수 있습니다. 2. prisma에서는 '.env' 파일을 이용하여 여러 개의 데이터베이스에 연결하는 환경 설정을 할 수 있습니다. 'DATABASE_URL' 환경변수에 개발용 DB와 운영용 DB의 연결 문자열을 지정하고, 개발 환경이나 운영 환경에서 알맞은 DB를 사용하도록 설정할 수 있습니다. 개발용 DB에서 코드 변경사항이 잘 작동하는지 확인한 후, 이 변경사항을 운영용 DB로 마이그레이션하는 것이 일반적인 작업 흐름입니다. prisma에서는 'prisma migrate' 명령어를 이용하여 데이터베이스의 스키마를 업데이트 할 수 있습니다. 개발자로서 이런 방식으로 환경을 분리하는 것은 좋은 습관입니다. 실제 사용자 데이터를 안전하게 보호하면서, 동시에 새로운 기능 개발이나 버그 수정 등에 대한 자유로움을 유지할 수 있기 때문입니다. 많은 도움이 되기를 바랍니다! 만약 추가적인 질문이 있으시다면 언제든지 물어보세요.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!