Rails가 AI SaaS에 여전히 적합한 이유
RobinReach 구축 시, Rails는 다음과 같은 핵심 요구사항을 충족시켰습니다.
-
신속한 개발 및 깔끔한 아키텍처: 빠른 시장 출시를 위한 기반을 제공했습니다.
-
복잡한 백그라운드 자동화 처리: Sidekiq과의 연동을 통해 대규모 작업 처리를 가능하게 했습니다.
-
멀티테넌트 데이터 격리 지원: 에이전시를 위한 데이터 보안 및 관리를 용이하게 했습니다.
-
빠르게 진화하는 AI 모델 통합: 유연한 AI 모델 연동을 지원했습니다. Hotwire와 Tailwind CSS를 활용하여 프론트엔드를 경량화하고 반응성을 높여 무거운 SPA(Single Page Application) 없이도 효율적인 사용자 경험을 제공했습니다.
서비스 중심 아키텍처
RobinReach는 서비스 중심 아키텍처를 채택하여, AI 콘텐츠 생성부터 비디오 렌더링까지 모든 핵심 구성 요소를 전용 서비스 클래스 내에 캡슐화했습니다.
-
각 도메인(게시물, 미디어, 분석, 자동화)은 독립적으로 발전하고 테스트 및 예측 가능성을 유지합니다.
-
예시:
Ai::ContentGeneratorService는 게시물 주제를 기반으로 소셜 미디어 캡션을 생성하며,RubyLLM::Client를 사용하여 AI 모델과 통신합니다. -
이 접근 방식은 모델과 컨트롤러의 비대화를 방지하고, 백그라운드 작업 전반에 걸쳐 로직 재사용을 용이하게 합니다.
AI를 활용한 콘텐츠 정교화
초기에는 ruby-openai 젬을 사용했으나, 유연성과 광범위한 모델 지원을 위해 ruby-llm으로 전환했습니다. AI 레이어는 다음과 같은 기능을 제공합니다.
-
RobinGen: 캡션, 해시태그 및 텍스트 변형 생성.
-
RobinPilot: 기사나 아이디어로부터 게시물 자동 생성.
-
콘텐츠 정교화: 기존 초안을 LinkedIn, Instagram 등 플랫폼의 톤에 맞게 재작성. 작업 흐름은 사용자가 콘텐츠를 작성하거나 업로드하면 AI가 톤, 문법, 스타일을 정교화하고, 사용자가 검토 및 승인 후 게시물을 예약하는 방식입니다. API 호출은 백그라운드 작업으로 비동기적으로 처리되어 대시보드의 응답성을 유지합니다.
미디어 처리 및 멀티테넌트 디자인
-
미디어 처리: 이미지 크기 조정에는
MiniMagick을, 짧은 형식의 비디오 생성에는Streamio-FFmpeg을 사용하여 수동 편집된 것 같은 콘텐츠를 동적으로 생성합니다. -
멀티테넌트 디자인: RobinReach는 기업 및 마케팅 에이전시를 위해 설계되었으며, 각 회사 계정은 여러 브랜드를 관리할 수 있습니다.
company context service를 통해 모든 쿼리와 백그라운드 작업이 회사별로 범위가 지정되어 데이터 보안과 확장성을 보장합니다.
RobinReach 구축을 통해 얻은 교훈
-
AI 통합은 침해적이지 않고 선택적이며 보조적인 역할을 할 때 가장 효과적입니다.
-
서비스 객체는 복잡성이 증가하더라도 Rails 애플리케이션을 깔끔하고 유지보수 가능하게 합니다.
-
멀티테넌시는 초기에 명확한 경계를 설정하는 것이 중요하며, 나중에 적용하는 것은 어렵습니다.
-
Rails는 Hotwire, Tailwind와 같은 현대적이고 경량화된 도구와 결합될 때 여전히 탁월한 성능을 발휘합니다.