[DevOps] 마이크로서비스 기술스택 선정

마이크로서비스 기술스택

공통 기술 스택

  • Backend: Java 21, Spring Boot 3.2.0, Gradle
  • Frontend: React 18+, Vite, pnpm
  • Container: Docker, Eclipse Temurin 21-jdk
  • Database: MySQL 8.3.0 (HikariCP 커넥션 풀)
  • Messaging: Kafka (snappy 압축)

서비스별 특이사항

Data Ingestion 서비스

  • 네트워크: Netty 4.1.104 (Boss 1, Worker 8, Port 8992)
  • Kafka: Producer 배치 (16KB, linger 10ms)
  • DB: 읽기 전용 (Pool Size: 5, Min Idle: 2)
  • JVM: Dockerfile에 명시적 옵션 있음 (-Xmx512m -Xms256m)

API 서비스 (Backend, Admin Backend)

  • DB 커넥션 풀: Max 10, Min Idle 5
  • 파일 업로드: 최대 50MB
  • 보안: OAuth2, Spring Security
  • JVM: 옵션 없음 (기본값 의존)

Message Processor

  • Kafka Consumer: Group ID 지정, earliest offset, Max Poll 10, Concurrency 1, Manual ACK
  • Query: QueryDSL 5.0.0
  • Search: OpenSearch 2.8.1 (선택적)

JVM 옵션 권장사항

API 서비스와 Processor에 명시적 JVM 옵션 추가 권장:

ENV JAVA_OPTS="-Xmx1536m -Xms1024m -XX:MaxMetaspaceSize=256m"

현재는 K8s Limit으로 제한되므로 긴급하지 않지만, 명시적으로 설정하면 OOM 시 디버깅이 쉬워진다.