푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 169편 · 1 / 17 페이지)
-
-
Velero Kopia *'실패한 Job' 알람이 풀리지 않은* 진짜 이유 — LimitRange.maxLimitRequestRatio 가 만든 *admission 함정*, 그리고 같은 파일이 ArgoCD root-app 까지 *연쇄 정지* 시킨 *한 줄 스키마 버그*
토요일 저녁 7시쯤, 텔레그램으로 익숙한 형태 의 알람 3건이 도착했다.
-
주니어를 위한 Java Virtual Threads & Kotlin Coroutines 안내 — *왜* 두 개가 생겼고 *어떻게* 같은 문제를 *다른 길* 로 풀었는가
“동기 코드가 그냥 빨라지면 안 되나요?”
-
*Spring *후처리기* 와 *ThreadLocal* — *시니어가 *주니어에게 *조곤조곤 *설명하는 *진짜 *원리*
’‘‘@Transactional 은 어떻게 *동작 *해요?”“, ’‘ThreadLocal 이 왜 *메모리 *누수 *위험이 *있다고 *하나요?”“. 주니어 *3 년 차쯤 *되면 *’‘어렴풋이 알지만 *설명은 *못 하겠는”” 주제들이 있는데, *그 *대표가 *Spring 의 *후처리기와 ThreadLocal이다. *이 둘은 *얼핏 *상관 *없어 *보이지만, *Spring 의 *’‘마법””* 이 어떻게 *작동하는지의 *밑바닥 *두 *기둥이고, *그 *밑바닥을 *이해하면 *’‘아 그래서 *@Transactional 이 *클래스 *내부 *호출 시 *안 *먹혔구나”” 같은 *온갖 *수수께끼가 *한 번에 *풀린다.
이 글은 ’‘5 년 차 *시니어가 *주니어 *후배에게 *카페에서 *한 시간 *동안 *설명해주는”” 톤으로, 후처리기와 *ThreadLocal 을 *’‘무엇인가 → 왜 필요한가 → 어떻게 *동작 하나 → 실제 *Spring 에서 *어떻게 *쓰이나 → 흔한 *함정”” 의 *5 단계 로 *풀어본다.
-
템플릿·콜백·데코레이터 패턴 — *시니어가 *''*'주니어에게*''* 친절하게 풀어보는 Java/Spring 의 *''*'세 가지 변주*''*
’‘‘주니어가 처음 ’‘‘JdbcTemplate’’ 을 만났을 때 — ’‘’‘’
jdbcTemplate.query(sql, rowMapper)’‘’’ 의 ’‘‘두 인자 중 ’‘‘어느 게 ’‘‘템플릿’’ 이고 어느 게 ’‘‘콜백’’ 인지 ’‘‘한 번에 안 보인다’‘’‘. 그리고 *’‘‘2 년 뒤 ’‘‘Spring Security 필터 체인을 디버깅하다가 ’‘’HttpServletRequestWrapper* 를 만났을 때 — ’‘‘그게 ’‘‘데코레이터’‘’’* 라는 걸 ’‘‘배운 적은 있지만 ’‘‘자기 코드와 어떻게 연결되는지* 까지 가는 데 ’‘‘또 ’‘‘한 학기’‘’‘’‘’‘’‘’’* 가 걸린다. 이 ’‘‘세 패턴은 ’‘‘한 가족’‘’‘’‘’‘’‘’‘’‘’‘’’ — ’‘‘모두 ’‘‘Hollywood Principle (’‘‘Don’t call us, we’ll call you’‘’‘) 의 변주다’‘’‘’‘’‘’‘’‘. 시니어가 주니어에게 ’‘‘한 번에*** 풀어보는 글. -
주니어를 위한 프록시 패턴 안내 — *왜* 정적 프록시가 부족했고 *어떻게* 동적 프록시로 진화했으며 *Spring 이* 그걸 어떻게 활용하는가
“왜
@Transactional이 같은 클래스 안에서 호출하면 *안 먹어요?”* -
Scouter · Pinpoint · New Relic · Datadog — 실시간 *TPS (Transactions Per Second)* 확인 방법과 4 도구 비교 (한국 시장 관점)
“우리 서비스 지금 *몇 TPS?”* 는 백엔드 운영의 가장 기본 질문 이다. TPS (Transactions Per Second) = 초당 처리 요청 수. 이 한 숫자가 시스템의 현재 부하 + 한계 + SLO 기준 을 모두 담는다.
-
*3 형제 *마이크로서비스* — *OMS · WMS · LMS* 를 *헥사고날 + GitOps + Outbox 로 *2 일 만에 *0 → 운영*'까지'
’‘마이크로서비스를 제대로 *해본 적이 *있는가?”“. 모든 *시니어 *백엔드가 *한 번쯤 *받는 *질문이다. 책으로 *읽은 *것과 *블로그에서 *본 *것을 *제외하면, *’‘진짜로 돌리고 *진짜로 *상태 추적하고 *진짜로 *서로 *호출 하는 *3 개 이상의 *서비스를 *처음부터 *끝까지 *내가 *세팅 해 본 *경험”” 이 *흔하지 *않다.
이 글은 2 일 *동안 *0 에서 시작해 *3 개의 *물류 마이크로서비스 — OMS (Order Management System), WMS (Warehouse Management System), LMS (Logistics Management System) — 를 *Spring Boot 3.4 + Java 21 + 헥사고날 *아키텍처로 *각자 *별도 *리포에 *짓고, *각자 *전용 *PostgreSQL 을 *띄우고, *K3s 클러스터에 *GitOps 로 *자동 *배포하고, *3 서비스가 *내부 *DNS 로 *서로 *호출 하는 *e2e 시나리오 까지 *검증한 *전 과정의 *기술 회고다.
-
Datadog vs 무료 Observability Stack — 비용·시간 효율의 *손익분기점* 분석 (Prometheus·Grafana·Loki·Tempo·Alertmanager)
Datadog 한 달 청구서 5,000 만원. 스타트업 CTO 들이 2026 년에도 자주 듣는 충격. 그 5,000 만원의 실제 가치 는 얼마인가? Prometheus + Grafana + Loki + Tempo 무료 stack 으로 같은 가시성 을 얻는 데 진짜 비용 (셋업 시간 + 운영 시간 + 클러스터 자원) 은 얼마인가?
-
MySQL DB 안정성 *7대 기둥* — 백업·HA·성능·스키마·모니터링·변경관리·보안
“우리 DB 는 *안정적 이에요”* 라는 문장은 기준이 모호 하다. 어느 누군가에겐 “99.9% uptime” 이고, 또 다른 사람에겐 “매일 슬로우 쿼리 알람 안 옴”. 진짜 DB 안정성 은 7 가지 차원의 합 인데, 한두 개만 잘하고 다른 데 구멍 이 있으면 그 구멍으로 다 무너진다.