~/tech-blog — zsh
$ ls projects/ # 만든 것들 — 직접 만들어 운영하고 있는 서비스입니다
전체 Spring Spring JPA Database
$ ls -lt posts/ | head -24 # 연재는 첫 편만
SPRING

self-invocation

같은 클래스 내부 호출에서 @Transactional이 조용히 무시되는 self-invocation 문제의 원인과, REQUIRES_NEW를 안전하게 쓰는 해결 방법을 정리합니다.

c31d7cd · Spring — 6 min
JAVA · JVM

JVM TLAB (Thread Local Allocation Buffer)

멀티스레드 환경에서 객체 할당 경합을 줄이는 JVM의 TLAB(Thread Local Allocation Buffer) 동작 원리와 주요 튜닝 플래그를 정리합니다.

c31d7cd · Java · JVM — 5 min
KAFKA

Kafka 재처리

Kafka 운영 중 발생한 주기적 재처리 문제를 계기로 offset commit의 동작 방식과 Spring Kafka AckMode의 종류별 특징을 정리합니다.

efa5056 · Kafka — 6 min
회고

2025년 회고

분산락 도입, DDD 경계 문서화, 슬로우 쿼리 개선부터 개인 프로젝트 오픈과 사내 세미나까지 한 해의 경험을 정리합니다.

2026.01.01 · a2648bb · 회고 — 10 min
DATABASE

데이터베이스 인덱스와 페이지네이션 최적화

클러스터/세컨더리/커버링 인덱스의 구조를 정리하고, OFFSET 방식의 느린 페이지네이션을 커버링 인덱스, No Offset, 파티셔닝으로 최적화하는 방법을 비교합니다.

efa5056 · Database — 4 min
SPRING

처음 쓰는 스프링 웹 플럭스

자동매매 프로젝트를 구성하며 Spring MVC와 WebFlux의 스레드 모델 차이를 비교하고, WebFlux를 선택하게 된 이유를 정리합니다.

c915a20 · Spring — 3 min
DATABASE

MySQL 인덱스 정리

MySQL이 인덱스로 B-Tree를 사용하는 이유와 카디널리티·선택도 개념을 바탕으로, 인덱스를 효율적으로 설계하는 방법을 정리합니다.

c31d7cd · Database — 5 min
SPRING JPA

식별자 (Identifiers), 관계 (Relationships)

JPA의 ID 생성 전략과 OneToMany, OneToOne, ManyToMany 연관관계 매핑에서 성능을 고려한 실무 선택 기준을 정리합니다.

c31d7cd · Spring JPA — 7 min
SPRING JPA

상속 매핑 전략

JPA의 상속 매핑 전략인 SINGLE_TABLE, JOINED, TABLE_PER_CLASS, MappedSuperclass를 비교하고 실무 선택 기준과 성능 최적화 팁을 정리합니다.

efa5056 · Spring JPA — 4 min
SPRING JPA

데이터 액세스 스택

JPA·Hibernate 기반 데이터 액세스 계층에서 SQL 로깅, 스키마 관리, 커넥션 풀 모니터링 등 성능을 좌우하는 요소들을 정리합니다.

c31d7cd · Spring JPA — 5 min
SPRING JPA

영속성 컨텍스트

JPA 영속성 컨텍스트의 캐싱·더티 체킹·쓰기 지연 동작 원리와 플러시 발생 시점을 정리하고, 배치 처리와 플러시 모드를 활용한 성능 최적화 방법을 소개합니다.

c31d7cd · Spring JPA — 6 min
JAVA · JVM

Java 기준 멀티스레드와 레이스 컨디션

Java에서 멀티스레드 프로그래밍 시 발생하는 레이스 컨디션의 원인을 예제로 살펴보고, synchronized·Lock·Atomic을 활용한 해결 방법을 정리합니다.

efa5056 · Java · JVM — 4 min
DATABASE

슬로우 쿼리 개선

응답에 6초 이상 걸리던 페이지의 원인을 실행계획으로 분석하고, MySQL 옵티마이저의 드라이빙 테이블 선택 문제를 STRAIGHT_JOIN으로 해결한 경험을 정리합니다.

2025.02.21 · efa5056 · Database — 5 min
회고

2024년 회고

신규 프로젝트를 기일에 맞춰 오픈하며 겪은 락 전략, 캐시 Stampede, DBCP 설정 등 한 해 동안의 학습을 정리합니다.

2025.01.06 · c31d7cd · 회고 — 11 min
DATABASE

Cache Stampede(캐시 스템피드)

if(kakao)에서 소개된 캐시 스템피드 현상의 원인과 해결책(락, 캐시 웜업, 하이브리드 캐시), 그리고 Spring Boot Cold Start와 JIT 컴파일러의 동작 원리를 정리합니다.

c915a20 · Database — 8 min
테스트

@Mock, @MockBean, @Spy, @SpyBean, @InjectMocks

Mockito의 @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 애노테이션의 차이와 단위·통합 테스트에서의 활용법을 예제 코드로 정리합니다.

2024.10.25 · efa5056 · 테스트 — 1 min
인프런 워밍업 클럽 발자국 전체 4편

1주차 발자국

인프런 워밍업 클럽 백엔드 스터디 2기 1주차 회고로, 추상화와 이름 짓기, SOLID 원칙을 적용해 주문 검증 로직을 리팩터링한 과정을 정리합니다.

DATABASE

DB 인덱스

MySQL이 인덱스로 B-Tree를 사용하는 이유와 인덱스의 동작 방식을 살펴보고, 복합 인덱스를 활용해 불필요한 단일 인덱스로 인한 자원 낭비를 줄이는 실무 설계 방법을 정리합니다.

2024.10.12 · efa5056 · Database — 6 min
객체지향 · 설계

SOLID

SRP, OCP, LSP, ISP, DIP 다섯 가지 객체지향 설계 원칙을 Java 예제 코드와 함께 정리합니다.

2024.10.03 · efa5056 · 객체지향 · 설계 — 4 min
전체 글 214편 보기 →
● main 214 posts UTF-8 LF © 2026 코징 RSS · GitHub