Spring(스프링) 기술 블로그 최신 글
Spring(스프링)과 Java 서버 개발, API 설계와 서비스 운영 사례를 다룬 회사 기술 블로그 글입니다.
Spring 관련 최신 기술 블로그 글
예금 금리 비교(2026.11.02 기준)
예금 금리 비교(2026.11.02 기준) 기준일 2026-11-02 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 11월 2일적금 금리 비교(2026.10.23 기준)
적금 금리 비교(2026.10.23 기준) 기준일 2026-10-23 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 23일예금 금리 비교(2026.10.23 기준)
예금 금리 비교(2026.10.23 기준) 기준일 2026-10-23 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 23일개인신용대출 금리 비교(2026.10.20 기준)
개인신용대출 금리 비교(2026.10.20 기준) 기준일 2026-10-20 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 20일전세자금대출 금리 비교(2026.10.20 기준)
전세자금대출 금리 비교(2026.10.20 기준) 기준일 2026-10-20 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 20일주택담보대출 금리 비교(2026.10.20 기준)
주택담보대출 금리 비교(2026.10.20 기준) 기준일 2026-10-20 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 20일적금 금리 비교(2026.10.20 기준)
적금 금리 비교(2026.10.20 기준) 기준일 2026-10-20 💡 이 표는 금융감독원 금융상품통합비교공시 시스템에서 제공하는 오픈 API를 통해 수집한 정보를 바탕으로 작성한 자료로, 특정 금융회사나 상품을 추천하려는 목적이 없어요. 오픈 API와 금융감독원 금융상품 한눈에 웹사이트는 데이터 갱신 시점, 조회 조건 및 제공 범위 등에 따라 노출되는 상품과 세부 정보가 다를 수 있어요. 표에 표시된 금리는 공시 기준일의 […]
케이뱅크 공식 블로그2026년 10월 20일코딩 에이전트가 Spring을 못 짠다면, component scan부터 걷어내 보세요
테스트 하나가 10번 중 10번 실패한 원인은 component scan에 있었습니다
flex 공식 블로그2026년 10월 13일Spring Boot 4.1까지 나온 지금, 무엇이 바뀌었고 무엇을 먼저 준비해야 할까요
3.5 지원 종료 이후를 준비하는 팀을 위한 마이그레이션 노하우
flex 공식 블로그2026년 9월 29일@TransactionalEventListener는 왜 조용히 무시될까
트랜잭션 밖에서 사라지는 이벤트와 fallbackExecution을 안전하게 쓰는 기준
flex 공식 블로그2026년 9월 15일Spring Data MongoDB 가이드: 연관관계 설계와 업데이트 전략
Spring Data MongoDB에서 연관관계 설계 시 발생하는 N+1 문제를 해결하는 방법과, 도큐먼트를 안전하게 업데이트하는 전략을 정리해 공유합니다.
카카오페이 기술 블로그2026년 9월 9일배송최적화 시스템 구축기 Part 02. 복잡한 비즈니스 로직에 유연한 디자인 패턴 입히기
안녕하세요! 올리브영 배송최적화 스쿼드의 백엔드 개발을 담당하고 있는 로미입니다.🌠 지난 Part 01에서는 멀티 센터 체제 전환의 배경과 배송최적화 시스템의 전체 아키텍처를 소개했는데요. 이번 Part 0…
올리브영 테크블로그2026년 9월 4일Spring Data Redis: Repository vs RedisTemplate — 실전 성능 비교
여기어때 기술블로그 - Medium2026년 7월 1일학습에이전트 - Building the Brain
Series 학습에이전트 - The Evolving Shape of Learning 학습에이전트 - Building the Brain 안녕하세요. 인프랩의 BE 개발자 약풍, 로켓입니다. 지난 글에서는 학습 에이전트가 왜 필요했는지, 어떤 기능이 있는지, 제품 측면에서 어떤 고민을 했는지 살펴보았습니다. 이번 글부터는 학습 에이전트의 각각의 영역을 구체적으로 살펴보려 합니다. 첫 번째로, 학습 에이전트의 백엔드 시스템을 어떻게 설계하고 구현했는지 이야기해 보겠습니다. 기술스택 선정 학습 에이전트의 트래픽을 서빙할 서버는 다음과 같은 요구사항들을 충족해야 했습니다. 1.다량의 채팅 트래픽을 서빙해야 한다 에이전트의 기능은 LLM 채팅 플랫폼 위에서 동작해야 합니다. 따라서 학습 에이전트 서버는 대량의 채팅 트래픽을 감당해야 합니다. 서버 관점에서 보면, 하나의 요청이 오랜 시간 동안 쓰레드를 점유해서는 안 됩니다. LLM 응답은 SSE(Server-Sent Events)를 통해 토큰 단위로 실시간 스트리밍되며, 하나의 대화 요청이 수십 초간 연결을 유지합니다. 다수의 유저들이 동시에 대화할 때도 안정적으로 응답해야 하므로, 전통적인 쓰레드 풀 모델로는 쓰레드 고갈이 발생할 수 있습니다. 2.복잡한 AI 파이프라인을 설정할 수 있어야 한다 학습 에이전트는 채팅 기능 뿐만 아니라 다양한 방식으로 확장될 수 있습니다. 복잡한 AI 파이프라인을 설정할 수 있고, 관리하기 쉬운 형태로 코드를 작성할 수 있어야 합니다. 구체적으로 사용자 질문 → 의도 분류 → 관련 강의 검색(RAG) → LLM 응답 생성 → 후처리 같은 다단계 파이프라인을 구성해야 합니다. 각 단계에서 조건 분기, 에러 핸들링, 재시도 등이 필요할 수 있습니다. 이러한 목적을 이룰 수 있는 백엔드 기술 스택을 조사하기 시작했습니다. Spring MVC + Virtual Thread 먼저 팀원들이 친숙하게 사용하고 있는 프레임워크인 Spring MVC를 후보에 올렸습니다. 단, 일반적인 Spring MVC로는 “다량의 채팅 트래픽을 서빙해야 한다”는 요구사항을 충족할 수 없습니다. Spring MVC는 기본적으로 요청당 쓰레드를 1개씩 할당하기 때문에, LLM 트래픽 처리 시 쓰레드 고갈이 금방 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Virtual Thread 사용을 고려할 수 있습니다. Virtual Thread는 블로킹 I/O(DB 쿼리, HTTP 호출, 파일 읽기 등)를 만나면 캐리어 쓰레드(플랫폼 쓰레드)에서 자동으로 분리(unmount)됩니다. 그러면 캐리어 쓰레드는 다른 Virtual Thread를 처리할 수 있습니다. 덕분에 동기적, 순차적 코드 스타일을 유지하면서도, 리액티브 프로그래밍 없이 높은 동시성을 확보할 수 있습니다. JAVA 24 버전까지는 Virtual Thread synchronized 메서드 사용 시 캐리어 스레드가 블록되는 이슈가 있었지만, JAVA 25부터는 이러한 pinning 이슈가 상당 부분 해결되었습니다. pinning이란 ? 장점 단점 안정적인 Spring 생태계 검증된 라이브러리를 변경 없이 사용 가능 Virtual Thread는 비교적 새로운 기술 라이브러리 호환성(pinning 등)에 대한 검증 필요 낮은 추가 학습 비용 기존 Spring MVC 개발 경험을 그대로 활용 SseEmitter API의 번거로움 Webflux의 Flux<ServerSentEvent> 대비 많은 보일러플레이트 Spring Webflux Spring Webflux는 동시에 많은 연결을 최소한의 리소스로 유지해야 할 때 강점을 발휘합니다. Webflux는 Netty 기반 이벤트 루프 위에서 동작하며, Project Reactor의 Mono/Flux 타입을 통해 비동기, 논블로킹 스트림을 처리합니다. 요청마다 쓰레드를 1개 할당하는 전통적 서블릿 모델과 달리, Webflux는 소수의 이벤트 루프 쓰레드가 수천~수만 개의 동시 연결을 번갈아 처리합니다. 장점 단점 SSE/스트리밍에 최적화된 설계 이벤트 스트림을 프레임워크에서 지원
tech.inflab.com2026년 6월 30일Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록
Spring Data JDBC Composite PK를 쓰고 싶었을 뿐인데, Batch·Kotlin·Jackson·Gradle까지 함께 정리하게 된 이야기 안녕하세요. 네이버페이 카드 BE 팀 오규석 입니다. 네이버페이에서 카드결제 매입/정산 개발을 담당하고 있습니다. 이 글은 카드 매입/정산 배치 모듈을 Spring Boot 3.5.0 → 4.0.1로 업그레이드하면서 만났던 시행착오와 진행과정을 정리한 기록입니다. 📝 용어 한 줄 정리 이 글에서는 같은 대상을 두 가지로 부릅니다. Composite PK는 DB 관점에서 PK가 여러 컬럼으로 구성된 키를 가리키고, Composite ID는 이 PK를 Spring Data JDBC에서 표현한 ID 클래스 매핑을 가리킵니다. 즉 “DB의 Composite PK를 Spring Data JDBC의 Composite ID로 매핑하는 작업” 이라고 보시면 됩니다. 먼저 요약하면 시작은 Spring Data JDBC의 Composite ID 적용이었습니다. 실제 작업은 Spring Boot 4 / Spring Framework 7 / Spring Batch 6 / Jackson 3 전환으로 확장되었습니다. 가장 큰 변경은 Batch 메타데이터 저장 방식, Job 실행 API, JobParameters 구조, listener·item 패키지 이동이었습니다. 운영 반영 전에는 Spring Batch v5에서 실패한 JobExecution 정리, Batch 메타 스키마 마이그레이션, DB 접근 정책 확인이 필요했습니다. 메이저 업그레이드는 “컴파일 통과”보다 “운영에서 기존과 동일하게 동작하는지”를 확인하는 작업에 가까웠습니다. 이 글의 전제 이 글은 실제 업그레이드 작업 당시 적용한 Spring Boot 4.0.1 버전 기준의 기록입니다. 이 글을 읽으시는 시점에는 더 최신 패치 버전이 있을 수 있고, Spring Boot 4 / Spring Batch 6은 패치 버전에 따라 세부적인 내용이 이 글과 차이가 있을 수 있습니다. 이 글에서 나오는 코드는 실제 프로젝트 코드가 아닌 상황을 단순화한 예제입니다. 또한 이 글은 일반적인 Spring WAS 서버가 아니라, Spring Batch Application 모듈 업그레이드이니 일반적인 Spring 서버 업그레이드시에는 추가 사항이 필요할 수 있습니다. 이 글은 다음 환경을 기준으로 작성했습니다. (화살표(→) 앞은 업그레이드 전, 뒤는 업그레이드 후 버전입니다) Spring Boot 3.5.0 → 4.0.1 (Spring Framework 6.2.7 → 7.0.2) Spring Batch 5.2.2 → 6.0.1 Spring Data JDBC 3.5.0 → 4.0.1 Kotlin 2.1 → 2.3 Java 21 ojdbc8 → ojdbc11 kotest 5.9.1 → 6.0.7 spring-boot-starter-aop → spring-boot-starter-aspectj Oracle DB에 JDBC 기반 Spring Batch 메타데이터 저장 📖 이 글을 읽는 법 글이 다루는 범위가 꽤 넓습니다. 관심사에 따라 다음 순서로 골라 읽으셔도 됩니다. - Spring Data JDBC Composite ID가 뭔지 궁금하다면 → 1장 - Spring Batch 6 마이그레이션이 주 목적이라면 → 3장 - 운영 반영 체크리스트가 필요하다면 → 5장과 마지막 체크리스트 참고한 공식 문서 - Spring Boot Upgrading Guide — https://docs.spring.io/spring-boot/upgrading.html#upgrading.from-3x - Spring Boot 4.0 Migration Guide — https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide - Spring Boot Release Notes — https://github.com/spring-projects/spring-boot/wiki#release-
NAVER Pay Dev Blog - Medium2026년 5월 11일퀸잇 검색 시스템의 여정: WHERE title LIKE '%keyword%'에서 Hybrid Search까지
Server Engineer, 박서준 님
Engineering - 라포랩스 팀블로그2026년 4월 17일Spring Boot Startup Time 최적화 : 90초에서 30초까지의 여정(feat. 오픈소스 기여)
Server Engineer, 하성준 님
Engineering - 라포랩스 팀블로그2026년 4월 14일수억 건의 데이터, 맛있게 쪼개 먹는 방법 (with. Partitioning)
Spring Batch Partitioning, Cursor 기반 ItemReader, Bulk Operations를 활용해 수억 건 데이터 처리 성능을 향상시킨 실전 경험을 공유합니다.
카카오페이 기술 블로그2026년 3월 18일AI가 규칙을 "알잘딱" 지키는 백엔드 레포 만들기
코드베이스의 구조와 결정론적 검증 시스템으로 만드는 AI Native 개발 환경 리팩토링하기
채널 테크 블로그2026년 2월 26일Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기
…
올리브영 테크블로그2026년 2월 23일