MODELFLOW

제안

결제와 민감한 개인 데이터가 들어오는 백엔드를 어떤 구조로 만들지, 착수 전에 무엇을 정해야 하는지 정리했습니다.

모델 실행과 결제는 브라우저 안에서 동작을 재현한 것이며 데이터는 전량 가상입니다.

2026-09-10 14:35:22

결제와 민감한 개인 데이터가 들어오는 백엔드

각 항목은 화면에서 눌러 동작을 확인하실 수 있게 만들었습니다.

결제와 실행을 분리합니다결제 흐름 화면

결제 승인이 확인된 건만 실행 대기열에 들어갑니다.

실행부터 하면 모델 호출 비용이 나간 뒤 결제가 실패하는 경우가 생기고 그 비용은 회수할 수 없습니다.

실행을 요청과 분리합니다대기열 화면

웹 요청이 모델 실행을 기다리지 않습니다. 신청이 들어오면 대기열에 넣고 응답은 즉시 돌려줍니다. 모델은 별도로 돌며 진행 상태만 갱신합니다.

요청 안에서 모델을 돌리면 3분 걸리는 분석에 웹 요청이 3분간 물려 있고, 그 사이 창을 닫으면 실행이 끊깁니다.

단계마다 결과를 저장합니다저장된 중간 결과

뒤 단계가 실패해도 앞 단계를 다시 실행하지 않습니다.

모델 호출은 비용이 발생하는 작업이라 중복을 막아야 합니다.

실패를 정상 경로로 다룹니다실패 만들어보기

모델은 실패합니다. 타임아웃, 일시적 오류, 입력 형식 문제가 생깁니다. 실패했을 때 신청 건이 사라지지 않고, 자동으로 재시도하고, 정해진 횟수를 넘으면 사람이 확인하는 흐름을 처음부터 만듭니다.

나중에 붙이려 하면 실패한 건이 어디에 남는지부터 다시 정해야 합니다.

카드 정보를 서버에 두지 않습니다수집 항목 표

Stripe 가 카드를 보관하고 저희는 결제 식별자만 갖습니다.

카드 번호가 서버를 지나가지 않으므로 유출 대상이 아닙니다.

민감 항목은 암호화하고 열람에 사유를 받습니다접근 이력

성적, 에세이, 활동 이력은 암호화해 저장하고 관리자만 열람할 수 있게 합니다. 열람하면 사유와 함께 기록이 남습니다.

누가 언제 무엇을 봤는지 남지 않으면 사고가 났을 때 확인할 방법이 없습니다.

모델 버전을 결과와 함께 저장합니다모델 버전

모델을 개선하시면 이후 신청부터 적용되고, 이미 나간 리포트가 어느 버전 결과였는지 확인할 수 있습니다.

고객이 결과에 이의를 제기했을 때 그때 무엇으로 계산했는지 알 수 없으면 대응이 어렵습니다.

이 구조는 나중에 바꾸기 어려운 부분입니다. 화면은 고쳐가면 되지만 실행 방식과 데이터 구조는 서비스가 돌기 시작하면 갈아엎기 어렵습니다. 그래서 이번 범위에서 여기에 시간을 쓰는 것을 권합니다.