기술 블로그
실무에서 직접 설계·운영한 백엔드 시스템과 의사결정 기록. Go·Java/Spring·PostgreSQL·Kubernetes 기반의 분산 시스템 패턴, 음성 AI 파이프라인(WebRTC·STT·LLM·TTS)의 latency·동시성 트레이드오프, OCR/문서 탐지 모델의 평가 지표(F1·Precision·Recall) 적용기 등을 다룹니다. 모든 글은 본인이 직접 운영하며 측정한 1차 데이터에서 출발합니다.
-
[로컬 서버 운영기] 이관 뒤가 진짜다 — 백업 cron이 조용히 깨진 이야기
인프라를 옮기면 서비스만 이사하는 게 아닙니다. 거기 매달린 백업·모니터링 같은 운영 작업도 함께 깨집니다 — 그것도 조용히. Postgres가 Docker 컨테이너에서 K3s Pod로 바뀌자 docker exec로…
-
[로컬 서버 운영기] Docker Compose에서 K3s로 — 집 서버 쿠버네티스 이주기
잘 도는 Docker Compose 스택을 굳이 K3s로 옮길 이유가 있을까요. 단일 노드라도 선언형 배포와 셀프힐링은 매력적입니다. 서비스 이름을 그대로 유지해 이관 표면적을 줄인 방법과, 집…
-
[로컬 서버 운영기] 한 번 로그인으로 다 쓰기 — 커스텀 JWT에서 Keycloak으로, 무중단으로
여러 서비스가 같은 비밀키로 서명한 HS256 JWT를 공유하면 SSO 흉내는 납니다. 하지만 중앙 관리·키 회전·표준 로그인 화면이 없습니다. 잘 도는 인증을 멈추지 않고 Keycloak(OIDC)으로 옮긴…
-
[로컬 서버 운영기] 집 PC를 공개 서버로 — 포트 하나 열지 않고 도메인 붙이기
집에 있는 PC 한 대로 실서비스를 공개하려면 보통 공유기 포트포워딩과 고정 IP를 떠올립니다. 하지만 아웃바운드 터널(Cloudflare Tunnel)을 쓰면 인바운드 포트를 하나도 열지 않고 도메인을 붙일…
-
[아키텍처 최종장] MVC·MVP·MVVM에서 Clean·Hexagonal, 그리고 MSA까지 — 결국 ‘무엇을 어디에 둘까’의 문제
MVC·MVP·MVVM은 C·P·VM만 다르다. Repository와 Active Record는 쿼리 실행 레이어의 위치가 다르다. Clean·Hexagonal은 층위가 다르고, EDA·MSA는 그 경계를 서비스로 쪼갠 것 — 아키텍처 시리즈를 한 장으로…
-
“뭔가 이상한데”가 신호일 때 — 기대와 실제의 간극을 무시하지 않는 개발 습관
어떤 분야를 오래 한 사람일수록 ‘뭔가 이상한데’라는 말을 자주 합니다. 그 감각의 정체를 ‘시도·기대·실제’라는 회고 프레임으로 풀어보고, 기대와 실제의 간극을 ‘되겠거니’ 하고 넘겼다가 사고로 이어진…
-
MSA 분산 트랜잭션 한 페이지 — 흐름을 누가 지휘하고, 실패는 어떻게 수습하나
주문 하나가 여러 서비스를 거치는 동안 어느 한 곳이 실패하면, 이미 끝난 앞 단계들은 어떻게 되나. 이 질문에 답하려면 먼저 누가 그 순서를 쥐고 있는지부터…
-
개인 아키텍처 시스템 — 하나의 템플릿 규칙으로 언어·인프라·MSA 전환까지 굴리기
새 프로젝트마다 반복하던 환경 세팅 삽질을 스킬로 굳힌 개인 아키텍처 시스템. 같은 14 섹션 틀, 언어가 달라도 흔들리지 않는 포트 기반 baseline, 10개 concern을 위상정렬로…