ruby_llm을 활용한 보안 중심의 Ruby on Rails AI 에이전트 구축 사례

Building an AI agent inside a 7-year-old Rails monolith

작성자
HackerNews
발행일
2025년 12월 26일

핵심 요약

  • 1 복잡한 멀티 테넌시 권한 체계와 보안 요구사항이 엄격한 Rails 모놀리스 환경에서도 ruby_llm의 도구 호출 기능을 통해 안전한 AI 에이전트 구현이 가능합니다.
  • 2 Algolia 검색 결과에 Pundit 정책 스코프를 결합한 커스텀 도구를 LLM에 제공함으로써 데이터 접근 제어를 유지하면서도 정교한 RAG 시스템을 구축했습니다.
  • 3 GPT-4o 모델이 속도와 정확성 사이에서 최적의 균형을 보여주었으며, ActiveJob과 Turbo Streams를 활용해 실시간 대화형 인터페이스를 효율적으로 구현했습니다.

도입

미국 SaaS 스타트업 Mon Ami의 엔지니어링 디렉터가 7년 된 대규모 Rails 모놀리스에 AI 에이전트를 도입한 여정을 소개합니다. 초기에는 엄격한 데이터 보안과 복잡한 권한 체계로 인해 AI 도입이 어려울 것이라 판단했으나, SF Ruby 컨퍼런스에서 ruby_llm 젬의 함수 호출 기능을 접하며 보안 가이드라인 내에서 데이터를 안전하게 활용할 수 있는 실무적 해결책을 찾게 된 배경을 다룹니다.

ruby_llm을 활용한 도구 추상화 및 구현

  • 인프라 구성: ruby_llm 젬은 다양한 LLM 프로바이더와의 상호작용을 깔끔한 API로 추상화하며, Conversation 모델을 통해 대화 맥락과 메시지 히스토리를 관리합니다.

  • 도구 정의(Tooling): DSL을 사용하여 검색 도구의 파라미터와 설명을 정의하며, 이는 LLM이 상황에 맞게 도구를 선택하는 컨텍스트로 활용됩니다.

보안과 검색의 통합 (RAG 전략)

  • Algolia 및 Pundit 결합: 자연어 쿼리가 들어오면 Algolia를 통해 데이터를 검색하고, 그 결과를 Rails의 Pundit 정책 스코프로 필터링합니다. 이를 통해 LLM은 오직 현재 사용자가 권한을 가진 데이터에만 접근할 수 있게 됩니다.

  • 데이터 캡슐화: LLM에게 무제한적인 데이터베이스 접근권을 주는 대신, 특정 함수 호출을 통해서만 정제된 JSON 데이터를 반환받도록 설계하여 보안 사고를 예방합니다.

아키텍처 및 모델 성능 평가

  • 비동기 UI 업데이트: 사용자의 메시지는 ActiveJob을 통해 백그라운드에서 처리되며, 결과는 Turbo Streams를 통해 실시간으로 프론트엔드에 반영되어 사용자 경험을 개선합니다.

  • LLM 모델 비교: GPT-4는 환각 증상이 잦고 최신 고성능 모델은 다단계 도구 호출 시 지연 시간이 발생했으나, 테스트 결과 GPT-4o가 속도와 도구 사용의 정확도 면에서 가장 우수한 성능을 보였습니다.

결론

이 프로젝트는 복잡한 엔터프라이즈 환경에서도 적절한 추상화 도구와 기존 Rails 보안 패턴을 결합하면 단 며칠 만에 실용적인 AI 에이전트를 구축할 수 있음을 증명합니다. 인위적인 제약 없이 기존의 비즈니스 로직과 권한 체계를 AI와 통합하는 방식은 레거시 시스템을 보유한 기업들에게 중요한 기술적 시사점을 제공합니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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