Skip to content

Core (Ktor) 개요

truloop-core는 truloop의 핵심 비즈니스 로직을 담당하는 메인 API 서버입니다. Hexagonal Architecture를 적용하여 도메인 로직과 인프라 의존성을 철저히 분리합니다.


기술 스택

항목기술버전
언어Kotlin2.3.20-RC2
JDKAmazon Corretto21
빌드 도구Gradle9.4
웹 프레임워크Ktor (Netty)3.4.1
직렬화kotlinx-serialization-
비동기kotlinx-coroutines-
ORMExposed0.61.0
Connection PoolHikariCP7.0.2
DIKoin + Koin Annotations4.2.0-RC1
테스트Kotest + MockK6.1.4 / 1.14.9
정적 분석Detekt, Ktlint1.23.8, 14.0.1
커버리지Kover-
컨테이너화Jib-
에러 추적Sentry-
메트릭Micrometer-
로깅Logback + Logstash-
API 문서ktor-openapi + ktor-swagger-ui-

주요 외부 연동

서비스용도
AWS S3파일 저장소
AWS SQS미디어 이벤트 큐 (업로드/완료), 리캡 생성 큐
AWS SNSSMS 발송 (국제)
AWS Pinpoint SMS Voice V2SMS 발송 (EUM 풀 기반)
AWS Rekognition얼굴 인식/매칭 (선택적)
Firebase FCM푸시 알림 발송
Sendbird채팅 채널/메시지 관리
Redis (Lettuce)캐싱, LiveActivity 토큰, 추천 캐시 (선택적)
RevenueCat구독/가상화폐 관리 (선택적)
Branch딥링크 생성
Segment이벤트 분석 (선택적)
NHN SMS문자 발송 (한국 국내)

개발 명령어

bash
# 테스트 실행
./gradlew test

# 코드 포맷 및 정적 분석
./gradlew ktlintFormat ktlintCheck detekt

# 로컬 실행 (DB 터널 필요)
./gradlew :bootstrap:run

# Fat JAR 빌드
./gradlew :bootstrap:buildFatJar

# Docker 이미지 빌드
./gradlew :bootstrap:jibDockerBuild    # 로컬 데몬
./gradlew :bootstrap:jib               # 배포용

# 커버리지 리포트
./gradlew koverHtmlReport

패키지 네임스페이스

모든 코드는 co.butbeautiful.truloop.* 패키지 하위에 위치합니다.

co.butbeautiful.truloop.
├── common/              # :common 모듈
├── domain/              # :domain 모듈
├── application/         # :application 모듈
├── adapter/
│   ├── persistence/     # :adapter:persistence 모듈
│   ├── external/        # :adapter:external 모듈
│   └── web/             # :adapter:web 모듈
└── bootstrap/           # :bootstrap 모듈

Git Workflow

Trunk-Based Development를 따릅니다.

  • Trunk: main (단일 진실 공급원)
  • Feature 브랜치: 단기 수명 (목표: 1-2일)
  • 네이밍: feat/BKD-XXX/description, fix/BKD-XXX/description
  • Dev 배포: main push 시 자동 배포
  • Prod 배포: GitHub Actions workflow_dispatch (수동)

변경 이력

날짜내용
2026-03-12기술 스택에 ktor-openapi + ktor-swagger-ui 추가
2026-03-10기술 스택 버전 업데이트 (Kotlin 2.3.20-RC2, Gradle 9.4, Ktor 3.4.1 등), 외부 연동 서비스 목록 보강 (Rekognition, Pinpoint, SNS 등)