고통의 끝. LLM으로 돈을 벌려고 만든 실제 프로덕션 서비스가 드디어 망하게 되어 너무 기쁘다. 마지막 '경험'들을 공유한다.
End of an Agony. Real production service that uses LLM to earn money my team had made and now we are so happy that it will die. Here are some of my final "experiences".
핵심 요약
LLM 기반 프로덕션 서비스를 운영하며 겪은 기술적 한계와 환각 문제로 인한 고통을 토로하며, 결국 프로젝트를 종료하게 된 경험담.
- 기술적 한계 — LLM의 비결정적 특성으로 인해 프로덕션 환경에서 신뢰성 확보가 어려움
- 구조화된 출력 문제 — PydanticAI와 같은 도구를 써도 LLM의 구조화된 데이터 반환은 여전히 불안정함
- 환각 및 캐릭터 붕괴 — 사용자 입력에 따라 봇이 캐릭터를 이탈하거나 잘못된 예약을 생성하는 등 예측 불가능한 동작 발생
- 운영의 어려움 — 잦은 모델 오류와 API 제공자의 불안정성으로 인해 지속적인 모니터링과 수동 개입이 필수적임
다들 안녕.
약 8개월 전에 이 서브레딧에 프로덕션 서비스 만드는 거 관련해서 글을 올렸었지. 내 이전 글 링크는 여기야. 아이디어는 그대로였어. 돈 벌려고 클라이언트한테 제공할 진짜 프로덕션 서비스를 만들고 싶었거든. 메신저로 작동하면서 개인 병원 의사들 진료 예약 잡는 걸 도와주는 AI 어시스턴트였지.
근데 이게 반년 넘게 좌절과 정신적 고통만 안겨주다가, 결국 프로젝트 접고 은퇴하기로 했다. 나 이제 자유야. 나 진짜 자유라고!!! 존나게 자유다!!!
이제 내가 구현하면서 "경험"했던 것들을 공유해 보려고 해.
일단, 8개월 동안 오픈 소스 모델들 전체적인 퀄리티가 진짜 많이 좋아졌고, 이제야 좀 경쟁력이 있어 보여. 진짜 쓸만한 걸 만들 수 있긴 한데, 단서가 좀 붙어. 내 개인적인 경험과 의견으로는, 지금 LLM들은 일단 개인용 1대1 사용에는 진짜 좋아. LLM이 뱉어내는 걸 네가 직접 "소비"하는 거니까. 100% 정확하게 작동 안 할 거라는 걸 너도 알고, 만약 모델이 똥을 싸질러도 네가 직접 고치거나 LLM한테 수정하라고 시키면 되거든.
근데 LLM 기반 서비스를 제2자(클라이언트)한테 제공하고, 그 클라이언트가 다시 제3자(최종 사용자)한테 자기 서비스를 제공하는 구조가 되면 상황이 아주 개판이 돼. 너는 100% 정확한 결과를 보장 못 하는데, 클라이언트는 자기 고객들한테 (네 서비스에 의존하는) 자기네 서비스가 항상 정확한 결과를 줄 거라고 약속하거든. 그러다 에러 터지면, 그리고 무조건 터지게 되어 있는데, 다들 빡치고 모든 게 다 망가지는 거야.
이제 시작해 볼게.
내 이전 글 보면 알겠지만, 난 OpenRouter를 통해 직접 API 호출을 하면서 그 모든 걸 혼자 처리하고 있었어. 이전 글 댓글에서 PydanticAI를 써보라고 하더라고. 써봤는데 진짜 대박이었어. 문서도 훌륭했고, 특히 툴(tools) 관련해서 그 무거운 API 상호작용들을 다 알아서 처리해 주니까 좋더라. 테스트할 땐 잘 돌아갔는데, 프로덕션에 올리니까 슬슬 문제가 보이기 시작했어.
PydanticAI가 동기(sync) 환경에서도 돌아가긴 하지만, 기본적으로 비동기(async)를 염두에 두고 설계됐거든. 동기 방식 변형들도 사실 내부적으로는 비동기를 억지로 끼워 맞춘 이상한 꼼수들이야. 만약 네 전체 아키텍처가 동기 방식이면, 전부 비동기로 뜯어고치든가(이게 불가능하거나 빡세지), 아니면 동기 환경 안에서 비동기 루프를 돌리는 이상한 짓을 해야 해. 잘못하면 프로세스 전체가 멈춰서 응답 불능 상태가 되고, 결국 시스템 명령어로 강제 종료(kill)해야 하는 상황이 온다고.
이제 OpenRouter랑 그 밑에서 돌아가는 모든 제공업체들 얘기를 해보자. 난 다음 모델들을 써봤어.
-
GLM (4.5, 5.0, 5.2)
-
Deepseek
-
Mimo
-
Qwen
-
ChatGPT
-
Claude
-
Minimax
여러 모델을 갈아타면서 깨달은 건, 제공업체들이 서비스 가동 시간(uptime)을 제대로 보장 안 해준다는 거야. 공식 모델 제작사들조차 가끔 똥을 싸면서 제대로 된 에러 메시지 대신 빈 응답을 보내기도 해. 폴백(fallback) 제공업체를 쓴다 해도 걔네들이 동시에 똥을 싸버리면 전체 흐름이 다 끊겨버려.
또 다른 문제는 사용자가 질문을 조금만 이상하게 해도 모델이 깨진 구조의 데이터를 뱉는다는 거야. 검증(validation) 단계에서 가끔 고쳐지기도 하지만, 대부분은 그냥 똥을 싸버려. 대충 이런 식이지:


