반응형

boot 3

[SPRING/JAVA] Spring Boot 멀티모듈 프로젝트 구조 설계하기

Spring Boot 기반 애플리케이션이 커질수록 단일 모듈 구조는 빌드 시간 증가, 의존성 혼재, 팀 간 경계 모호화 같은 문제를 일으킵니다. 멀티모듈 프로젝트는 코드를 논리적 단위로 분리해 각 모듈의 책임을 명확히 하고, 재사용성과 독립적 빌드를 가능하게 합니다. 이 글에서는 Gradle 기반 Spring Boot 멀티모듈 프로젝트를 실제 프로젝트에서 활용 가능한 수준으로 설계하는 방법을 단계별로 설명합니다.멀티모듈 구조의 핵심 원칙멀티모듈 설계에서 가장 중요한 원칙은 의존성 방향을 단방향으로 유지하는 것입니다. 상위 모듈이 하위 모듈에 의존하되, 역방향 의존은 허용하지 않아야 순환 참조 문제를 방지할 수 있습니다.일반적으로 많이 사용하는 레이어 분리 방식은 다음과 같습니다: app 모듈: Spri..

gRPC Spring Boot 서비스 간 통신 구현하기

gRPC(Google Remote Procedure Call)는 HTTP/2 기반의 고성능 RPC 프레임워크로, 마이크로서비스 간 통신에서 REST API 대비 낮은 지연 시간과 강한 타입 안전성을 제공합니다. Spring Boot 환경에서 gRPC를 적용하면 Protobuf 직렬화를 통해 페이로드 크기를 줄이고, 양방향 스트리밍 같은 고급 통신 패턴도 손쉽게 구현할 수 있습니다. 이 글에서는 Spring Boot 프로젝트 두 개(서버/클라이언트)를 직접 구성하며 gRPC 서비스 간 통신을 단계별로 구현합니다.프로젝트 의존성 및 Protobuf 정의Gradle 의존성 설정grpc-spring-boot-starter는 Spring Boot 자동 구성과 gRPC 서버 라이프사이클을 통합해 주는 핵심 라이브러..

[JAVA/SPRING] GraalVM Native Image로 Spring Boot 시작 시간 줄이기

Spring Boot 애플리케이션의 긴 시작 시간은 서버리스 환경이나 컨테이너 오케스트레이션 환경에서 치명적인 병목이 됩니다. GraalVM Native Image는 JVM 기반 애플리케이션을 AOT(Ahead-of-Time) 컴파일로 네이티브 실행 파일로 변환해, 시작 시간을 수백 밀리초 단위로 단축하고 메모리 사용량도 대폭 낮춥니다. Spring Boot 3.x부터는 공식적으로 GraalVM Native Image를 지원하므로, 실제 프로젝트에 바로 적용할 수 있는 수준으로 성숙했습니다.GraalVM Native Image란GraalVM은 Oracle이 개발한 고성능 JDK 배포판으로, 그 핵심 기능 중 하나인 Native Image는 Java 바이트코드를 분석해 실행에 필요한 코드만 추려 플랫폼 네..

반응형