푸른영혼의 별 | Tech Blog

Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.

주요 프로젝트: Settlement MSA · ASAT · GitHub


Posts (총 280편 · 1 / 28 페이지)

  • *데이터베이스 관리 시스템* 의 *3 층 구조* — *클라이언트 / 인스턴스 / 데이터베이스* 가 *왜 *그렇게 분리* 되는가

    데이터베이스 관리 시스템 구조 — 클라이언트 / 인스턴스 (메모리 + 프로세스 + CPU) / 데이터베이스 (데이터·임시·시스템·로그 파일) 의 3 영역 도식

  • *알고리즘 을 *표현 하는 *기법* — *순서도 (Flowchart)* 가 *처음 이고 *마지막 이 *아닌 *이유*, 그리고 *거스름돈 (그리디)* 이 *왜 *순서도 예제 의 *고전* 인가

    알고리즘 거스름돈 그리디 순서도 + 순서도 기호 10개 범례 위쪽 — *거스름돈 860 원 (500/100/50/10) 의 *그리디 알고리즘순서도 로 표현. 아래쪽 — 순서도 의 *10 개 *표준 기호 (터미널 / 판단 / 처리 / 입출력 / 흐름선 / 연결점 / 준비 / 서류 / 수동입력 / 천공카드). 이 한 장 이 알고리즘 학습 의 *첫 페이지왜 *놓이는지, 그리고 왜 *현대 *코드 베이스 에서는 *덜 보이는지함께 *분해 한다.*

  • K3s vs K8s — 현실적인 비교, 6노드 14개월 운영 경험

    K3s 클러스터 운영 14개월 째 다. 6 노드, 65+ ArgoCD apps, 33 도메인. 그 사이 cluster-dns outage 복구 (6시간), etcd orphan member 제거, Velero OOM fix, frp self-host 구축, SOPS+age 도입 등 작은 사고들 의 *반복. 그 운영 의 14개월 위에서 자주 받는 질문 — “K3s 와 K8s 차이가 뭐냐” + 그 자매 질문 — “그럼 K8s 로 옮겨야 하나?”.

  • 서버 구조 설계 패턴 — 모놀리스 부터 헥사고날, CQRS, Saga, Service Mesh 까지

    서버 코드 를 짜는 사람 이라면 한 번 쯤 마주치 는 질문 들이 있다. “왜 Service 클래스 가 1000 줄 이 되면 안 되나?”, “Repository 는 왜 인터페이스 로 두나?”, “왜 도메인 객체 가 JPA Entity 와 분리 되어야 하나?”, “외부 결제 API 호출 을 어디 에 두나?” — 이 모든 질문 의 밑 에 구조 설계 패턴 이 있다.

  • *서버 의 *기본기* — *한 개의 요청* 이 *내 손가락 부터 *DB 와 *돌아오기까지* — *내 새벽 운영 사고 의 *교재 적 정리*

    오늘 새벽 02:00 ~ 03:00. 내 홈랩 클러스터 에서 연달아 사고 :

    1. KubeNodeNotReadylouise 노드 24 시간 다운
    2. KubeContainerWaitingjabis / logistic 의 GHCR 401
    3. KubeAPIErrorBudgetBurn컨트롤 플레인 503
    4. xr.lemuel.co.kr502 Bad Gateway
    5. oms.lemuel.co.krHikari Connection is not available

    이 5 가지 가 *우연히 같은 새벽 에 모인 것이 아니다. *서로 *서버 의 다른 layer 의 같은 기본기건드린 것. DNS · TLS · Ingress · Pod · Connection Pool · Storage · 노드어느 한 곳 이 무너지면 *상위 가 다 따라간다.

  • *네트워크 기초* — *OSI 7 계층* / *IP* / *TCP vs UDP* / *DNS* / *HTTP* 까지, *입문* 부터 *실전 도구* 까지

    “브라우저 주소창 에 google.com 입력 하고 엔터 치면 *무슨 일 이 일어 나는가?”* — 주니어 면접 의 *고전 질문. 시니어 가 보기엔 *그 한 줄수십 개 의 *네트워크 의 *층함께 도는 것 이 보인다.

    DNS lookup 으로 *도메인 → IP 변환, TCP 3-way handshake 로 *연결 수립, TLS handshake 로 *암호화, HTTP 요청 송신, Cloudflare edge 가 *처리, origin 서버 로 *forward, response 가 *역경로 로 돌아옴. 각 단계 가 *서로 다른 *OSI 계층 에서 각자 책임수행.

    이 글은 기본기 시리즈 의 *네트워크 입문 편OSI 7 계층 의 *각자 의무, IP / MAC / ARP / NAT 의 *물리적 의미, TCP vs UDP 의 *철학, DNS 의 *분산 lookup, HTTP / HTTPS 의 *진실, ping / traceroute / dig 의 *진짜 동작 — 까지 입문자 부터 *백엔드 엔지니어 까지 공통 으로 *알아야 하는 깊이 로 정리한다.

  • *네트워크 의 *본질* — *TCP 상태 기계*, *BBR vs CUBIC*, *QUIC*, *mTLS handshake*

    “왜 *이 API 요청200 ms 걸리지?”백엔드 의 *흔한 질문. 답 의 대부분 의 비용애플리케이션 코드 가 아니라 *TCP 의 *3-way handshake, TLS 의 *4 round-trip, Slow Start 의 *cwnd 성장, Nagle 의 *지연 같은 네트워크 의 *물리적 본질.

    Service Mesh 의 *mTLS, gRPC 의 *HTTP/2 multiplexing, Cloudflare 의 *BBR, HTTP/3 의 *QUIC모두 *지난 10 년 의 *네트워크 진화. 그 진화 의 TCP 가 *여전히 도는 것 도 사실, 그 위 에서 *새 layer 가 *재발명 되는 것 도 사실.

    이 글은 기본기 시리즈 의 *네트워크 편TCP 의 상태 기계 와 함정, Congestion Control (CUBIC vs BBR), QUIC / HTTP/3, TLS / mTLS handshake, Service Mesh 의 implementation — 을 백엔드 엔지니어 가 알아야 할 깊이 로 정리한다.

  • *Linux Kernel 의 *본질* — *Process*, *Scheduler*, *Namespaces*, *Cgroups*, *BPF*

    “컨테이너 는 *가상 머신 의 *경량 버전 이 *아니다” — Docker / K8s 시대 의 가장 흔한 오해. 컨테이너 는 *Linux 의 *기본 기능Namespaces + Cgroups조합 이다. 별도 OS 없음, hypervisor 없음, 격리 도 *kernel level.

    그런데 그 *Namespaces 는 *어떻게 격리 하고, Cgroups 는 *어떻게 자원 제한 하고, Scheduler 는 *수천 process 사이 *CPU 시간 을 어떻게 분배 할까? 그 모든 것 의 *밑Linux Kernel 의 *내부작동 한다.

    이 글은 기본기 시리즈 의 *Linux 편Process / Thread 의 진실, CFS → EEVDF Scheduler, Namespaces 7 종, Cgroups v1 / v2, eBPF 의 *현대 적 위력 — 을 infrastructure 엔지니어 의 *깊이 로 정리한다.