안전한 경계 만들기
애플리케이션 안에서 테넌트 격리, 예측 가능한 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 TEXT/UUID RLS, Prisma 멀티테넌시, 실시간 DB 감사와 RPC tenant 검증을 제공합니다.
Supported · v0.15.0safe-responseSwagger 통합, 페이지네이션, 필드 선택, 에러 카탈로그를 갖춘 API 응답 래퍼입니다.
Supported · v0.3.0paginationPrisma 7, keyset 커서, 필터, 정렬, Swagger helper를 지원하는 페이지네이션입니다.
Supported · v0.7.2soft-delete관계 필터, 캐스케이드 삭제, 일괄 복원, purge, 이벤트, 선택적 원자 감사 수명주기를 지원하는 Prisma soft-delete 확장입니다.
Preview · v0.4.0idempotencyIETF draft-07 Idempotency-Key, 안정적인 fingerprint, Redis/Postgres 저장소, 응답/헤더 재생을 제공합니다.
Supported · v0.7.0audit-log누가 무엇을 변경했는지 기록합니다. 업무 이벤트 하나 또는 atomic-required Prisma 추적으로 시작하고 이력을 조회·내보내기합니다.
Preview · v0.4.0api-keysPrisma 5/6/7 저장소, 요청 권한 검사, 원자적 rotation, 안전한 관리 목록을 갖춘 테넌트 범위 API 키입니다.
Supported · v0.5.0feature-flag캐시 어댑터, Admin API, rollout, 테넌트 override를 지원하는 DB 기반 플래그입니다.
Supported · v0.2.2rbac타입 안전 권한, 인증 소스 충돌 검사, HTTP guard, Prisma 5/6/7 저장소와 최종 결정 감사를 제공합니다.
Preview · v0.3.0outboxrenewable lease, 저장된 retry 일정, 테넌트 관리 범위와 broker 발행을 지원하는 Prisma outbox입니다.
Preview · v0.4.0jobs테넌트 공정 local worker pool, BullMQ producer/worker 역할, Redis dedupe, 보존 정책과 outbox 발행을 지원하는 typed job 실행입니다.
Supported · v0.13.1webhookPrisma 5/6/7 저장소, HMAC 서명, 멱등 발행, retry·replay 제어, worker 지표와 보존 정책을 제공합니다.
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 보기 →