임상 SaaS 개발
임상 · 의료 SaaS 개발 외주 — 멀티테넌시, PDF 결과지, 음성 분석.
두루바른 사회적협동조합과 함께 SpeechMap 임상 R&D를 운영하고, 강원특별자치도교육청의 광역 유아 언어발달 검사 시스템을 구축했습니다. 자체 출원 9건의 특허(아동 언어발달·음성 분석)가 엔진의 깊이를 뒷받침합니다. 임상 데이터의 무결성, 멀티테넌시, 한글 PDF, 동의서 워크플로우 등 의료 도메인 특유의 까다로운 요구를 직접 풀어 본 팀입니다.
이 카테고리에서 우리가 푼 기술 문제
01
SpeechMap 4-Path 음성 분석 엔진
음향 특성(Jitter·Shimmer·HNR·Pitch), Google STT 휴지 분석, MFA 음소 정확도, AI 임상 진단 리포트 — 4개 경로를 한 엔진에서 융합합니다. Cloud Run 4GB/2vCPU 프로덕션.
SpeechMap · 두루바른 사회적협동조합 임상 R&D
02
@react-pdf/textkit 한글 NFD 분해 이슈 해결
React-PDF의 textkit이 한글을 NFD로 분해하는 라이브러리 버그를 patch-package로 직접 수정. 12종 검사 결과지 PDF가 깨지지 않고 한글 폰트(Pretendard) 임베딩되어 출력됩니다.
plate-engine · HiBle / 플레이트 의원
03
임상 데이터 FK 체인 무결성
아동 등록 → 연도별 재검사(2025/2026 이월) → 기초검사 → 치료배정 → 녹음 → 연구데이터까지 FK 체인. PL/pgSQL RPC로 연도별 중복검사 로직을 한 트랜잭션에 묶습니다.
한림대학교 · language-screening-platform-2025 (111 PR)
04
멀티테넌시 — RLS만으로 충분하지 않은 이유
센터 단위 데이터 격리는 RLS로 충분하지만, 플랫폼 관리자 impersonation, 토스 결제 정산 분리, 통계 집계 등은 별도 권한 체계가 필요합니다. plate-engine은 platform_admin · center_admin · clinician 3계층으로 운영합니다.
plate-engine · HiBle
05
개인정보 동의 워크플로우
개인정보보호법 + 의료법에 맞춰 동의 → 수집 → 이용 → 폐기 4단계를 코드 레벨에서 강제합니다. 두루바른·재단 밴드·강원교육청에서 실전 운영 중입니다.
두루바른 사회적협동조합 · 강원특별자치도교육청
06
Light · Premium 다국어 PDF 결과지
검사 12종 × Light(5p) / Premium(12p+) × 국내·해외(audience) × ko/en/ru 다국어 — 30+ PDF 변형을 React-PDF + Pretendard 폰트 임베딩으로 서버 렌더하고 Supabase Storage에 자동 업로드.
plate-engine
추천 기술 스택
- SpeechMap (자체 엔진)
- React-PDF + patch-package
- Supabase RLS
- PL/pgSQL RPC
- Cloud Run (Python · MFA)
- Pretendard 폰트 임베딩
- Tosspayments
- Next.js 16
자주 묻는 질문
- 임상 데이터 보안 기준은 어떻게 맞춥니까?
- 한국 개인정보보호법 + 의료법 + 보건복지부 가이드라인을 기본 적용합니다. 동의서 워크플로우, 5년 보관 + 자동 폐기, 익명화·가명화, 접근 로그(audit trail), 이중 백업까지 포함합니다. HIPAA 준거 시스템 경험은 별도 협의가 필요합니다.
- 의료기기 규제(SaMD, GMP)에 해당하나요?
- 진단·치료 결정에 직접 사용되면 SaMD(Software as a Medical Device) 분류 가능성이 있어 식약처 인증이 필요합니다. SpeechMap처럼 "선별검사 + 다음 검사 추천"은 의료기기 분류 외이지만 임상 결정 보조 시 별도 검토가 필요합니다. 식약처 컨설턴트 연계 경험 있습니다.
- Supabase RLS만으로 멀티테넌시가 충분한가요?
- 센터 단위 데이터 격리는 RLS로 99% 해결됩니다. 다만 플랫폼 관리자의 impersonation, 결제 정산, 광역 통계 집계 등은 별도 권한 체계가 필요합니다. plate-engine에서 platform_admin · center_admin · clinician 3계층으로 RLS + RPC를 결합한 패턴을 운영 중입니다.
- PDF 결과지 한글 처리가 어렵다고 들었는데 어떻게 해결하나요?
- React-PDF의 @react-pdf/textkit이 한글을 NFD로 분해해 글자가 깨지는 라이브러리 버그가 있습니다. patch-package로 textkit을 직접 패치하고 Pretendard 폰트를 서버 사이드에 임베딩합니다. plate-engine의 12종 검사 결과지가 이 패턴으로 운영됩니다.
- 연구 데이터 무결성은 어떻게 담보하나요?
- PL/pgSQL RPC로 검사 등록·이월·재검사 로직을 단일 트랜잭션에 묶고, Jest + ts-jest 단위 테스트 + fixture 스키마 동기화로 회귀를 차단합니다. 한림대 language-screening-platform-2025는 111개 PR을 통해 4년간 무결성을 유지하고 있습니다.
- Cloud Run vs Vercel — 임상 워크로드는 어디가 적합한가요?
- Python·MFA·Praat 같은 음성 분석 워크로드는 Cloud Run(컨테이너, 4GB/2vCPU 가능)이 적합. Next.js 웹 + Supabase는 Vercel sin1 region. 두 엔드를 분리하고 중앙화된 엔진 URL로 호출하는 패턴이 SpeechMap의 표준 구성입니다.
관련 엔지니어링 노트
2026-04-25 · 장대철
임상 SaaS를 직접 빌드하며 마주친 기술 의사결정 5가지
SpeechMap · plate-engine · language-screening 3개 임상 프로덕트를 운영하며 발견한, 임상 도메인 특유의 의사결정 5건. patch-package, RLS 한계, FK 무결성, 한글 PDF, 동의 워크플로우.
2026-04-23 · 송완
SpeechMap 특허 9건이 실제로 다루는 것
자체 출원 9건의 특허가 각각 엔진의 어느 부분을 덮고 있는지 — 엔진을 API 래퍼가 아니라 내부 구조로 설계했다는 의미를 문서로 남깁니다.
