안전한 경계 만들기
애플리케이션 안에서 테넌트 격리, 예측 가능한 API 계약, 인가, 감사 추적을 적용합니다.
tenancy로 시작하기
오픈소스 모듈은 데이터와 전달 경로를 보호합니다. Nestarc Reliability는 payload를 수집하지 않고 요청, 데이터베이스, 큐, 워커, webhook의 증거를 연결합니다.
오픈소스 패키지는 실행을 애플리케이션 환경 안에 유지합니다. Nestarc Reliability는 각 시스템이 명시적으로 보고한 제한된 운영 증거만 연결하며, 고객 작업을 실행하거나 request body, webhook payload, raw log, SQL을 수집하지 않습니다.
tenancy, idempotency, outbox, jobs, webhook을 NestJS 애플리케이션 안에서 독립적으로 사용하거나 함께 조합할 수 있습니다.
하나의 작업을 요청부터 외부 효과까지 추적합니다. 현재 파일럿은 읽기 전용이며 복구 제어는 활성화되지 않습니다.
Supported 패키지는 호환성 범위와 운영 가이드를 지속적으로 관리합니다. Preview 패키지는 사용할 수 있지만 API와 운영 계약이 아직 발전 중입니다. 상태 표시는 버전 번호나 변경 이력을 대신하지 않습니다.
PostgreSQL RLS + Prisma 멀티테넌시와 테넌트 인식 캐시 키로 데이터 격리를 제공합니다.
Supported · v0.15.0safe-responseSwagger 통합, 페이지네이션, 필드 선택, 에러 카탈로그를 갖춘 API 응답 래퍼입니다.
Supported · v0.3.0paginationPrisma 7, keyset 커서, 필터, 정렬, Swagger helper를 지원하는 페이지네이션입니다.
Supported · v0.6.0soft-delete관계 필터, 캐스케이드 삭제, 일괄 복원, purge, 수명주기 이벤트를 지원하는 Prisma soft-delete 확장입니다.
Preview · v0.4.0idempotencyIETF 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.0outboxpolling, retry, event decorator를 갖춘 Prisma 네이티브 transactional outbox입니다.
Preview · v0.3.0jobs테넌트 공정 in-memory scheduling, 재시작 안전 BullMQ worker, Redis dedupe, retry, outbox 발행을 갖춘 typed job 실행입니다.
Supported · v0.13.0webhookHMAC 서명, 멱등 발행, retry·replay 제어, worker 지표, 데이터 보존 정책을 갖춘 outbound webhook 전달입니다.
Preview · v0.2.0data-subjectentity policy, retention, outbox fan-out을 갖춘 GDPR/CCPA export 및 erase 워크플로입니다.
멀티테넌트 SaaS 팀은 위험도가 높은 기반 기능을 반복해서 구현합니다. nestarc는 명시적인 호환성 범위, 운영 계약, 알려진 제한사항과 함께 테스트된 빌딩 블록을 제공합니다.
// 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() };
}// 테넌트 격리, 감사 로그, 소프트 딜리트 필터링, 응답 래핑이
// 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 }),
);
}MCP 서버와 클라이언트 설정 파일을 정적으로 검사하는 보안 도구입니다. @nestarc 스코프로 배포되지만, NestJS SaaS 모듈 목록과는 분리해 다룹니다.
mcp-guard 보기 →