# CTRL-F 백엔드 기술 스택
## 1. 언어 및 핵심 프레임워크
| 기술 | 버전 | 비고 |
|------|------|------|
| **Java** | 17 | Amazon Corretto 17 |
| **Spring Boot** | 3.3.3 | chat, education, infra 서비스 |
| **Spring Boot** | 3.1.5 | api-gateway 전용 |
| **Spring Framework** | 6.1.12 | |
| **Spring Cloud** | 2023.0.4 | chat, education, infra 서비스 |
| **Spring Cloud** | 2022.0.5 | api-gateway 전용 |
---
## 2. 아키텍처
**마이크로서비스 아키텍처 (MSA)**
| 서비스 | 포트 | 역할 |
|--------|------|------|
| `api-gateway` | 8085 | API 라우팅, 인증 처리 (Spring Cloud Gateway) |
| `chat-service` | 9005 | 채팅, FAQ 관리 |
| `education-service` | 9002 | 교육 콘텐츠, 영상, 스크립트, 퀴즈 관리 |
| `infra-service` | 9003 | 파일 업로드(S3), RAG 문서, 사용자 관리, 텔레메트리 |
**공통 라이브러리 (libs)**
- `common-dto` - 공통 DTO
- `common-security` - Spring Security, OAuth2 설정
- `common-utils` - 유틸리티, Swagger 설정
- `common-constants` - 상수 정의
---
## 3. 데이터베이스
| 기술 | 버전 | 비고 |
|------|------|------|
| **PostgreSQL** | 16 | pgvector 확장 포함 |
| **pgvector** | pg16 이미지 | 벡터 검색 지원 (`pgvector/pgvector:pg16`) |
| **Flyway** | 10.10.0 | DB 마이그레이션 (`flyway-database-postgresql`) |
| **PostgreSQL JDBC Driver** | 42.7.4 | |
| **Spring Data JPA** | 3.3.3 | Hibernate ORM |
---
## 4. 인증/인가
| 기술 | 버전 | 비고 |
|------|------|------|
| **Keycloak** | 24.0 | IAM 솔루션 (`quay.io/keycloak/keycloak:24.0`) |
| **Spring Security** | 6.x | Boot 3.3.3 내장 |
| **OAuth2 Resource Server** | 3.3.3 | JWT 토큰 검증 |
---
## 5. API Gateway
| 기술 | 버전 | 비고 |
|------|------|------|
| **Spring Cloud Gateway** | 4.0.x | Spring Cloud 2022.0.5 BOM 기반 |
| **Spring Boot (Gateway)** | 3.1.5 | api-gateway 모듈 전용 |
---
## 6. 서비스 간 통신
| 기술 | 버전 | 비고 |
|------|------|------|
| **Spring Cloud OpenFeign** | 4.1.x | 선언적 REST 클라이언트 (Spring Cloud 2023.0.4 BOM) |
| **Spring WebFlux** | 6.1.12 | 비동기 WebClient (chat-service) |
---
## 7. API 문서화
| 기술 | 버전 | 비고 |
|------|------|------|
| **SpringDoc OpenAPI** | 2.5.0 | Swagger UI 제공 (`springdoc-openapi-starter-webmvc-ui`) |
| **Swagger Models** | 2.2.21 | OpenAPI 스펙 |
---
## 8. 클라우드 인프라 (AWS)
| 기술 | 버전 | 비고 |
|------|------|------|
| **AWS S3** | SDK 2.25.57 | 파일 저장소 (`software.amazon.awssdk:s3`) |
| **AWS ECR** | - | 컨테이너 레지스트리 |
| **리전** | ap-northeast-2 | 서울 리전 |
---
## 9. 컨테이너/오케스트레이션
| 기술 | 버전 | 비고 |
|------|------|------|
| **Docker** | - | 멀티스테이지 빌드 (Amazon Corretto 17 Alpine) |
| **Kubernetes** | - | 컨테이너 오케스트레이션 |
| **ArgoCD** | - | GitOps 기반 CD |
---
## 10. 빌드 도구
| 기술 | 버전 | 비고 |
|------|------|------|
| **Gradle** | 9.2.1 | 멀티모듈 프로젝트 |
| **Spring Dependency Management Plugin** | 1.1.4 | 의존성 버전 관리 |
---
## 11. 개발 도구 및 유틸리티
| 기술 | 버전 | 비고 |
|------|------|------|
| **Lombok** | 1.18.32 | 보일러플레이트 코드 감소 |
| **java-dotenv** | 5.2.2 | 환경변수 관리 (`io.github.cdimascio:java-dotenv`) |
| **Spring Boot DevTools** | 3.3.3 | 개발 편의성 (Hot Reload) |
| **Spring Boot Actuator** | 3.3.3 | 헬스체크, 모니터링 |
| **Spring Validation** | 3.3.3 | Bean Validation (JSR-380) |
---
## 12. 테스트
| 기술 | 버전 | 비고 |
|------|------|------|
| **JUnit 5** | 5.10.0 | 단위 테스트 (`junit-jupiter`) |
| **Spring Boot Test** | 3.3.3 | 통합 테스트 |
---
## 13. 외부 연동
| 대상 | 포트 | 용도 |
|------|------|------|
| **AI Server** (FastAPI) | 8000 | 스크립트 생성, 영상 생성, RAG, 챗봇 |
| **Keycloak** | 8090 | 사용자 인증/인가, Realm 관리 |
---
## 14. 프로젝트 구조
ctrlf-back/ ├── api-gateway/ # API Gateway (Spring Cloud Gateway) ├── chat-service/ # 채팅 서비스 ├── education-service/ # 교육 서비스 (퀴즈 포함) ├── infra-service/ # 인프라 서비스 ├── libs/ │ ├── common-constants/ # 공통 상수 │ ├── common-dto/ # 공통 DTO │ ├── common-security/ # 공통 보안 설정 │ └── common-utils/ # 공통 유틸리티 └── kubernetes/ # K8s 배포 설정