솔루션
테넌트마다 분리된 데이터베이스
고객끼리 테이블을 공유하면 안 된다면 테넌트마다 전용 Relyt One 프로젝트를 제공하세요. 프로젝트는 각각 독립된 PostgreSQL 데이터베이스로, 전용 스토리지, 컴퓨트, 자격 증명을 가지며 백엔드에서 API를 한 번 호출해 만들 수 있습니다.
작동 방식
01
테넌트가 가입하면 프로젝트 만들기
백엔드가 API 키로 Open API를 호출하면서 리전과, 테넌트 데이터베이스의 소유자 역할에 쓸 비밀번호를 전달합니다. 프로젝트는 기본 브랜치와 기본 컴퓨트를 가진 상태로 시작합니다.
curl -X POST "https://relyt.one/api/v1/projects" \ -H "Authorization: Bearer $RELYT_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"name\":\"tenant-$TENANT_ID\",\"orgId\":\"$ORG_ID\",\"region\":\"$REGION_ID\",\"password\":\"$TENANT_DB_PASSWORD\"}"02
테넌트의 연결 정보 저장하기
상태가 READY가 될 때까지 프로젝트의 컴퓨트 목록을 조회한 다음 host를 테넌트 레코드와 함께 저장하세요. 스키마 마이그레이션을 실행하고 표준 PostgreSQL 드라이버로 연결하면 됩니다.
curl "https://relyt.one/api/v1/projects/$PROJECT_ID/computes" \ -H "Authorization: Bearer $RELYT_API_KEY"03
테넌트가 떠나면 프로젝트 삭제하기
프로젝트를 삭제하면 해당 컴퓨트가 삭제되고 프로젝트와 브랜치는 삭제됨으로 표시됩니다.
curl -X DELETE "https://relyt.one/api/v1/projects/$PROJECT_ID" \ -H "Authorization: Bearer $RELYT_API_KEY"
지금 바로 쓸 수 있는 기능
테넌트 간에 아무것도 공유하지 않음
테넌트마다 데이터베이스, 역할, 비밀번호, 연결 문자열이 따로 있습니다. 한 테넌트 데이터베이스의 긴 쿼리, 잠금, 실패한 마이그레이션은 그 데이터베이스 안에만 머뭅니다.
테넌트별 컴퓨트
프로젝트는 각각 전용 컴퓨트에서 실행되며 크기는 CU 단위입니다(1 CU = 1 vCPU + 4 GB RAM). 테넌트가 유휴 상태가 되면 그 컴퓨트는 일시 중지되었다가 다음 연결 시 다시 시작될 수 있습니다.
테넌트 하나만 브랜치하기
모든 테넌트 프로젝트가 브랜치를 지원하므로, 실제로 실행하기 전에 한 테넌트의 데이터를 쓰기 시 복사 방식으로 분기해 마이그레이션을 시험해 볼 수 있습니다.
처음부터 끝까지 자동화
REST Open API로 프로젝트를 만들고, 조회하고, 삭제할 수 있습니다. 첫 번째 생성 요청이 아직 처리 중일 때 같은 요청을 다시 보내면 프로젝트가 하나 더 생기지 않고 202가 반환됩니다.
알아 둘 점
- 무료 요금제에서는 프로젝트를 최대 5개까지 만들 수 있으므로, 현재 테넌트마다 프로젝트 하나를 쓰는 방식은 테넌트 수가 적을 때 적합합니다. 요금제 한도를 넘어 프로젝트를 만들면 403이 반환됩니다.
- Relyt One은 요청을 테넌트별로 라우팅해 주지 않습니다. 각 테넌트와 연결 정보의 대응 관계는 앱에서 관리하세요.