푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 101편 · 1 / 11 페이지)
-
MSA 12 년 — *Netflix·Amazon 의 성공*, *Segment·Prime Video 의 회귀*, 그리고 *2026 년의 답*
2014 년 3 월 25 일, Martin Fowler 와 James Lewis 가 '’Microservices’’ 라는 한 단어를 글의 제목으로 올렸다. 그 뒤 12 년 동안 '’MSA 로 가자’’ 라는 결정은 전 세계 백엔드 진영의 디폴트 가 되었다. 하지만 같은 12 년 동안, '’MSA 로 갔다가 돌아왔다’’ 는 사례들도 놀랄 만큼 많이 쌓였다.
-
홈랩 K3s 5노드의 CPU 가 모자랄 때 — 데이터센터의 Capacity Planning 흉내내기
홈랩 K3s 5노드 클러스터를 프로덕션처럼 굴리다 보면, 어느 날 “왜 자꾸 CPU 가 모자라지?” 가 시작된다. 빌드는 늦어지고, 배치 잡은 밀리고, 가끔 응답이 느려진다. 노드 한 대 더 살까? 어떤 사양으로? 얼마짜리까지 사야 하나?
-
TDD 와 Mockito — Kent Beck 의 *빨강·초록·리팩토링* 부터 Spring 단위 테스트의 현재까지
'’테스트를 먼저 쓴다’’ 는 한 문장은, 2002 년 Kent Beck 이 출판한 Test-Driven Development by Example 의 표지 한 줄로 요약된다. 하지만 그 한 문장이 자바 진영에서 진짜 살아남은 이유는, Mockito 라는 작은 라이브러리가 '’의존성을 어떻게 끊을 것인가’’ 라는 막막한 문제를 대화체 로 풀어냈기 때문이다.
-
Dell R730XD iDRAC 첫 셋업 — 전용 포트·DHCP·600초 잠금·F2 리셋·모뎀 직결의 함정 5종
홈랩 K3s 클러스터 6번째 노드로 중고 Dell PowerEdge R730XD 한 대를 들였다. 489,000원에 20코어 / 40스레드 / 16GB DDR4 / iDRAC 8 Enterprise / X540 quad-port NIC — 가성비는 미친 가격인데, iDRAC 첫 셋업 에서 다섯 군데서 막혔다. 매번 “이게 진짜 안 되는 건가?” 싶었지만, 결국 전부 문서엔 잘 안 나오는 함정 이었다.
-
Grafana 사용법 — *메트릭·트레이스·로그* 를 한 화면에서 가로지르는 방법 (4 datasource 통합 구성 + Explore + Alerting 실전)
Grafana 를 '’대시보드 보는 곳’’ 으로만 쓴다면 절반밖에 못 쓴 거다. 진짜 가치는 Explore 에 있다. 메트릭에서 이상 신호를 보고, 클릭 한 번 으로 그 시점의 트레이스를 보고, 또 한 번 으로 그 트레이스의 로그를 보는 흐름이 5초 안에 끝나야 한다. 이 글은 그 흐름을 어떻게 구성하고 어떻게 활용하는가 를, 실제 K3s 홈랩 + Spring Boot 4 워크로드 위에서 정리한 글이다.
-
ping 안 되면 서버 죽었다? — 새벽 3시 디버그가 가르쳐준 ICMP·TCP 기초
“ping 안 되니까 서버 죽었네요.”
“그런데
curl은 200 응답 오는데요.”“…?”
-
Spring AOP — 무대 감독의 시선으로: 면접에서 점수 따는 답변과, 시니어가 *현장에서 다친 흔적*
연극 무대를 상상해보세요. 배우(핵심 로직)는 연기에만 집중해야 합니다. 만약 배우가 직접 조명을 켜고, 배경 음악을 틀고, 퇴장할 때 막을 내린다면 연극이 엉망이 될 것입니다. AOP 는 무대 감독(Aspect)처럼, 배우가 언제 등장하고 퇴장하는지(Pointcut)를 지켜보다가, 적절한 타이밍에 조명과 음향(Advice)을 틀어주는 역할을 합니다.
-
K3s 3노드 etcd HA 복구 — cluster-reset 후 노드 재가입 4단계 (단순 db 삭제만으론 안 됨)
홈랩 K3s 클러스터 (3 control-plane + 2 worker, embedded etcd HA) 가 새벽 작업 cascade 끝에 죽었다. 두 control-plane 이
"bootstrap data already found and encrypted with different token"에러로 부팅 실패 루프. 살아남은 1 노드의 API 도 etcd quorum 없어서 timeout. -
K3s logs-es-cold 가 4 시간 Pending 이던 이유 — nodeSelector 만 있고 toleration 이 빠진 함정
K3s 홈랩의 logs-es-cold-0 (Elasticsearch cold tier) 가 4 시간 32 분 Pending 으로 떠있었다. PVC 도 bound 되어 있고, target node (solomon) 는 Ready 였다. 그런데도 scheduler 가 거부.
-
K3s + ufw — Ubuntu 노드 재부팅 후 cluster overlay 가 죽는 함정
새벽 3시. K3s 홈랩에서 8개 *-prod 앱 pod 가 일제히 CrashLoopBackOff. 모두
SocketTimeoutException— DB 연결 timeout. 모든 postgres 가 ilwon 노드에 있고, app 들은 louise 에 있다. louise → ilwon 의 pod-to-pod overlay 가 죽었다는 뜻.