두 번째 RAG 시스템을 Python의 FastAPI 대신 Rails로 구축한 이유

Why My Second RAG System Was Built in Rails, Not Python’s FastAPI - DEV Community

작성자
Ruby AI News
발행일
2026년 01월 21일

핵심 요약

  • 1 FastAPI로 RAG 시스템 구축에 수 주가 걸린 반면, 동일한 시스템을 Rails로는 24시간 만에 완성하여 Rails의 개발 효율성을 입증했습니다.
  • 2 AI 로직 자체는 동일했으나, 백그라운드 작업, 데이터베이스 관리, 디버깅 등 인프라 구성에서 Rails의 성숙한 툴링이 개발 속도에 결정적인 영향을 미쳤습니다.
  • 3 AI 기능 구현 시 Python은 ML 실험에 강점을 보이지만, 실제 제품에 AI 기능을 통합할 때는 Rails와 같은 기존 웹 프레임워크가 인프라 문제를 해결하여 생산성을 높일 수 있습니다.

도입

본 글은 RAG(Retrieval Augmented Generation) 시스템 구축 시 Python의 FastAPI와 Ruby on Rails 프레임워크를 사용한 경험을 비교 분석합니다. 저자는 Rails 개발자로서 첫 AI 프로젝트를 FastAPI로 시작했으나, 이후 AI 해커톤에서 동일한 RAG 시스템을 Rails로 재구축하며 두 프레임워크의 개발 효율성 차이를 직접 경험했습니다. 이 경험을 통해 AI 제품 개발에 Python이 필수적인지, 기존 Rails 프레임워크로도 충분한지에 대한 통찰을 제공하며, FastAPI 버전이 수 주 걸린 반면 Rails 버전은 단 24시간 만에 완성된 배경을 설명합니다.

두 RAG 시스템은 사용자 문서를 업로드하면 시스템이 임베딩 및 저장하고, 질의 시 가장 관련성 높은 콘텐츠를 검색하여 LLM(대규모 언어 모델)이 답변을 생성하는 동일한 기능을 수행합니다. 기술 스택은 FastAPI 버전의 경우 FastAPI, Celery, SQLAlchemy를 사용했고, Rails 버전은 Rails API, React 프론트엔드, Sidekiq, ActiveRecord를 활용했습니다. OpenAI API와 pgvector는 두 버전 모두 동일하게 사용되었으며, AI 로직 자체는 동일했습니다. 아키텍처 역시 문서 업로드부터 텍스트 추출, 청킹, 임베딩 생성(OpenAI), 벡터 저장(Postgres with pgvector), 질문 처리(질문 임베딩, 유사 청크 검색, GPT-4로 답변 생성)까지 동일한 흐름을 따랐습니다. 그러나 개발 과정에서 다음과 같은 차이가 드러났습니다.

FastAPI 버전의 개발 어려움

  • 백그라운드 작업: Celery 설정 및 디버깅에 많은 시간을 할애했으며, API 타임아웃, 속도 제한 등으로 인한 실패 작업의 재시도 로직을 수동으로 구현해야 했습니다.

  • 데이터베이스 세션 관리: 비동기 엔드포인트마다 세션 관리에 주의를 기울여야 했고, 세션 누수나 연결 풀 문제로 인해 테스트가 불규정하게 실패하는 경우가 발생했습니다.

  • 배포의 취약성: 비동기 워커, 작업 큐, 재시도 정책, 모니터링 대시보드, 데이터베이스 연결 풀 등을 수동으로 구성해야 했습니다.

Rails 버전의 개발 효율성

  • 백그라운드 작업: Sidekiq을 통해 웹 UI, 자동 재시도, 데드 잡 큐, 성능 지표, 원클릭 작업 재시도 등 완벽하게 갖춰진 기능을 즉시 활용할 수 있었습니다.

  • 데이터베이스 접근: ActiveRecord가 세션 관리를 자동으로 처리하여 개발자는 데이터베이스 세션에 대해 전혀 고민할 필요 없이 비즈니스 로직에 집중할 수 있었습니다.

  • 디버깅 용이성: Sidekiq UI에서 실패한 작업을 확인하고 재시도하거나, Rails 콘솔을 통해 실시간 데이터 및 작업을 디버깅하는 것이 매우 직관적이었습니다.

  • 풍부한 생태계: ruby-openai gem, neighbor gem, Postgres의 pgvector 확장 등 필요한 도구들이 Rails 생태계 내에서 잘 통합되어 있어 호환성 문제가 없었습니다.

  • 통합된 개발자 워크플로우: 강력한 Rails 콘솔, 간단하고 버전 관리되는 데이터베이스 마이그레이션, 예측 가능한 테스트 환경 등 통합된 개발 환경이 빠른 피드백 루프를 제공하여 개발 속도를 극대화했습니다.

결론적으로, AI 프리미티브 자체는 프레임워크에 독립적이며, Rails는 AI 모델을 더 똑똑하게 만들지는 않지만, 시스템을 이해하고 운영하며 변경하기 쉽게 만들어 제품 엔지니어의 생산성을 크게 향상시켰습니다.

결론

이 경험을 통해 AI 기능 구현의 핵심은 AI API 호출 자체가 아니라, 안정적인 백그라운드 처리, 운영 환경에서의 디버깅, 배포 관리, 클린 아키텍처 유지보수, 그리고 빠른 출시와 같은 소프트웨어 공학적 문제 해결 능력에 있음을 깨달았습니다. Python은 고급 ML 연구 및 실험에 강력한 강점을 가지지만, 기존 Rails 앱에 AI 기능을 추가할 때 굳이 전체 시스템을 Python으로 재작성할 필요는 없습니다. 저자는 Rails가 애플리케이션 로직을 담당하고, Python 마이크로서비스는 커스텀 재랭킹 모델이나 고급 문서 파싱과 같은 ML 특화 작업에만 활용하는 하이브리드 아키텍처를 제안합니다. 이는 제품 코드의 안정성과 유지보수성을 높이고, AI 실험을 격리하며, 인프라를 단순하게 유지하여 팀의 생산성을 극대화하는 전략입니다. 따라서 Rails 개발자라면 AI 기능을 위해 FastAPI를 새로 배울 필요 없이 Rails로 시작하고, 실제 기술적 한계에 부딪힐 때만 Python 서비스를 추가하는 것이 가장 효율적인 접근 방식입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!