gdsc-kaist / board-of-audit-and-inspection-system

KAIST board of audit and inspection system backend
https://dev-bai.gdsckaist.com/api-docs
0 stars 2 forks source link

postgreSQL backup system #23

Open Byunk opened 9 months ago

Byunk commented 9 months ago

원활한 서비스 운영과 안정성을 위해 데이터베이스의 백업은 필수적이다. 여기에는 크게 두가지 옵션이 있다.

  1. ORM (sequelize)를 이용한 방법 (migration)
  2. postgreSQL의 내장 tool을 이용한 방법 (pg_dump)

위의 두가지 방법에는 각각의 장단점이 존재한다. 먼저 migration을 이용했을 경우:

다음으로 pg_dump를 이용했을 경우:

본 프로젝트의 성격과 진행상황을 고려할 때, 두번째 방법 (pg_dump)가 더 유효한 방법으로 판단된다. 그 이유는 다음과 같다.

  1. 현재는 Node.js를 기반으로 구성되어 있으나, 추후 다른 프레임워크를 이용할 가능성이 존재한다.
  2. sequelize-cli의 초기 설정을 위해 많은 양의 설정이 필요하다. 그에 반해 pg_dump는 별다른 작업이 필요하지 않다.

pg_dump를 이용할 경우 다음과 같은 잠재적 문제점이 존재한다.

  1. DB model 정의에 변경사항이 존재할 경우, backup이 반드시 필요하다. 이는 현재 sequelizesync({ alter: true}) option을 production 환경에도 이용하고 있기 때문이다.
  2. pg_dump를 주기적으로 실행하는 service가 별도로 필요하다. 이 서비스에 문제가 생길 경우, 운영에 치명적일 수 있다. 따라서 alert system 등 추가적인 개발 비용이 수반될 가능성이 존재한다.
Byunk commented 9 months ago

추가로 S3를 mount하여 backup dump를 permanent한 storage에 저장하는 작업이 필요하다. 다음의 옵션이 존재한다.

Byunk commented 7 months ago

@sjuuun RDS 관련 업데이트 있나요?