SaaS를 위한 Fóir

제품 하나의 스키마가 많은 고객을 서비스하며, 작업의 대부분은 고객 데이터를 서로 분리하는 일입니다. Fóir에서는 스키마를 의도적으로 공유하고, 격리는 직접 작성하는 것이 아닙니다.

하나의 스키마, 하나의 변경 지점

멀티 테넌시는 보통 선택을 강요합니다. 모든 고객이 한꺼번에 따라 움직여야 하는 하나의 스키마, 또는 1년 뒤에는 아무도 안전하게 바꿀 수 없는 고객별 포크 중 하나입니다.

Fóir에서는 모델을 프로젝트에 한 번 정의하면 그 안의 모든 고객 조직이 이를 상속합니다. 고객별 사본이 아니라 하나의 정의이므로, 이를 수정하면 모든 고객이 제공하는 내용이 바뀝니다. 고객은 나머지 스키마를 포크하지 않고도 여러분의 모델 아래에 자신만의 모델을 정의할 수 있습니다.

공유된 스키마는 공유된 데이터가 아닙니다

감당할 수 없는 실패는 한 고객이 다른 고객의 행을 읽는 것인데, 대부분의 스택에서 이를 막는 것은 누군가 기억해서 쓴 조건절 하나뿐입니다.

각 고객은 프로젝트 안의 조직이며, 고객이 쓰는 모든 행에는 데이터베이스에서 그 조직이 표시됩니다. 액세스는 어떤 코드 경로가 실행되든 상관없이 애플리케이션 아래의 Postgres가 강제 적용하므로, 고객을 지정하지 않은 요청은 모든 행이 아니라 아무 행도 돌려받지 못하고, 데이터를 둘 새 위치는 규칙 없이 출시될 수 없습니다. 코드의 어떤 읽기나 쓰기도 고객을 지정하지 않습니다. 실행에 사용된 자격 증명이 결정하므로, 쿼리를 엉뚱한 고객으로 향하게 할 수 없습니다.

고객 세팅은 API 호출 한 번입니다

고객을 가입시키려면 보통 테넌트를 만들고, 브랜딩하고, 시드 데이터를 넣는 프로비저닝 스크립트가 필요하며, 단계가 실패하면 그중 절반이 남은 채로 방치됩니다.

호출 한 번으로 고객을 세팅하며, 고객 식별자는 여러분이 정합니다. 브랜딩이 포함된 조직이 만들어지고, 설정을 기록하고, 첫 구성원을 추가하고, 그 고객으로 한정된 키를 발급할 수도 있습니다. 고객은 복사할 스키마 없이 곧바로 여러분의 모델을 상속합니다. 같은 식별자로 다시 호출하면 두 번째 고객을 만들지 않고 완료되지 않은 단계부터 이어서 진행합니다.

가장 큰 고객이 물어볼 것

더 큰 시장으로 올라서게 해 주는 계약에는 보안 검토가 따라오고, 정직한 답은 대개 의도를 그린 도식입니다.

여기서 격리는 정책이 아니라 데이터베이스 메커니즘입니다. 고객의 사용자는 고객이 소유한 도메인에서, 여러분이 아닌 고객의 이름이 담긴 화면으로 로그인합니다. 고객이 자신의 데이터를 요청하더라도, 그 조직으로 수행한 내보내기에는 해당 고객의 행만 담기고 다른 고객의 행은 없습니다. 모든 읽기를 제한하는 규칙이 내보내기도 똑같이 제한하기 때문입니다.

모든 고객이 처음부터 갖는 것

멀티 테넌트 제품에서 한 번 구축하고 계속 유지해야 하는 부분들입니다.

고객 사용자를 위한 로그인

가입, 비밀번호, 일회용 코드, 소셜 및 OIDC를 고객이 소유한 도메인에서 제공합니다.

고객의 이름으로

조직별 로고, 색상, 발신자 이름, 지원 주소를 사용자에게 보이는 화면과 이메일에 사용합니다.

고객마다 하나의 키

한 고객으로 제한된 키는 요청에 무엇이 적혀 있든 다른 곳으로 향하게 할 수 없습니다. 백오피스는 키 하나를 보유하고 요청마다 고객을 지정합니다.

고객 계정 내부의 역할

설정에서 선언하는 고객 역할로, 권한 시스템을 직접 구축하지 않아도 고객의 팀에 관리자와 구성원이 생깁니다.

사용량 측정

고객별로 롤링 윈도우 기준으로 오퍼레이션에 할당량을 두고, 콘텐츠 개인화에 쓰는 것과 같은 오디언스를 이용해 소속 세그먼트에 따라 제한할 수 있습니다.

같은 형태의 환경

하나의 설정에 스테이징 프로젝트와 프로덕션 프로젝트를 지정하므로, 스키마 변경을 고객에게 닿기 전에 안전한 곳에서 먼저 시험할 수 있습니다.

고객별 사용량

레코드, 미디어, 활성 사용자, 이메일을 조직별로 집계하고 각각 상한을 설정할 수 있어, 고객마다 사용하는 양을 확인하고 제한할 수 있습니다.

백그라운드 작업

조직별 오퍼레이션, 스케줄, 이벤트 훅을 재시도와 실행 기록과 함께 제공합니다.

미디어

변환과 반응형 렌디션을 갖춘 에셋 라이브러리와 파일에 대한 액세스 규칙.

한 번 모델링하고, 두 번째 고객을 추가하세요

프로젝트를 만들고 제품이 사용하는 모델을 푸시하세요. 다음 고객은 그 안의 조직입니다.