개발

[백엔드] BE 개발자 없이 시작 느슨한 JSONB 계약 컨텍스트

jykim23 2026. 7. 14. 12:07
반응형

BE 계약 없이 느슨한 JSONB 3섹션 컨텍스트 주입 settings 분리 유연 스키마

부제: AI↔백엔드 계약을 맺을 사람이 없어서 어떤 구조든 받게 만든 이야기

시스템은 백엔드(BE)가 채워 보내는 사용자 정보를 받아 대화 컨텍스트에 넣는다.
그 정보를 어떤 형태로 주고받을지가 문제였다.
그리고 이 결정은 기술이 아니라 조직 현실이 정했다.

계약할 상대가 없었다

프로젝트를 시작할 때 CTO도, 백엔드 개발자도 없었다.
AI 서버와 백엔드 사이에 "무슨 필드를 어떤 스키마로 주고받자"는 계약을 맺을 상대가 없었다는 뜻이다.

엄격한 스키마를 정하려면 양쪽이 합의하고, 백엔드가 그에 맞춰 개발해야 한다.
그럴 사람이 없으니 그 길은 애초에 막혀 있었다.

어떤 구조든 받는다

그래서 방향을 뒤집었다.
"스키마를 맞춘다"가 아니라 "어떤 구조가 와도 추가 개발 없이 받는다"로.

최소한의 뼈대만 정했다.
사용자 정보를 세 섹션으로 나눴다 — 기본 정보, 디바이스, 커스텀.
각 섹션 안은 JSONB로 자유 입력이다. 백엔드가 무엇을 어떻게 채워 넣든 AI가 받는다.

덕분에 백엔드가 채운 걸 그대로 컨텍스트에 주입할 수 있게 됐다.
새 필드가 생겼다고 스키마를 맞추는 개발을 매번 하지 않아도 된다.
사람이 없어서 택한 길인데, 결과적으로 유연함을 얻었다.

넣을 것과 넣으면 안 될 것을 가른다

다만 전부 컨텍스트에 넣으면 안 됐다.
계산에만 쓰거나 모델에 보이면 안 되는 값이 있다. 타임존이나 민감한 설정 같은 것이다.

그래서 이런 건 컨텍스트에 안 들어가는 별도 settings 필드로 분리했다.
"모델에게 보여줄 자유 정보(세 섹션)"와 "시스템이 쓸 설정(settings)"을 나눈 것이다.
느슨하게 다 받되, 모델에 노출할 것과 아닌 것의 경계만은 분명히 했다.

정리

  • 프로젝트 초기에 CTO·백엔드 개발자가 없어 AI↔BE 데이터 계약을 협상할 수 없었다
  • 엄격한 스키마 대신 "어떤 구조든 추가 개발 없이 받는다"로 방향 전환 — JSONB 세 섹션(기본·디바이스·커스텀) 자유 입력
  • 덕분에 백엔드가 채운 걸 스키마 조율 없이 그대로 컨텍스트에 주입
  • 단, 모델에 넣으면 안 되는 값(타임존·설정)은 별도 settings 필드로 분리

계약을 협상할 상대가 없는 초기엔, 엄격한 스키마 대신 "어떤 구조든 받는" 느슨한 계약이 오히려 굴러간다.
유연함을 얻는 대신, 모델에 보여줄 것과 시스템 설정의 경계만은 필드로 분명히 가른다.

반응형