모든 블로그
넥스트리

넥스트리

도메인nextree.io
주요 카테고리 백엔드 · 프론트엔드 · AI

활동 요약

대표 인기 포스트DB 트랜잭션 중심 대량요청 처리 최적화651 조회
최근 30일
18개
평균 조회
66
누적 조회
11,766
전체 글
177개
마지막 발행
2026. 10. 30.
블로그 방문

넥스트리 기술 블로그 글 (66)

백엔드

Fixture 기반 테스트 데이터 구성

Fixture 기반으로 통합 테스트 데이터를 재사용 가능하게 정리한 경험을 공유했습니다. 공통 데이터는 `create`, 커스터마이징은 `gen`, 복수 시나리오는 `genMore`로 분리해 테스트 가독성과 유지보수성을 높였습니다.

#Spring Boot#H2#test
6220

백엔드

설문 관리 서비스 구현 사례

의료 설문 플랫폼에서 설문 정의와 수집을 담당하는 서비스를 헥사고날 구조와 CQRS로 설계했습니다. Master/Snapshot, Kafka, Outbox 등을 적용해 정합성과 운영 안정성을 확보했습니다.

#Java#Spring Boot#Kafka
2100

백엔드

MAT을 활용한 HeapDump 분석

K8s 환경에서 반복 재시작의 원인이 OOMKilled일 때 Heap Dump와 MAT로 원인을 추적하는 방법을 다뤘습니다. 로그로 보이지 않는 메모리 누수와 참조 관계를 분석해 DB I/O 병목까지 찾아내는 흐름을 설명했습니다.

#MAT#heap dump#Kubernetes
1900

백엔드

싱글톤 패턴을 이용한 캐시 관리

메뉴 권한처럼 변경은 적고 조회는 많은 데이터를 싱글톤 인메모리 캐시로 관리하는 방법을 소개했습니다. 이를 통해 로그인 시 DB 부하를 줄이고 응답 속도와 유지보수성을 개선했습니다.

#싱글톤#cache#Spring Boot
2300

백엔드

putlfAbsent()의 한계와 변경감지 개선

실시간 모니터링에서 계산식 메타데이터 동기화 문제를 다뤘습니다. `putIfAbsent()` 한계를 보완하기 위해 `replace()`로 변경 감지와 이벤트 발행을 개선했습니다.

#Java#동시성#cache
1300

백엔드

대용량 JSON

대용량 JSON 처리에서 발생한 OOM과 세션 제한 문제를 정리했습니다. 요청 지연, Kubernetes Job 분리, HTTP 스트리밍과 MongoDB 최적화로 안정성을 높였습니다.

#Java#Kubernetes#MongoDB
3800

백엔드

JPA 배치 인서트 vs JDBC배치 인서트

대용량 데이터 등록에서 JPA 배치와 JDBC 배치를 직접 비교해 성능을 확인했습니다. 단일 MySQL 환경에서는 JDBC 템플릿 배치를 선택해 생산성과 속도를 함께 높였습니다.

#JPA#JDBC#Spring Boot
3600

백엔드

GraphQL

GraphQL의 개념과 REST 대비 장점을 설명하고, Spring for GraphQL과 Apollo Client 연동 예시를 함께 정리했습니다. 필요한 데이터만 주고받는 API 설계에 유리하지만, 스키마를 공통 관리해야 하는 점도 함께 짚었습니다.

#GraphQL#REST API#Spring Boot
2700

백엔드

메모리 누수의 개념과 방지 방법

메모리 누수의 개념과 원인을 GC Root 관점에서 설명했습니다. 리소스 해제, static 변수 관리, 약한 참조 활용으로 예방하는 방법을 정리했습니다.

#Java#memory leak#GC
3200

백엔드

대용량 데이터 등록

대용량 메타데이터 등록 시간을 줄이기 위해 saveAll, 배치 인서트, 비동기 병렬 처리를 단계적으로 적용했습니다. 그 결과 등록 시간을 2분 내외로 단축했습니다.

#JPA#batch#비동기
3000

백엔드

JavaParser

JavaParser로 자바 소스를 AST로 파싱하고 Visitor, SymbolSolver로 정적 분석에 활용하는 방법을 정리했습니다. 멀티 프로젝트와 Lombok 환경에서의 한계와 우회 방법도 함께 소개했습니다.

#JavaParser#AST#Visitor
3500

백엔드

MongoDB와 Transaction

Spring Boot와 MongoDB에서 `@Transactional` 사용 시 단일 인스턴스에서는 트랜잭션 오류가 발생했습니다. 레플리카 셋을 구성하고 primary에 연결해야 정상적으로 롤백과 커밋을 처리할 수 있었습니다.

#MongoDB#Transaction#Spring Boot
3100