🚩 1. 서비스 통합 (MSA → Monolith)JVM 인스턴스 수 감소 (메모리, CPU 절약)REST API 호출을 내부 메서드 호출로 변경하여 네트워크 비용 절감🚩 2. JVM 튜닝 (OpenJDK vs GraalVM)JVM 메모리 제한을 통해 메모리 오버헤드 방지기본적으로 스프링부트는 1GB 이상의 Heap을 사용하기 때문에, 서비스별로 최적화가 필요함.java -Xms128m -Xmx256m -XX:MaxRAM=256m -jar my-app.jar✅ -Xms128m → 초기 Heap 크기를 128MiB로 설정✅ -Xmx256m → 최대 Heap 크기를 256MiB로 제한✅ -XX:MaxRAM=256m → 전체 JVM 메모리 사용량을 256MiB로 제한JVM 옵션설명 권장 설정값 예시-Xm..
✅ GraalVM을 사용한 네이티브 이미지 정적 링크 빌드란?GraalVM 네이티브 이미지(Native Image)란?Java 애플리케이션을 AOT(Ahead-Of-Time) 컴파일하여 **독립 실행 파일(바이너리)**로 변환하는 기술입니다.이렇게 하면 JVM 없이 실행 가능하며, 시작 속도가 빠르고 메모리 사용량이 적습니다.그런데 네이티브 이미지(Native Image)를 빌드하는 방법은 두 가지가 있습니다.동적 링크(Shared Link): 실행 시 OS의 공유 라이브러리(glibc 등)를 사용정적 링크(Static Link): 실행 파일에 필요한 모든 라이브러리를 포함 (독립적 실행 가능)즉, "정적 링크 빌드"란?OS에 의존하지 않고 실행될 수 있도록 모든 라이브러리를 실행 파일에 포함하는 방식입..
Java에서 WebClient와 FeignClient는 모두 REST API 호출을 위한 HTTP 클라이언트이지만, 설계 철학, 특징, 사용 방식에서 차이가 있습니다.아래에서 두 클라이언트를 자세히 비교해 보겠습니다.1. 기본 개념 및 목적 구분 WebClient FeignClient정의스프링의 리액티브(Non-blocking) HTTP 클라이언트선언형(Declarative) REST 클라이언트지원 방식Reactive 방식Blocking 방식 (기본적으로 동기 호출)사용 목적비동기/논블로킹 HTTP 통신간편한 선언형 HTTP 클라이언트 작성2. 프로그래밍 방식✅ WebClient (Reactive, Functional)함수형 스타일의 API 제공리액티브 스트림(Reactive Stream)을 기반으로 비..
// build.gradle.ktsplugins { id("org.springframework.boot") version "3.2.0" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.20" kotlin("plugin.spring") version "1.9.20" kotlin("plugin.jpa") version "1.9.20"}group = "com.example"version = "0.0.1-SNAPSHOT"repositories { mavenCentral()}dependencies { implementation("org.springframework.boot:spri..
비동기(Asynchronous) vs. 동기(Synchronous)작업 간의 실행 순서를 결정하는 개념입니다.동기(Synchronous): 요청을 보낸 후 응답이 올 때까지 기다리는 방식작업이 순차적으로 실행됨한 작업이 끝나야 다음 작업이 실행됨예: 전화 통화 (상대방이 응답해야 대화 가능)비동기(Asynchronous): 요청을 보낸 후 응답을 기다리지 않고 다음 작업을 실행하는 방식응답이 언제 도착할지 몰라도 다른 작업을 계속 수행할 수 있음예: 문자 메시지 (보내놓고 상대방이 언제 답장할지 몰라도 다른 일을 할 수 있음)블로킹(Blocking) vs. 논블로킹(Non-blocking)작업이 자원을 사용하는 동안 대기하는지 여부를 결정하는 개념입니다.블로킹(Blocking): 요청한 작업이 완료될 때..
Spring WebFlux는 비동기 논블로킹(Asynchronous Non-Blocking) 방식으로 동작하는 스프링 웹 프레임워크입니다.기존 Spring MVC와 달리 Reactive Streams 기반의 Reactor 라이브러리를 사용하여 높은 동시성을 처리할 수 있는 API를 만들 수 있습니다.✅ Spring Boot의 공식 비동기 웹 프레임워크✅ Reactor 기반의 논블로킹 I/O 처리✅ 적은 리소스로 높은 동시성 처리 가능✅ 마이크로서비스 및 서버리스 환경에 최적화1️⃣ Spring WebFlux vs Spring MVC 비교특징 Spring MVC (Blocking) Spring WebFlux (Non-Blocking)동작 방식동기(Blocking) 방식비동기(Non-Blocking) 방식스..