데이터베이스를 자체적으로 관리할 수 있지만 몇 가지 잠재적인 단점과 문제가 존재한다.
1. 가용성을 확장하고 관리하는 것의 어려움 - 데이터베이스이기 때문에 읽기/쓰기 다중 작업의 동시 발생을 대비해야한다. 따라서 동일한 구성을 사용하고 동일한 데이터베이스 파일로 작업하고, 동시에 실행 중인 다중 데이터베이스가 필요할 수 있다. 이를 위해선 하나의 동일한 데이터베이스에서 작동하는 것처럼 동기화가 보장되어야 한다.
2. 성능 문제 - 트래픽 급증시 성능 문제가 발생할 수 있다. 성능 문제를 해결하기 위해선 데이터베이스 확장을 시스템을 구축 해야한다.
3. 백업과 보안 문제 - 데이터의 안정을 보장하고 허가 없이 엑세스할 수 없도록 보장해야한다. 또한 일부 데이터가 손실되는 경우를 대비하여 이전 백업으로 롤백을 위해 데이터를 정기적으로 백업해야 한다.
이는 프로덕션 데이터베이스에서 우리해 궁극적으로 해결해야 하는 특정된 과제이다. 이를 해결하기 위해 자체 데이터베이스에서 관리형 데이터베이스 서비스로 전환하는 것을 고려해 볼 수 있다.
예를 들어, 관계형 데이터베이스의 경우 AWS RDS(Relational Database Service)가 있으며 NoSql 데이터베이스의 경우 MongoDB 회사에서 제공하는 서비스인 MongoDB Atlas가 있다.
MongoDB Atlas
1. 클러스트 생성
클러스트를 생성했다면 이 클러스트에 배포한 애플리케이션을 연결하는 작업이 필요하다.
2. 애플리케이션 연결
Connect 버튼을 눌러 클러스트에 database와 기본 설정을 입력 후 사용하는 어플리케이션의 Driver와 Version을 선택하면 MongoDB의 엔드포인트를 알려준다.
3. 어플리케이션 코드 수정
기존 MongoDB 엔드포인트 : `mongodb://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${process.env.MONGODB_URL}:27017/course-goals?authSource=admin`
MongoDB Atlas 엔드포인트 :
'mongodb+srv://mongodb:<password>@cluster0.gp9isrt.mongodb.net/?retryWrites=true&w=majority'
수정한 MongoDB 엔드포인트 :
`mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWORD}@${process.env.MONGODB_URL}:/${process.env.MONGODB_NAME}?retryWrites=true&w=majority`
개발에 사용하는 데이터베이스와 운영에 사용되는 데이터베이스를 분리하기 위해 Database 이름을 환경변수로 관리한다.
4. Network Access 및 Database Access 설정
데이터베이스에 접근할 수 있는 IP와 사용자 인증에 필요한 유저 id와 password를 입력하고 해당 유저의 권한을 설정해준다.
이후 3. 어플리케이션 코드 수정 단계에서 환경변수 값을 수정한 것처럼 새로 설정한 MONGODB_USERNAME과 MONGODB_PASSWORD 값을 수정해준다.
'백엔드 개발' 카테고리의 다른 글
쿠버네티스 configuration 파일 (0) | 2023.02.21 |
---|---|
쿠버네티스 구조 (0) | 2023.02.21 |
Docker 다중 컨테이너 배포 (4) | 2023.01.04 |
docker 배포 (0) | 2022.12.31 |
Docker compose (0) | 2022.11.18 |
댓글