Skip to content

nestarc신뢰할 수 있는 NestJS SaaS를 구축하고, 비동기 작업이 멈춘 지점을 확인하세요.

오픈소스 모듈은 데이터와 전달 경로를 보호합니다. Nestarc Reliability는 payload를 수집하지 않고 요청, 데이터베이스, 큐, 워커, webhook의 증거를 연결합니다.

실행은 로컬에 두고, 전체 경로의 실패를 확인하세요.

오픈소스 패키지는 실행을 애플리케이션 환경 안에 유지합니다. Nestarc Reliability는 각 시스템이 명시적으로 보고한 제한된 운영 증거만 연결하며, 고객 작업을 실행하거나 request body, webhook payload, raw log, SQL을 수집하지 않습니다.

오픈소스 데이터 플레인

실행 경로를 직접 소유하세요

tenancy, idempotency, outbox, jobs, webhook을 NestJS 애플리케이션 안에서 독립적으로 사용하거나 함께 조합할 수 있습니다.

호스팅 컨트롤 플레인

증거가 멈춘 지점을 확인하세요

하나의 작업을 요청부터 외부 효과까지 추적합니다. 현재 파일럿은 읽기 전용이며 복구 제어는 활성화되지 않습니다.

패키지 라인업

Supported 패키지는 호환성 범위와 운영 가이드를 지속적으로 관리합니다. Preview 패키지는 사용할 수 있지만 API와 운영 계약이 아직 발전 중입니다. 상태 표시는 버전 번호나 변경 이력을 대신하지 않습니다.

Supported · v0.14.0tenancy

PostgreSQL RLS + Prisma 멀티테넌시와 테넌트 인식 캐시 키로 데이터 격리를 제공합니다.

Supported · v0.15.0safe-response

Swagger 통합, 페이지네이션, 필드 선택, 에러 카탈로그를 갖춘 API 응답 래퍼입니다.

Supported · v0.3.0pagination

Prisma 7, keyset 커서, 필터, 정렬, Swagger helper를 지원하는 페이지네이션입니다.

Supported · v0.6.0soft-delete

관계 필터, 캐스케이드 삭제, 일괄 복원, purge, 수명주기 이벤트를 지원하는 Prisma soft-delete 확장입니다.

Preview · v0.4.0idempotency

IETF draft-07 Idempotency-Key, 안정적인 fingerprint, Redis/Postgres 저장소, 응답/헤더 재생을 제공합니다.

Preview · v0.4.0audit-log

원자적 Prisma 변경 추적, 체크포인트 내보내기, 내구성 스트림, retention 제어를 제공합니다.

Preview · v0.3.0api-keys

무중단 rotation, IP allowlist, lifecycle hook, 검증 metric을 갖춘 테넌트 범위 API 키입니다.

Supported · v0.5.0feature-flag

캐시 어댑터, Admin API, rollout, 테넌트 override를 지원하는 DB 기반 플래그입니다.

Supported · v0.2.0rbac

타입 안전 권한, fail-closed guard, resource scope, Prisma 저장소, audit hook을 제공합니다.

Preview · v0.2.0outbox

polling, retry, event decorator를 갖춘 Prisma 네이티브 transactional outbox입니다.

Preview · v0.3.0jobs

테넌트 공정 in-memory scheduling, 재시작 안전 BullMQ worker, Redis dedupe, retry, outbox 발행을 갖춘 typed job 실행입니다.

Supported · v0.13.0webhook

HMAC 서명, 멱등 발행, retry·replay 제어, worker 지표, 데이터 보존 정책을 갖춘 outbound webhook 전달입니다.

Preview · v0.2.0data-subject

entity policy, retention, outbox fan-out을 갖춘 GDPR/CCPA export 및 erase 워크플로입니다.

왜 nestarc인가?

멀티테넌트 SaaS 팀은 위험도가 높은 기반 기능을 반복해서 구현합니다. nestarc는 명시적인 호환성 범위, 운영 계약, 알려진 제한사항과 함께 테스트된 빌딩 블록을 제공합니다.

