Skip to content

tech stack Tech Stack

Kimgyuilli edited this page Jan 15, 2026 · 3 revisions

기술 스택

언어 및 런타임

Java 21

  • JDK: Temurin 21
  • 빌드 도구: Gradle

선택 이유

  • 최신 기능 지원: 레코드, 패턴 매칭, 가상 스레드 등 최신 Java 기능 활용
  • 성능 향상: 최신 JDK의 성능 최적화 및 메모리 관리 개선
  • 장기 지원(LTS): 안정적인 운영 환경 제공
  • 미래 대비: Spring Boot 4.x 이상에서 Java 21을 기본 지원하므로, 향후 기술 변화에 유연하게 대응 가능

백엔드 프레임워크

Spring Boot 3.5.9

주요 스타터 모듈:

  • spring-boot-starter-web: RESTful API 개발
  • spring-boot-starter-data-jpa: ORM 및 데이터 영속성
  • spring-boot-starter-validation: 데이터 검증
  • spring-boot-starter-actuator: 애플리케이션 모니터링 및 헬스체크

선택 이유

  • 안정성: Spring Boot 4에 비해 충분히 검증된 안정화 버전
  • 호환성: Spring AI와의 호환성 이슈가 없음
  • 리스크 최소화: 프로덕션 환경에서 검증된 버전 사용

데이터베이스

PostgreSQL 17

운영 환경 메인 데이터베이스

선택 이유

  • 확장성: pgvector 등 벡터 검색 확장 기능으로 AI 챗봇 도입 시 유리
  • 성능: 복잡한 쿼리 처리 및 대용량 데이터 관리에 최적화
  • 생태계: 풍부한 관리 도구 및 커뮤니티 지원

H2 Database

테스트 환경 인메모리 데이터베이스

QueryDSL 5.1.0

타입 안전 동적 쿼리 생성

선택 이유

  • 타입 안전성: 컴파일 타임에 쿼리 오류 감지
  • 가독성: 메서드 체이닝을 통한 직관적인 쿼리 작성
  • 동적 쿼리: 조건에 따른 유연한 쿼리 구성

AI 통합

Spring AI OpenAI 1.1.2

OpenAI GPT 모델 연동

선택 이유

  • Spring 생태계 통합: Spring Boot와 자연스러운 통합
  • 추상화: 다양한 AI 프로바이더로 쉽게 전환 가능
  • 설정 간소화: application.yaml 기반 간편한 설정

인프라

AWS Cloud (ap-northeast-2)

서비스 용도 스펙
VPC 네트워크 격리 10.0.0.0/16, Public/Private Subnet
EC2 애플리케이션 서버 t3.micro, Amazon Linux 2023
RDS 데이터베이스 db.t3.micro, PostgreSQL 17
ECR 컨테이너 이미지 저장소 cherrish-server
Parameter Store 환경변수 관리 DB 접속 정보, API Key 등
IAM 권한 관리 EC2 Role, GitHub Actions OIDC
SSM 서버 접속 및 배포 Session Manager, Run Command

컨테이너화

  • Jib 3.5.2: Dockerfile 없이 컨테이너 이미지 빌드
  • Docker: 애플리케이션 컨테이너 실행
  • Docker Compose: 로컬 개발 환경 구성

Jib 선택 이유

  • 빠른 빌드: 레이어 캐싱으로 증분 빌드 지원
  • Docker 불필요: 로컬 Docker 데몬 없이 빌드 가능
  • ECR 직접 푸시: CI/CD 파이프라인 간소화

웹 서버 및 SSL

  • Nginx: 리버스 프록시 (443 → 8080)
  • Let's Encrypt: SSL/TLS 인증서 (자동 갱신)
  • 도메인: api.cherrish.kro.kr

CI/CD

GitHub Actions

워크플로우 트리거 작업
CI PR to develop/main 빌드, 테스트, Checkstyle, 커버리지
CD Push to develop Jib 빌드 → ECR 푸시 → SSM 배포

주요 특징

  • OIDC 인증: Access Key 없이 AWS 연동
  • 자동 배포: develop 브랜치 푸시 시 자동 배포
  • Discord 알림: 배포 성공/실패 알림

코드 품질 및 테스트

  • JUnit Platform: 테스트 프레임워크
  • Spring Boot Test: 통합 테스트
  • Checkstyle 12.3.0: 코드 스타일 검사
  • JaCoCo 0.8.12: 코드 커버리지 측정
  • CodeRabbit: AI 기반 자동 코드 리뷰

API 문서화

SpringDoc OpenAPI 2.8.14

Swagger UI 기반 API 문서 자동 생성

선택 이유

  • Spring Boot 3.5.x 공식 권장 호환 버전

주요 라이브러리

  • Lombok: 보일러플레이트 코드 자동 생성
  • Spring Validation: Bean Validation API 구현체

추후 도입 고려 중인 기술

  • pgvector: PostgreSQL 벡터 검색 확장 (AI 임베딩 저장)
  • Redis: 캐싱 및 세션 관리
  • Prometheus & Grafana: 애플리케이션 모니터링 및 메트릭 시각화
  • ALB: 로드 밸런싱 및 Auto Scaling 대비

Clone this wiki locally