제가 만든 무료 합성 데이터 생성기 — 이렇게 만들었습니다 (React + Tailwind)

발행: (2026년 2월 12일 오전 09:13 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

I Built a Free Synthetic Data Generator — Here's How (React + Tailwind)의 표지 이미지

개요

우리는 모두 그런 경험이 있습니다 — 앱을 테스트하기 위해 10,000개의 현실적인 사용자 레코드가 필요하거나, 데모를 위한 가짜 의료 데이터 배치가 필요하거나, 대시보드를 스트레스 테스트하기 위한 거래 로그가 필요할 때 말이죠. 그래서 보통 다음 중 하나를 선택합니다:

  • “User_1, User_2, User_3…”과 같은 데이터를 생성하는 조잡한 스크립트를 작성한다
  • CLI 도구를 설정하는 데 30분을 소비한다
  • 무료 티어에서 100행으로 제한되는 SaaS 도구를 사용한다

이러한 상황에 지쳐서 DataForge를 만들었습니다 — 무료이며 브라우저 기반의 합성 데이터 생성기로, 현실적인 가짜 데이터를 즉시 생성합니다. 회원가입도 필요 없고, 서버도 없으며, 제한도 없습니다.

🔗 실시간으로 사용해 보기

DataForge 스크린샷

DataForge UI 예시

무엇을 제공합니까

DataForge는 두 카테고리의 9가지 데이터 유형에 걸쳐 현실적인 가짜 데이터를 생성합니다.

📊 일반 데이터

  • 사용자 – 이름, 이메일, 전화번호, 생년월일, 회사, 직함
  • 주소 – 거리, 도시, 주, 우편번호, 좌표
  • 거래 – 금액, 가맹점, 카테고리, 상태

🏥 의료 / HIPAA‑안전

  • 환자 – 의료 기록 번호(MRN), 혈액형, 알레르기, 질환, 보험
  • 의료 기록 – ICD‑10 코드, 활력징후, 방문 유형, 임상 메모
  • 처방전 – 실제 약물, 복용량, DEA 번호, NDC 코드
  • 실험실 결과 – 기준 범위와 플래그가 포함된 26개의 실제 실험실 검사
  • 보험 청구 – 청구/허용/지불 금액, 청구 상태
  • 의료 제공자 – NPI 번호, 전문 분야, 자격증

모든 데이터는 100 % 합성 데이터이며 — 실제 환자 데이터가 없고, HIPAA 위험이 없습니다.

주요 기능

⚡ 최대 50,000개의 레코드를 즉시 생성

모든 작업이 클라이언트 측에서 실행됩니다. API 호출도, 서버도 없습니다. 데이터가 브라우저를 떠나지 않습니다.

🎬 맞춤 시나리오

기본 시나리오

  • 🧓 고령 환자 코호트 (연령 65세 이상)
  • 👶 소아 코호트 (연령 0‑17세)
  • 🚨 위험한 검사값
  • 💰 고액 거래 ($5천 이상)
  • 🕵️ 사기 패턴
  • ❌ 거부된 청구 배치
  • 🗑️ 더럽고 지저분한 데이터 (null 및 오류 포함)

맞춤 빌더

  • 필드별 null 비율 설정 (0‑80 %)
  • 값 범위 정의 (예: 연령 65‑95, 금액 $10천 이상)
  • 특정 값 강제 지정 (예: status = "Denied")
  • 맞춤 값 풀 추가
  • 중복 비율 및 오류 삽입 제어

📤 내보내기 형식

  • JSON – 표준 구조화 데이터
  • CSV – 스프레드시트 및 데이터베이스용
  • SQL – 바로 실행 가능한 INSERT 문
  • HL7 FHIR – 의료 상호운용성 표준

🌱 시드로 재현 가능

시드 값을 설정하면 매번 동일한 데이터를 얻을 수 있습니다. 일관된 테스트 스위트에 최적입니다.

어떻게 만들었는가

기술 스택

  • React 18 + TypeScript
  • Tailwind CSS – 다크 HD 인터페이스
  • Vite – 빠른 빌드
  • Custom seeded PRNG – 외부 faker 라이브러리 불필요

시드된 난수 생성기

Math.random()(시드가 불가능함)을 대신해, 간단한 선형 합동 생성기를 기반으로 맞춤 PRNG를 만들었습니다:

class SeededRandom {
  private seed: number;

  constructor(seed: number) {
    this.seed = seed;
  }

  next(): number {
    this.seed = (this.seed * 16807 + 0) % 2147483647;
    return this.seed / 2147483647;
  }

  nextInt(min: number, max: number): number {
    return Math.floor(this.next() * (max - min + 1)) + min;
  }

  pick<T>(array: T[]): T {
    return array[this.nextInt(0, array.length - 1)];
  }
}

헬스 IT 분야에서 일한다면 다음과 같은 어려움을 겪고 있을 겁니다:

  • ❌ 테스트에 실제 환자 데이터를 사용할 수 없음 (HIPAA)
  • ❌ Epic/Cerner 샌드박스는 제한된 테스트 환자만 제공
  • ❌ Synthea는 강력하지만 Java와 CLI 설정이 필요
  • ❌ 대부분의 온라인 생성기는 의료 데이터를 이해하지 못함

DataForge가 이 격차를 메웁니다:

  • ✅ FHIR‑네이티브 내보내기 — 유효한 FHIR 번들을 생성
  • ✅ 실제 ICD‑10 및 CPT 코드 — 무작위 문자열이 아님
  • ✅ 임상 시나리오 — 노인 코호트, 중요한 실험실 결과, 거부된 청구
  • ✅ 브라우저에서 실행 — QA 팀과 URL을 공유
  • ✅ 50 K 레코드 — 부하 테스트에 충분

다음 단계

  • 사용자 정의 스키마 빌더 (자신만의 데이터 타입 정의)
  • API 엔드포인트 모드 (모의 API로 사용)
  • 테이블 간 관계 (외래 키)
  • 더 많은 의료 표준 (HL7v2 메시지, C‑CDA)
  • 현지화 (미국 외 이름, 주소, 전화 형식)

이 도구가 시간을 절약해 주었다면, 저장소에 ⭐를 남기거나 댓글을 달아 주세요. 여러분이 어떻게 사용하고 있는지 듣고 싶어요!

0 조회
Back to Blog

관련 글

더 보기 »