테넌트 격리
쿼리 하나 잘못 쓰면 고객 데이터가 다른 테넌트에 노출됩니다.
PostgreSQL RLS가 데이터베이스 수준에서 격리를 보장합니다.
감사 추적
모든 쓰기 작업에 수동으로 로그를 남기는 건 번거롭고 빠뜨리기 쉽습니다.
Prisma 확장이 CUD를 자동 추적하고 before/after diff를 기록합니다.
피처 플래그
외부 플래그 서비스는 지연, 비용, 새로운 의존성을 추가합니다.
DB 기반 플래그로 테넌트 오버라이드와 퍼센트 롤아웃을 지원합니다.
소프트 딜리트
deletedAt만으로는 유니크 제약 조건이 깨지고 삭제된 레코드가 노출됩니다.
캐스케이드, 복원, 쿼리 필터링을 갖춘 Prisma 확장으로 해결합니다.
페이지네이션
커서 + 오프셋에 필터까지 구현하면 보일러플레이트가 넘칩니다.
12가지 필터 연산자, 정렬, Swagger 문서를 즉시 사용할 수 있습니다.
응답 표준화
엔드포인트마다 다른 API 응답 형식은 프론트엔드 팀을 힘들게 합니다.
에러 코드, 페이지네이션, i18n이 포함된 자동 래핑 응답을 제공합니다.
멱등성
네트워크 재시도는 중복 결제, 중복 주문, 손상된 상태를 만들 수 있습니다.
IETF draft-07 Idempotency-Key 처리, fingerprint 검증, 응답 재생으로 중복 실행을 막습니다.
트랜잭션 outbox
DB 쓰기와 이벤트 발행이 어긋나면 이벤트가 유실되거나 중복될 수 있습니다.
Prisma 네이티브 outbox가 polling, SKIP LOCKED, backoff 재시도를 처리합니다.
Webhook 전달
신뢰할 수 있는 outbound webhook에는 재시도, 서명, 회로 차단, 감사 추적이 필요합니다.
HMAC 서명, exponential backoff, circuit breaker, 전송 로그를 제공합니다.
API 키
키 해싱, prefix, rotation을 직접 만들면 작은 버그 하나가 자격 증명 유출로 이어집니다.
timing-safe 검증, 무중단 rotation, fail-closed IP allowlist, test/live 격리를 제공합니다.
접근 제어
임시 role 체크는 컨트롤러, 서비스, 테넌트, 리소스 범위마다 쉽게 흩어집니다.
테넌트 인식 RBAC로 역할, 권한, guard를 일관되게 관리합니다.
개인정보 권리 요청
GDPR/CCPA export와 erase 요청은 세금, 감사, 법적 보존 요구와 충돌합니다.
엔티티별 delete/anonymize/retain 정책, legal basis 추적, outbox fan-out을 지원합니다.
백그라운드 작업
한 테넌트의 과도한 backlog가 일반 FIFO 큐에서 다른 테넌트의 작업을 굶길 수 있습니다.
in-memory weighted fairness와 함께 BullMQ의 durable retry, Redis 기반 dedupe, 재시작 후 상태 조회, first-party outbox 전달을 제공합니다.

nestarc 없이

typescript
// 50개 이상의 서비스에 흩어져 있고, 빠뜨리기 쉽고, 감사하기 어렵습니다
async updateUser(id: string, dto: UpdateUserDto) {
  const before = await this.prisma.user.findUnique({ where: { id } });
  await this.prisma.$executeRaw`SELECT set_config('app.current_tenant', ${tenantId}, true)`;
  const after = await this.prisma.user.update({ where: { id, deletedAt: null }, data: dto });
  await this.auditService.log({
    action: 'user.update',
    targetType: 'User',
    targetId: id,
    metadata: { before, after },
  });
  return { success: true, data: after, timestamp: new Date() };
}

nestarc와 함께

typescript
// 테넌트 격리, 감사 로그, 소프트 딜리트 필터링, 응답 래핑이
// Prisma 확장과 NestJS 인터셉터에 의해 자동으로 처리됩니다.
// PrismaService는 다음과 같이 생성된 클라이언트를 노출합니다.
// createAuditedClient(base, { consistency: 'atomic-required', trackedModels: ['User'] });
async updateUser(id: string, dto: UpdateUserDto) {
  return this.prisma.client.withAuditTransaction((tx) =>
    tx.user.update({ where: { id }, data: dto }),
  );
}

도구

Labs · mcp-guard · v0.2.0

MCP 서버와 클라이언트 설정 파일을 정적으로 검사하는 보안 도구입니다. @nestarc 스코프로 배포되지만, NestJS SaaS 모듈 목록과는 분리해 다룹니다.

mcp-guard 보기 →

30분 만에 완전한 멀티테넌트 API를 구축하세요.

전체 튜토리얼빠른 시작 (5분)

MIT 라이선스로 배포됩니다.