다크 모드
시스템 전체 아키텍처
truloop 플랫폼을 구성하는 모든 서비스와 그 연결 관계를 설명합니다.
시스템 아키텍처 다이어그램
서비스 통신 테이블
| 호출자 | 대상 | 방식 | 설명 |
|---|---|---|---|
| 클라이언트 (iOS/Android) | truloop-core | HTTPS (REST) | 모든 비즈니스 API 호출 |
| 클라이언트 (iOS/Android) | truloop-media-service | HTTPS (Multipart) | 미디어 업로드 (이미지/비디오) |
| 클라이언트 (iOS/Android) | Sendbird SDK | WebSocket | 실시간 채팅 |
| truloop-core | Aurora PostgreSQL | TCP (JDBC) | 비즈니스 데이터 CRUD |
| truloop-core | ElastiCache Redis | TCP | 캐싱, 세션 |
| truloop-core | AWS S3 | HTTPS | 파일 저장/조회 |
| truloop-core | Sendbird | HTTPS (REST) | 채팅 채널 관리, 메시지 발송 |
| truloop-core | Firebase FCM | HTTPS | 푸시 알림 발송 |
| truloop-core | Branch | HTTPS | 딥링크 생성 |
| truloop-core | NHN | HTTPS | SMS 발송 |
| truloop-core | Segment | HTTPS | 이벤트 분석 |
| truloop-core | RevenueCat | HTTPS | 구독 관리 |
| truloop-core | truloop-ai-server | HTTPS (REST) | 이미지 임베딩 생성/삭제, 그룹핑 결과 조회 |
| truloop-core | AWS SQS | HTTPS | 그룹핑 작업 요청 발행 (grouping-queue) |
| truloop-media-service | AWS S3 | HTTPS | 미디어 파일 업로드/처리 |
| truloop-media-service | AWS SQS | HTTPS | 업로드 이벤트 발행, 처리 완료 알림 |
| truloop-media-service | Redis | TCP | Idempotency key, Job Queue |
| truloop-ai-server | Aurora PostgreSQL | TCP | 콘텐츠 템플릿/생성 기록 조회 |
| truloop-ai-server | Redis (Valkey) | TCP | Celery broker/backend |
| truloop-ai-server | OpenRouter | HTTPS | LLM API 호출 (텍스트/이미지 분석) |
| truloop-ai-server | truloop-media-service | HTTPS | 생성된 콘텐츠 이미지 업로드 |
| truloop-assistant | truloop-core | HTTPS (REST) | 사용자/룹 정보 조회 (Internal API) |
| truloop-assistant | Sendbird | HTTPS (REST) | AI 응답 메시지 전송 |
| truloop-assistant | Redis | TCP | 대화 이력, Pending tool calls |
| truloop-assistant | OpenRouter | HTTPS | LLM 추론 (Claude Sonnet) |
| Sendbird | truloop-assistant | HTTPS (Webhook) | 사용자 메시지 수신 이벤트 |
| AWS SQS | truloop-core | Polling | 미디어 처리 완료 이벤트 수신 |
| EventBridge Scheduler | truloop-functions | Lambda Invoke (async) | 스케줄 기반 트리거 디스패치 |
| truloop-functions | truloop-core | HTTPS (REST) | 트리거 대상 조회/완료 처리 (Internal API) |
| truloop-functions | AWS SQS | HTTPS | 트리거 이벤트 메시지 발행 (trigger-events) |
| AWS SQS | truloop-assistant | Polling | 트리거 이벤트 수신 (리마인더 등) |
| truloop-core | AWS SQS | HTTPS | 리캡 생성 요청 메시지 발행 (story-queue) |
| AWS SQS | truloop-story | Lambda Trigger | 리캡 생성 메시지 소비 |
| truloop-story | OpenRouter | HTTPS | LLM API 호출 (이미지 분석, 스토리 생성) |
| truloop-story | truloop-core | HTTPS (REST) | 리캡 생성 결과 콜백 (Internal API) |
환경 구성
| 항목 | 값 |
|---|---|
| AWS Region | ap-northeast-2 |
| API 도메인 | dev-api.truloop.app |
| ECS Cluster | Development 전용 |
| Aurora | Dev 인스턴스 (SSM 터널: localhost:54320) |
| Redis | Dev ElastiCache |
| S3 Bucket | Dev 전용 버킷 |
| 배포 트리거 | main 브랜치 push 시 자동 배포 |
| 딥링크 스킴 | truloop.dev:// |
Repository 맵
| Repository | 언어 | 역할 | 배포 대상 |
|---|---|---|---|
truloop-ios | Swift / SwiftUI | iOS 네이티브 클라이언트 | App Store |
truloop_android | Kotlin / Compose | Android 네이티브 클라이언트 | Google Play |
truloop-web-invite | TypeScript / Next.js 16 | 룹 초대 웹 페이지 | AWS (CDN) |
truloop-teaser-web | TypeScript / Next.js 15 | 티저/랜딩 웹 페이지 | AWS (CDN) |
truloop-core | Kotlin 2.3 / Ktor 3.4 | 핵심 비즈니스 API 서버 | ECS (Fargate) |
truloop-media-service | Go 1.24 | 미디어 업로드 및 처리 서비스 | ECS (Fargate) |
truloop-ai-server | Python 3.11 / FastAPI | AI 콘텐츠 생성 서비스 | ECS (Fargate) |
truloop-assistant | Python 3.14 / FastAPI | AI 비서 (대화형 에이전트) | ECS (Fargate) |
truloop-functions | Python 3.13 / Pulumi | 서버리스 트리거 디스패치 (EventBridge → Lambda) | AWS Lambda |
truloop-story | Python 3.13 / Serverless | 리캡 생성 서버리스 워커 | AWS Lambda |
truloop-infra | TypeScript / Pulumi | IaC 인프라 관리 | AWS |
database_schema | HCL (Atlas) | DB 스키마 관리 | Aurora PostgreSQL |
서비스 간 인증
| 호출 경로 | 인증 방식 | 설명 |
|---|---|---|
| 클라이언트 → Backend | JWT (Bearer) | 사용자 인증 토큰 |
| Backend 서비스 간 | Bearer API Key | Internal API 인증 (authenticate("internal-api")) |
| Sendbird → Assistant | Webhook Secret | Webhook 검증 |
| truloop-functions → truloop-core | Bearer API Key | Internal API 인증 |
| truloop-story → truloop-core | Bearer API Key | Internal API 인증 |
| Backend → 외부 서비스 | API Key / OAuth | 서비스별 인증 방식 |
데이터 흐름 요약
변경 이력
| 날짜 | 내용 |
|---|---|
| 2026-03-12 | 이미지 그룹핑 반영 — core→ai-server 직접 통신, grouping-queue SQS 흐름 추가, 서비스 통신 테이블 2행 추가 |
| 2026-03-11 | truloop-story 추가: 아키텍처 다이어그램, Repository 맵, 서비스 통신 테이블, 데이터 흐름, 서비스 간 인증 업데이트 |
| 2026-03-11 | truloop-functions 추가: 아키텍처 다이어그램에 EventBridge/Lambda 노드, Repository 맵, 서비스 통신 테이블, 서비스 간 인증 테이블 업데이트 |
| 2026-03-10 | Repository 맵 ai-server Python 버전 명시 (Python → Python 3.11) |