다크 모드
백엔드 전체 개요
truloop 백엔드는 5개의 독립적인 서비스로 구성됩니다. 4개의 상시 서비스가 AWS ECS Fargate에서 컨테이너로 운영되고, 1개의 서버리스 서비스가 AWS Lambda로 운영됩니다.
서비스 비교
| 항목 | truloop-core | truloop-media-service | truloop-ai-server | truloop-assistant | truloop-functions |
|---|---|---|---|---|---|
| 역할 | 핵심 비즈니스 API | 미디어 업로드/처리 | AI 콘텐츠 생성 | AI 대화형 비서 | 서버리스 트리거 디스패치 |
| 언어 | Kotlin 2.3 | Go 1.24 | Python 3.11 | Python 3.14 | Python 3.13 |
| 프레임워크 | Ktor 3.4 | net/http (표준 라이브러리) | FastAPI | FastAPI + pydantic-ai | stdlib only (Lambda) |
| 아키텍처 | Hexagonal (Ports & Adapters) | Handler/Service/Worker | Service Layer | Agent-based | Single Handler |
| DB | Aurora PostgreSQL (Exposed ORM) | - | Aurora PostgreSQL (SQLAlchemy) | - | - |
| 캐시 | ElastiCache Redis (Lettuce) | Redis (go-redis) | Redis/Valkey | Redis | - |
| 비동기 처리 | Kotlin Coroutines + EventBus | Goroutine Worker Pool | Celery (Redis broker) | asyncio + Background Tasks | Lambda async retry (2회) |
| 인증 | JWT + Internal API Key | JWT + Internal API | - | JWT + Sendbird Webhook | Bearer API Key (Core Internal) |
| DI | Koin 4.2 (Annotations) | 수동 주입 | FastAPI Depends | FastAPI Depends | - |
| 테스트 | Kotest 6.1, MockK | Go testing (71.7% coverage) | pytest (진행 중) | pydantic-evals | - |
| 모니터링 | Sentry, Micrometer | Sentry, Prometheus | Sentry, Prometheus | Logfire, Sentry | CloudWatch Logs |
| JVM/런타임 | Semeru OpenJ9 25 (ARM64) | - | - | - | Python 3.13 (Lambda) |
| 빌드/배포 | Gradle + Jib | Docker multi-stage | Docker multi-stage | Docker multi-stage | Pulumi FileArchive |
서비스 개요
truloop-core
truloop의 핵심 비즈니스 로직을 담당하는 메인 API 서버입니다. 사용자 관리, 룹 생성/참여, 리캡(내부명: Story), 채팅 연동, 푸시 알림 등 모든 비즈니스 기능을 처리합니다. Hexagonal Architecture(Ports & Adapters)를 적용하여 도메인 로직과 외부 의존성을 분리합니다.
주요 특징:
- 7개 Gradle 모듈로 구성된 Hexagonal Architecture
- Koin Annotation 기반 DI로 자동 의존성 주입
- Domain Event 시스템 (SharedFlow 기반 EventBus)
- CQS(Command/Query Separation) 패턴의 Repository 설계
truloop-media-service
대용량 미디어 업로드와 비동기 처리를 전담하는 서비스입니다. 최대 2GB 파일을 스트리밍 방식으로 처리하며, 이미지/비디오의 최적화된 변환 파이프라인을 제공합니다.
주요 특징:
- Streaming 기반 S3 multipart 업로드 (5MB 청크)
- 동적 Worker Pool을 활용한 병렬 처리
- 202 Accepted 패턴으로 즉각적인 클라이언트 응답
- 이미지 WebP 변환, 비디오 H.264 압축
truloop-ai-server
AI 기반 콘텐츠 생성을 담당합니다. 이미지 분석, 콘텐츠 템플릿 기반 생성, 포스터 생성 등의 기능을 Celery 비동기 태스크로 처리합니다.
주요 특징:
- Celery + Redis를 활용한 비동기 태스크 큐
- OpenRouter를 통한 다중 LLM 프로바이더 통합
- 콘텐츠 템플릿 기반 다국어 생성
- SQLAlchemy 기반 PostgreSQL 연동 (truloop-core와 DB 공유)
truloop-assistant
AI 대화형 비서 서비스입니다. Sendbird 채팅을 통해 사용자와 대화하며, pydantic-ai Agent 패턴으로 도구(Tool)를 활용한 지능적인 응답을 생성합니다.
주요 특징:
- pydantic-ai Agent 기반 아키텍처
- Deferred Tool 시스템 (Human-in-the-Loop, JSON-RPC 2.0)
- Sendbird Webhook 통합
- RAG (Retrieval-Augmented Generation) 지원
- 다중 봇 페르소나 지원
truloop-functions
서버리스 Lambda 함수 레포지토리입니다. EventBridge Scheduler가 호출하는 Lambda 함수가 truloop-core Internal API에서 트리거 대상을 조회하고, SQS를 통해 소비자 서비스로 이벤트를 라우팅합니다.
주요 특징:
- Python 3.13 표준 라이브러리만 사용 (외부 의존성 없음)
- EventBridge → Core API → SQS 디스패치 파이프라인
- 트리거 타입별 SQS 큐 라우팅 (현재 truloop-assistant 대상)
- 커서 기반 페이지네이션으로 대량 대상 처리
- Pulumi IaC (TypeScript)로 인프라 관리
서비스 간 통신
API 경로 규칙
| 서비스 | Base Path | 예시 |
|---|---|---|
| truloop-core | /core | /core/api/v1/users, /core/api/v3/loops |
| truloop-media-service | /media | /media/api/v1/upload |
| truloop-ai-server | /ai | /ai/api/content-generation |
| truloop-assistant | /assistant | /assistant/api/v1/agent/tool-message |
모든 서비스는 ALB 뒤에서 Base Path 기반으로 라우팅됩니다.
변경 이력
| 날짜 | 내용 |
|---|---|
| 2026-03-11 | truloop-core JVM 런타임 행 추가 (Semeru OpenJ9 25, ARM64 Graviton), truloop-functions 서비스 추가 (서비스 비교표, 개요, 통신 다이어그램) |
| 2026-03-10 | ai-server Python 버전 명시 (3.x → 3.11), 빌드 방식 수정 (Docker → Docker multi-stage) |