푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 220편 · 1 / 22 페이지)
-
-
*Spring Boot 안의 *디자인 패턴* — *프레임 워크 가 *패턴 *교과서* 인 *이유*
디자인 패턴 을 책으로 *외우는 *시대 는 *끝났다. Spring Boot 의 *코드 한 줄 한 줄 마다 — *GoF 패턴 이 살아 있다. @Transactional 의 *내부 가 Proxy, PasswordEncoder 의 *내부 가 Strategy, JdbcTemplate 가 *Template Method. Spring 을 *깊이 쓰면 — 패턴 이 *자연 익혀 진다. 이 글은 그 지도.
-
*디자인 패턴* — *Java 와 Python* 의 *서로 다른 *결**
디자인 패턴 은 경험 의 *결정체. 25 년 *전 의 GoF 책 의 *23 패턴 이 지금도 *유효. 그런데 Java 에서 *짠 패턴 과 Python 에서 *짠 패턴 은 코드 모양 이 *완전히 다르다. 언어 의 *결 이 패턴의 *얼굴 을 바꾼다. 두 언어를 *동시에 보면 *패턴 의 *본질 이 드러난다.
-
*Java / Python / Kotlin 의 *동기 / 비동기 연동* 방법 *완전 비교* — *HTTP / DB / Kafka / 외부 API 의 *6 가지 통합 패턴* 과 *언어별 *진짜 선택 기준***
이 글은 Java / Python / Kotlin 세 언어 가 외부 시스템 (HTTP / DB / Kafka / 메시지 큐) 과 *어떻게 연동 하는가 — 동기 / 비동기 양 방향 — 를 6 가지 패턴 으로 기계적 비교 한다. 전 글들 (Python vs Java 자료구조 + Kotlin Coroutine) 의 후속편.
-
*프로그램 *vs *프로세스 *vs *스레드* — *세 단어 의 *경계와 *관계*
프로그램 과 프로세스 와 스레드 — 비슷한 듯 *다른 세 단어. 백엔드 면접 의 *단골. 실 무 의 *결정적 *순간 마다 *되돌아 오는 *기본. 정의 만 외우면 *50%, 왜 그렇게 *나뉘었는지 알면 100%. 이 글은 그 *왜 를 짚는다.
-
*DB 성능 최적화 *전략* — *9 개 *층* 의 *순서대로 *짚기*
DB 가 *느리다 는 백엔드 의 *흔한 *호소. 원인 은 *9 개 *층 중 *어느 한 곳. 순서 없 이 *대응 하면 — *튜닝 후 도 *느리거나 *오히려 *악화. 9 개 *층 을 *위에서 아래로 *순서대로 *짚는 방법 — 이 글의 주제.
-
*트랜잭션 롤백 전략* — *깔끔하게 *되돌리는 *7 가지 *길*
commit 은 *쉽다. rollback 이 *어렵다. 문제가 *생기면 *처음 으로 *되돌리는 *능력 — 그게 시스템 의 *진짜 *완성도. Spring 의 *@Transactional 한 줄 *밑에 *7 가지 *롤백 전략 이 숨어 있다. 이 글은 그 전체 지도.
-
*Kotlin Coroutine 완전 가이드* — *suspend / launch / async / Flow / structured concurrency* 의 *실전 사용법* 과 *Java Virtual Thread (Loom) 와의 *진짜 차이*, *Spring Boot 백엔드 / Android 양쪽 *4 단 깊이 정리***
이 글은 Kotlin Coroutine 을 왜 / 어떻게 / 언제 의 3 축 으로 완전 정리 한다. Java 의 *Thread / Future / CompletableFuture 에 익숙한 개발자가 Coroutine 으로 *진입 시 *반드시 부딪히는 *4 가지 함정 까지 postmortem 으로 압축. 마지막에 Java Virtual Thread (Project Loom) 와의 진짜 차이 까지 짚는다.
-
자바 *Virtual Thread* — *Project Loom 의 정답*: 왜 *Tomcat 의 200 스레드* 가 *백만 개* 가 되는가, *Pinning 의 함정*, *Spring Boot 3.2+ 의 채택*, *Coroutine / Reactor 와의 *진짜 비교**
Java 21 LTS 가 Virtual Thread (Project Loom) 를 공식 release 한 2023 년 9 월 이후 — 백엔드 자바 의 풍경이 *조용히 바뀌고 있다. Reactor / RxJava / WebFlux 의 비동기 지옥 을 우회하고 원래 의 *sync-style 코드 로 수십~수백 배 의 동시성 을 얻는 길. Spring Boot 3.2+ 가 *한 줄 설정 으로 전 endpoint 를 *Virtual Thread 위에 올린다. 그러나 함정 도 명확 —
synchronized블록 의 pinning,ThreadLocal의 수백만 인스턴스, CPU 바운드 워크로드 의 *기댓값 0. -
*정산 정합성* 의 *진짜 어려움* — 배치 / Kafka / Outbox / Triple Idempotency 가 *합쳐져야* 풀린다
정산이 *한 건 *틀어졌습니다.*
한 줄짜리 메시지가 돈이 흐르는 시스템 에서 의미하는 건 간단하지 않다. 다음 날 고객 cs 가 *수십 건, 세무사가 *전화 하고, 은행 입출금이 *맞지 않는다.
결제 1 건 의 정합성 깨짐 이 돈, 세무, 신뢰, 시간 의 4 가지 동시 사고 를 만든다.