푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 642편 · 1 / 65 페이지)
-
리포에 있는 정본이 운영에서는 죽은 파일이었다 — subPath 그림자와 CI 사각지대
관리자 화면 하나가 안 열린다는 제보를 받았다. 주소창에 직접 넣거나 새로고침하면 401 이 떨어지는데, 앱 안에서 메뉴를 눌러 들어가면 멀쩡히 열린다. 프론트 코드에도, 백엔드 권한 설정에도 손댄 사람이 없었다.
-
비밀번호 금고를 직접 띄웠는데 두 달을 안 썼다 — Vaultwarden 사용법, 그리고 안 쓸 때의 사용법
6월에 자체 호스팅 비밀번호 관리자를 하나 띄웠다. 오늘 안을 들여다봤더니 데이터 디렉터리가 300KB 였고, SQLite 파일의 마지막 수정 시각이 띄운 날 그대로였다. 두 달 동안 비밀번호가 하나도 들어가지도 나가지도 않았다는 뜻이다.
-
자바 동시성 조언에는 유통기한이 있다 — 내가 이 블로그에 쓴 것부터 틀렸다
동시성 글은 오래 못 간다. 알고리즘 글은 10년 가도 맞는데, 동시성 조언은 JDK 한 번 올라가면 반이 죽는다. 조언이 런타임 구현에 붙어 있기 때문이다. 구현이 바뀌면 조언이 같이 바뀐다.
-
무선인증 서버는 무엇을 하는 프로그램인가 — 802.1X·EAP·RADIUS 와 그 옆의 자바 스택
채용 공고에 이런 줄이 붙어 있었다.
-
클린 아키텍처는 묶음 상품이다 — 한 코드베이스에서 얻는 것과 치르는 값을 따로 매겨봤다
아키텍처 정리를 단계로 쪼개 놓고 Phase 1까지 끝낸 뒤, 다음 질문을 받았다.
-
도메인 하나 옮기다 만난 301·302 와 CORS — curl 은 200 인데 브라우저는 403 이었다
오늘 서비스 하나의 공개 도메인을
eln.lemuel.co.kr에서asat.lemuel.co.kr로 옮겼다. 옮기는 것 자체는 십 분이면 끝나는 일이었고, 실제로도 그랬다. 문제는 그 다음에 두 번 걸려 넘어졌다는 것이다. -
500 은 목격자가 있고 404 는 없다 — 바이브 코딩 에러를 Playwright 로 볼 것인가, 직접 볼 것인가
에이전트에게 시켜서 만든 화면이 500 을 뱉는다. 혹은 404 를 뱉는다. 여기서 손이 갈라진다. 하나는 Playwright 테스트를 하나 짜서 재현시키는 것, 다른 하나는 브라우저를 열고 직접 보는 것. 어느 쪽이 나은가 — 이게 오늘 받은 질문이다.
-
0개 실행도 0 실패다 — 바이브 코딩 MVP 와 하네스의 완료기준
“다 됐어요” 는 두 사람 입에서 나올 때 같은 뜻이 아니다.
-
Netty 는 NIO 를 예쁘게 감싼 게 아니다 — 나타나기 전과 후
Netty 를 “NIO 를 쓰기 편하게 감싼 라이브러리” 라고 설명하는 글이 많다. 틀린 말은 아닌데, 그 설명으로는 왜 하필 Netty 여야 했는지가 안 나온다. 편의성이 이유였다면 대체재가 수십 개 나왔어야 하는데 그러지 않았다.
-
Chain of Responsibility — 무엇을 없앴고, 무엇을 옮겼나
디자인 패턴 글은 대개 “이렇게 쓰면 됩니다” 로 시작한다. 그러면 왜 이게 생겼는지가 빠진다. 패턴은 하늘에서 떨어진 게 아니라 누군가 같은 고통을 반복해서 겪다가 이름을 붙인 것이다.