Spring Boot + MongoDB 대용량 트래픽 처리: Bulk Insert 성능 최적화 (ft. bson4jackson)

bson4jackson bulk insert 성능개선 banner

Spring Data MongoDB 변환 방식에 따라서 대량의 bulk insert를 수행할 때 성능상의 병목이 발생할 수 있다. 우리는 이런 문제를 bson4jackson과 RawBsonDocument를 이용하여 대량의 bulk insert를 처리할 때 성능의 극대화를 이룰 수 있다.

Spring 7.X (Spring Boot 4.X) gRPC 1.0.0 정식 릴리즈 그리고 gRPC 사용법

spring grpc 1.0.0 GA banner

Spring gRPC 1.0.0 버전이 정식 릴리즈 됐다. 이를 통해 이제 Spring 공식 지원을 통해 안정적인 고성능 RPC(Remote Procedure Call) 환경을 쉽게 구축할 수 있다. 이번 포스팅에서는 gRCP 1.0.0 정식 릴리즈가 되면서 기존의 gRPC 0.X 버전을 사용하던 기존 프로젝트에서 gRPC 1.0.0 버전을 적용하기 위해서 고려해야 할 사항과 적용 방법, 그리고 gRPC 사용법에 대해서 간단히 정리해 보고자 한다.

Spring Boot GraalVM Native Image 빌드 하기

spring boot graalvm banner

기존 JVM 배포 방식 보다 훨씬 빠른 구동 속도와 적은 메모리 사용량을 자랑하는 GraalVM Native Image는 클라우드 네이티브 환경에서 선택이 아닌 필수가 되어 가고 있다. Spring AOT의 사전 처리 과정과 Buildpacks와 Native Build Tools 두 가지 방식을 통해 spring boot graalvm native image를 빌드하는 방법을 정리하였다.

Spring Boot Server Sent Event(SSE) 간단 샘플

Server Sent Event (SSE)는 웹 어플리케이션에서 실시간 업데이트를 제공하는 데 사용되는 웹 기술 중 하나이다. Spring에서는 Spring MVC에서 사용되는 SseEmitter 클래스를 제공하여 손쉽게 SSE 스트림을 생성하고 클라이언트에게 이벤트를 푸시할 수 있도록 한다. 이를 통해 클라이언트가 연결을 유지하면서 서버로부터 데이터를 지속적으로 수신할 수 있도록 한다. 이번 포스팅에서는 Spring에서 SSE를 사용하는 방법에 대해서 정리해보고자 한다.

Jasypt를 이용한 Spring Boot 애플리케이션 설정 정보 암호화 하기

Spring Boot의 application.yml(.properties)과 같은 설정 정보 파일에는 데이터 베이스 연결 정보나 API 키, 비밀번호와 같은 민감한 정보를 설정해야 하는 경우가 있다. 이러한 민감한 정보를 평문으로 설정하게 되면 간혹 정보가 노출되었을 때 심각한 문제를 초래 할 수 있다. Jasypt 라이브러리를 사용하여 어플리케이션의 설정 정보를 암호화하여 민감한 정보를 보호할 수 있다. 간단한 예제 코드와 함께 spring에서 Jasypt 라이브러리를 사용하는 방법에 대해서 정리해 보고자 한다.

Spring Boot JSON 자동 구성 및 설정

Spring Boot JSON 데이터 처리는 RESTful API를 구축하거나 데이터 전송을 수행할 때 필수적인 요소라고 할 수 있다.
Spring Boot는 기본적으로 Jackson 라이브러리를 사용하여 JSON 직렬화 및 역직렬화를 자동으로 처리한다. 따라서 개발자는 복잡한 설정 없이도 객체를 JSON으로 변환하고, JSON 데이터를 객체로 손쉽게 맵핑할 수 있다.
이번 포스팅에서는 Spring Boot의 JSON Auto Configuration 방식과 주요 설정 방법에 대해서 정리하고자 한다.

Spring Boot RestClient (ver 3.2)

지금까지 대표적으로 사용했던 HTTP 클라이언트 모듈은 WebClient와 RestTemplate가 대표적으로 사용되었다. 하지만 RestTemplate은 이제 maintenance 모드로 변경되었고 (deprecated는 아니다) WebClient는 강력하지만 단순한 동기 호출에는 좀 과한 면이 있었다.
이런 문제를 조금 더 개선해 줄 수 있는 HTTP 클라이언트 모듈이 Spring Framework 6.1 (Spring Boot 3.2) 부터 소개된 RestClient다. RestTemplate의 직관적인 API 디자인과 WebClient와 같이 fluent API를 결합하여 동기 방식의 HTTP 통신을 지원하는 RestClient에 대해서 정리하고자 한다.