<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>b.log()</title>
    <link>https://www.donghanlab.com</link>
    <description>b.log() 기술 블로그</description>
    <language>ko</language>
    <lastBuildDate>Tue, 06 Oct 2026 16:54:31 GMT</lastBuildDate>
    <atom:link href="https://www.donghanlab.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 8편 — Nginx vs Caddy: 장단점 비교와 선택 가이드</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-08-nginx-vs-caddy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-08-nginx-vs-caddy</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>시리즈를 마무리하며 Nginx와 Caddy를 설계 철학, HTTPS, 설정, 기능, 성능, 보안, 확장성, 생태계, 운영 관점에서 비교하고 상황별 선택 기준을 제시합니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 7편 — 실전: 같은 아키텍처를 Nginx와 Caddy로 각각 구성하기</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-07-hands-on-same-architecture</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-07-hands-on-same-architecture</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Next.js 프런트엔드, API 서버 2대, WebSocket, 관리자 페이지로 이루어진 서비스를 Docker Compose 위에서 Nginx와 Caddy로 각각 구성하고, 설정과 운영 관점에서 나란히 비교합니다. Nginx→Caddy 지시어 대응표도 함께 제공합니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 6편 — Caddy 심화: 매처, 지시어 순서, 헬스 체크, Admin API, 플러그인</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-06-caddy-advanced</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-06-caddy-advanced</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>이름 있는 매처와 지시어 실행 순서, handle/route/handle_path, 스니펫, 로드 밸런싱과 액티브 헬스 체크, DNS 챌린지와 On-Demand TLS, JSON 설정과 Admin API, xcaddy 플러그인 빌드, 메트릭과 튜닝을 다룹니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 5편 — Caddy 기초: Caddyfile과 자동 HTTPS</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-05-caddy-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-05-caddy-basics</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Caddy의 설계 철학과 구조, 설치와 CLI, Caddyfile 문법, 자동 HTTPS의 동작 원리, 정적 파일 서빙과 리버스 프록시 기본을 다룹니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 4편 — Nginx 심화: 캐싱, Rate Limit, 보안, 성능 튜닝, L4 프록시</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-04-nginx-advanced</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-04-nginx-advanced</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>proxy_cache, limit_req/limit_conn, add_header 상속 함정과 보안 헤더, 워커·커널 튜닝, 구조화 로그, stream 모듈을 이용한 TCP 프록시와 트러블슈팅을 다룹니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 3편 — Nginx 중급: location 매칭, 리버스 프록시, 로드 밸런싱, HTTPS</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-03-nginx-intermediate</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-03-nginx-intermediate</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>server/location 선택 알고리즘, proxy_pass 슬래시 규칙, 프록시 헤더와 WebSocket, upstream 로드 밸런싱, certbot과 공식 ACME 모듈을 이용한 HTTPS 설정까지 다룹니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 2편 — Nginx 기초: 아키텍처와 설정 파일 읽는 법</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-02-nginx-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-02-nginx-basics</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Nginx 설치, 마스터/워커 이벤트 기반 아키텍처, nginx.conf의 문법과 컨텍스트 구조, 정적 파일 서빙과 필수 명령어를 다룹니다.</description>
    </item>
    <item>
      <title>Nginx &amp; Caddy 완전 정복 1편 — 웹 서버와 리버스 프록시, 무엇을 하는 물건인가</title>
      <link>https://www.donghanlab.com/posts/nginx-caddy-01-web-server-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/nginx-caddy-01-web-server-basics</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Nginx와 Caddy를 배우기 전에 알아야 할 웹 서버, 리버스 프록시, TLS, 로드 밸런싱의 기본 개념을 정리합니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 16편 — 생태계와 대안, 그리고 시리즈 정리와 실습 과제</title>
      <link>https://www.donghanlab.com/posts/websocket-16-ecosystem-alternatives-and-wrap-up</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-16-ecosystem-alternatives-and-wrap-up</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Socket.IO가 WebSocket이 아닌 이유부터 STOMP·GraphQL Subscriptions·SSE·HTTP/2 위 WebSocket·WebTransport·WebRTC까지 생태계와 대안을 정리하고, DevTools·wscat·k6 같은 도구, 시리즈 핵심 요약 일곱 가지와 난이도별 실습 과제 다섯 가지, 참고 문서를 담았습니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 15편 — 보안 체크리스트</title>
      <link>https://www.donghanlab.com/posts/websocket-15-security-checklist</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-15-security-checklist</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>전송·핸드셰이크·메시지·연결 수명·운영 다섯 묶음으로 나눈 WebSocket 보안 점검 목록입니다. wss 강제, Origin 허용 목록, maxPayload 축소, 입력 스키마 검증, 메시지별 인가, rate limit, 미인증 연결 타임아웃, 로그 마스킹, 1006 비율 모니터링까지 담았습니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 14편 — 인프라: Nginx, 로드밸런서, 그리고 OS 한계</title>
      <link>https://www.donghanlab.com/posts/websocket-14-infrastructure-proxy-lb-os</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-14-infrastructure-proxy-lb-os</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Upgrade와 Connection이 hop-by-hop 헤더라 기본 전달되지 않는다는 사실에서 출발해 Nginx 설정을 줄 단위로 읽고, L7과 L4 로드밸런서의 차이, 파일 디스크립터와 에페메랄 포트라는 OS 한계, 메모리 산정과 Node.js 단일 이벤트 루프의 특성을 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 13편 — 백프레셔와 흐름 제어: bufferedAmount와 slow consumer</title>
      <link>https://www.donghanlab.com/posts/websocket-13-backpressure-and-flow-control</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-13-backpressure-and-flow-control</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>느린 클라이언트 몇 개가 서버 메모리를 고갈시키는 slow consumer 문제를 bufferedAmount 임계값으로 방어하는 코드와, 메시지를 버릴지 최신값으로 덮어쓸지 연결을 끊을지 데이터 성격에 따라 정하는 정책, 그리고 반대 방향의 rate limit을 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 12편 — 수평 확장: Pub/Sub 백플레인과 무중단 배포</title>
      <link>https://www.donghanlab.com/posts/websocket-12-horizontal-scaling</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-12-horizontal-scaling</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>연결 자체가 상태이기 때문에 서버를 늘리는 것만으로는 끝나지 않는 이유와 Redis Pub/Sub 백플레인 구현을 코드로 살펴보고, Redis·NATS·Kafka 선택지, 스티키 세션이 보통 불필요한 이유, 연결 불균형과 무중단 배포, 프레즌스 관리까지 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 11편 — 서브프로토콜과 확장: 버전 협상과 permessage-deflate</title>
      <link>https://www.donghanlab.com/posts/websocket-11-subprotocols-and-extensions</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-11-subprotocols-and-extensions</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Sec-WebSocket-Protocol로 애플리케이션 프로토콜과 버전을 핸드셰이크 단계에서 협상하는 법과 협상이 어긋났을 때의 동작, 그리고 permessage-deflate 압축 확장이 주는 이득과 연결당 컨텍스트 메모리·CPU·CRIME류 위험이라는 대가를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 10편 — 인증과 인가: 티켓 방식과 CSWSH 방어</title>
      <link>https://www.donghanlab.com/posts/websocket-10-authentication-and-authorization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-10-authentication-and-authorization</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>쿠키·쿼리스트링 토큰·티켓·첫 메시지 네 가지 인증 방식을 주의사항과 함께 비교하고, Upgrade 단계에서 Origin을 검사하고 일회용 티켓을 소모하는 서버 코드, CORS가 적용되지 않아 생기는 CSWSH 공격의 원리, 그리고 연결 이후의 인가와 토큰 재검증을 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 9편 — 재연결 전략: 지수 백오프와 지터, seq 기반 상태 복구</title>
      <link>https://www.donghanlab.com/posts/websocket-09-reconnection-strategy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-09-reconnection-strategy</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>연결은 반드시 끊긴다는 전제에서 출발해 thundering herd를 막는 지수 백오프와 full jitter, 재연결하면 안 되는 상황을 코드로 구분하는 법, 그리고 스냅샷·seq 재전송·하이브리드 세 가지 상태 복구 방식과 그에 필요한 저장소를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 8편 — 메시지 설계: 봉투 형식, correlation id, 그리고 seq</title>
      <link>https://www.donghanlab.com/posts/websocket-08-message-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-08-message-design</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>WebSocket이 메시지의 의미를 정해 주지 않으므로 직접 설계해야 하는 애플리케이션 프로토콜을 다룹니다. 타입 유니온으로 표현한 봉투 형식, 요청-응답을 잇는 correlation id, 재연결 복구의 토대가 되는 seq, 버전 관리 원칙과 RPC 클라이언트 구현을 담았습니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 7편 — 제어 프레임: Ping/Pong 하트비트와 Close 코드</title>
      <link>https://www.donghanlab.com/posts/websocket-07-control-frames-ping-pong-close</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-07-control-frames-ping-pong-close</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>half-open 연결과 유휴 타임아웃 때문에 하트비트가 필요한 이유, ws로 구현하는 서버 주도 Ping/Pong과 주기를 정하는 기준, 그리고 1000부터 4999까지 Close 코드 표와 실무에서 가장 흔한 1006의 원인을 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 6편 — 프레임 구조: FIN, opcode, Payload len, 그리고 마스킹</title>
      <link>https://www.donghanlab.com/posts/websocket-06-frame-structure</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-06-frame-structure</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>WebSocket 프레임의 비트 레이아웃을 도식으로 읽고 FIN·RSV·opcode·Payload len·Masking-key를 필드별로 해설한 뒤, 클라이언트에서 서버로 가는 프레임만 마스킹하는 이유가 프록시 캐시 오염 방지라는 점과 학습용 파서 코드를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 5편 — ws로 만드는 첫 번째 서버와 브로드캐스트</title>
      <link>https://www.donghanlab.com/posts/websocket-05-first-server</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-05-first-server</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Node.js의 ws 라이브러리로 연결을 받고 모든 클라이언트에 브로드캐스트하는 30줄짜리 서버를 만들고, wscat으로 터미널 두 개를 열어 확인하는 법, 그리고 maxPayload 기본값 100MiB를 처음부터 줄여 둬야 하는 이유를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 4편 — 브라우저 API: readyState, bufferedAmount, onclose가 알려주는 것</title>
      <link>https://www.donghanlab.com/posts/websocket-04-browser-api</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-04-browser-api</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>브라우저 WebSocket 객체의 생성·전송·종료를 예제로 훑고, readyState 네 상태와 bufferedAmount·protocol 속성의 쓰임, 그리고 임의 헤더를 붙일 수 없다는 제약과 onerror 대신 onclose의 코드로 판단해야 하는 이유를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 3편 — 핸드셰이크: Upgrade 요청과 101, Sec-WebSocket-Accept의 정체</title>
      <link>https://www.donghanlab.com/posts/websocket-03-handshake</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-03-handshake</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>클라이언트의 Upgrade 요청 헤더와 서버의 101 Switching Protocols 응답을 줄 단위로 읽고, Sec-WebSocket-Accept가 고정 GUID와 SHA-1으로 계산되는 과정을 코드로 확인한 뒤, 이 절차가 보안 장치가 아니라는 사실과 101 이후 이 연결이 더는 HTTP가 아니라는 사실을 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 2편 — 프로토콜 개요: RFC 6455, ws와 wss, 연결의 생애주기</title>
      <link>https://www.donghanlab.com/posts/websocket-02-protocol-overview</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-02-protocol-overview</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>WebSocket이 RFC 6455로 표준화되기까지의 경로와 Sec-WebSocket-Version 13에 남은 흔적, ws와 wss의 기본 포트·URI 규칙, 평문 Upgrade가 중간 장비에서 망가지는 이유, 그리고 핸드셰이크에서 Close까지 연결의 생애주기를 다룹니다.</description>
    </item>
    <item>
      <title>WebSocket 완전 정복 1편 — HTTP로는 왜 안 되는가, Polling과 SSE를 지나 WebSocket까지</title>
      <link>https://www.donghanlab.com/posts/websocket-01-why-websocket</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/websocket-01-why-websocket</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>HTTP가 서버에서 먼저 말을 걸 수 없다는 제약에서 출발해 Short Polling·Long Polling·SSE·WebSocket 네 가지 선택지를 장단점으로 비교하고, 전이중·연결 유지·메시지 단위라는 WebSocket의 핵심 세 가지와 SSE로 충분한 경우의 선택 기준을 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 11편 — 치트시트와 학습 로드맵</title>
      <link>https://www.donghanlab.com/posts/github-11-cheatsheet-and-roadmap</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-11-cheatsheet-and-roadmap</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>하루 단위 워크플로 요약, 조회·변경·되돌리기·원격으로 나눈 명령어 요약표, 안전 원칙 5가지, 추천 글로벌 설정과 alias, 4주 학습 로드맵과 참고 자료를 한 편에 모았습니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 10편 — 실전 사고 복구 시나리오 12가지</title>
      <link>https://www.donghanlab.com/posts/github-10-incident-recovery-scenarios</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-10-incident-recovery-scenarios</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>main에 직접 커밋·push, reset --hard로 날린 커밋, 잘못된 브랜치 작업, 동료의 force push, .env 커밋, 감당 안 되는 충돌, detached HEAD, push 거부, 잘못된 작성자, 대용량 파일까지 실제로 터지는 12가지 상황의 복구 절차를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 9편 — Pages·Releases·보안 기능·gh CLI와 오픈소스 기여</title>
      <link>https://www.donghanlab.com/posts/github-09-pages-releases-and-security</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-09-pages-releases-and-security</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>GitHub Pages 배포 워크플로, 태그와 Semantic Versioning·릴리스 자동화, Dependabot·CodeQL·Secret scanning·Push protection, gh CLI 주요 명령, fork에서 PR까지의 오픈소스 기여 흐름과 저장소 문서·라이선스 선택을 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 8편 — GitHub Actions와 브랜치 보호 규칙</title>
      <link>https://www.donghanlab.com/posts/github-08-actions-and-branch-protection</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-08-actions-and-branch-protection</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>워크플로·잡·스텝의 기본 구조와 매트릭스 빌드·시크릿·잡 의존성, Next.js 배포 워크플로 예시와 액션 보안 주의사항, 그리고 Rulesets·필수 리뷰·필수 상태 체크·force push 차단·CODEOWNERS로 위험한 명령을 조직 차원에서 막는 방법을 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 7편 — rebase -i, cherry-pick, bisect와 히스토리를 다루는 도구들</title>
      <link>https://www.donghanlab.com/posts/github-07-rebase-cherry-pick-and-bisect</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-07-rebase-cherry-pick-and-bisect</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>interactive rebase로 커밋을 정리하고 cherry-pick으로 골라 가져오고 bisect로 버그 커밋을 이진 탐색하는 법, worktree·submodule·subtree·얕은 클론·LFS 같은 저장소 운영 도구, 그리고 히스토리에서 민감 정보를 제거하는 절차와 Git Hooks를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 6편 — reset·revert·reflog로 되돌리는 안전한 복구의 기술</title>
      <link>https://www.donghanlab.com/posts/github-06-reset-revert-and-reflog</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-06-reset-revert-and-reflog</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>HEAD 참조 표기법과 상황별 되돌리기 맵, reset 세 모드가 무엇을 지우는지, push한 커밋에는 왜 revert가 유일한 정답인지, reflog로 날린 커밋을 되살리는 법과 그 한계, stash·clean·restore의 위험도를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 5편 — Pull Request, 머지 전략, force push, 브랜치 전략</title>
      <link>https://www.donghanlab.com/posts/github-05-pull-request-and-branch-strategy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-05-pull-request-and-branch-strategy</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>PR 표준 흐름과 좋은 PR의 조건·리뷰 문화, merge/squash/rebase 세 머지 버튼의 결과 차이, --force와 --force-with-lease의 차이, GitHub Flow·Git Flow·Trunk-Based 선택 기준, 그리고 Issues와 프로젝트 관리를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 4편 — 브랜치의 실체와 merge·rebase·충돌 해결</title>
      <link>https://www.donghanlab.com/posts/github-04-branch-merge-and-rebase</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-04-branch-merge-and-rebase</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>브랜치가 커밋 하나를 가리키는 파일일 뿐이라는 사실에서 출발해 -d와 -D의 안전 설계, fast-forward·3-way·squash 세 가지 병합, rebase가 히스토리를 다시 쓰는 원리와 황금률, 충돌 마커 해결과 rerere까지 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 3편 — 원격 저장소 인증(SSH·PAT)과 push·fetch·pull의 차이</title>
      <link>https://www.donghanlab.com/posts/github-03-remote-auth-and-push-pull</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-03-remote-auth-and-push-pull</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>HTTPS+PAT와 SSH 키 두 인증 방식, 계정별 ~/.ssh/config 분리, SSH 커밋 서명, remote 연결 관리, 그리고 pull을 바로 쓰지 말고 fetch → 검토 → merge로 가야 하는 이유와 명령별 위험도 분류표를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 2편 — 커밋 만들기, 좋은 커밋 메시지, 히스토리 조회와 .gitignore</title>
      <link>https://www.donghanlab.com/posts/github-02-commit-log-and-gitignore</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-02-commit-log-and-gitignore</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>git add -p로 커밋을 의미 단위로 쪼개는 법, Conventional Commits 형식과 작성 규칙, log·show·blame으로 히스토리를 캐는 법, 그리고 .gitignore가 이미 추적 중인 파일에는 듣지 않는 이유와 대처를 다룹니다.</description>
    </item>
    <item>
      <title>GitHub 완전 정복 1편 — Git과 GitHub의 차이, 3가지 영역, 설치와 상태 확인</title>
      <link>https://www.donghanlab.com/posts/github-01-git-vs-github-and-three-areas</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/github-01-git-vs-github-and-three-areas</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <category>git</category>
      <description>Git(프로그램)과 GitHub(호스팅 서비스)의 차이, clone이 히스토리 전체를 복사하는 분산 구조, 작업 디렉토리·스테이징·로컬·원격 4단계 모델, 그리고 설치와 최초 설정·저장소 생성·status와 diff로 상태를 읽는 법까지 다룹니다.</description>
    </item>
    <item>
      <title>Cron 완전 정복 4편 — systemd timer, Kubernetes CronJob, 분산 환경</title>
      <link>https://www.donghanlab.com/posts/cron-04-systemd-k8s-distributed</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cron-04-systemd-k8s-distributed</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>systemd timer 유닛 구성과 OnCalendar 문법, 컨테이너에서 cron이 깨지는 이유와 Kubernetes CronJob 필드, 수평 확장 시 중복 실행을 막는 분산 락, cron 보안과 운영 체크리스트.</description>
    </item>
    <item>
      <title>Cron 완전 정복 3편 — 신뢰성 패턴과 안티패턴</title>
      <link>https://www.donghanlab.com/posts/cron-03-reliability-and-antipatterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cron-03-reliability-and-antipatterns</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>flock 중복 실행 방지, 타임아웃, 멱등성, 원자적 결과 생성, 엄격한 스크립트, 실행 모니터링, 지터, 로그 관리까지 여덟 가지 패턴과 완성형 래퍼 템플릿, 그리고 안티패턴 13가지.</description>
    </item>
    <item>
      <title>Cron 완전 정복 2편 — 실행 환경의 함정과 시간대·서머타임</title>
      <link>https://www.donghanlab.com/posts/cron-02-execution-environment</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cron-02-execution-environment</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>PATH와 셸이 최소한인 cron 환경, 퍼센트 문자의 함정, 출력과 로그 수집, cron 환경 재현법. 그리고 UTC 서버에서 KST 스케줄이 9시간 어긋나는 사고와 서머타임.</description>
    </item>
    <item>
      <title>Cron 완전 정복 1편 — 동작 원리와 스케줄 표현식, crontab 관리</title>
      <link>https://www.donghanlab.com/posts/cron-01-how-cron-works</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cron-01-how-cron-works</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>cron 데몬이 매 분 무엇을 하는지, 5개 필드 표현식과 매크로, 일·요일이 OR로 결합되는 함정, crontab이 저장되는 위치와 run-parts·anacron·접근 제어까지.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 25강 — 종합 실습</title>
      <link>https://www.donghanlab.com/posts/db-design-25-capstone</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-25-capstone</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>마켓플레이스 출고 관리 시스템 하나를 요구사항 분석부터 개념·논리·물리 설계, 보안, 분석 모델, 진화 시나리오, 리뷰까지 관통한다. 25강 전체 요약과 설계자가 기억할 원칙, 참고 자료로 시리즈를 마친다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 24강 — 설계 리뷰 방법론</title>
      <link>https://www.donghanlab.com/posts/db-design-24-design-review</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-24-design-review</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>설계 리뷰의 입력물과 체크리스트, 안티패턴 역추적, 발견 사항의 심각도 분류, ADR로 남기는 결정, 그리고 카탈로그 쿼리와 린터로 자동화할 수 있는 항목을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 23강 — 도메인 경계와 DB 분리</title>
      <link>https://www.donghanlab.com/posts/db-design-23-domain-boundaries</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-23-domain-boundaries</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>바운디드 컨텍스트로 소유권을 나누고 스키마·권한·공개 뷰에서 물리 분리까지 단계적으로 강화하는 방법, DB를 나눌 때 잃는 조인·FK·트랜잭션과 아웃박스·CDC·사가라는 대안, 공유 DB 안티패턴을 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 22강 — 스키마 진화</title>
      <link>https://www.donghanlab.com/posts/db-design-22-schema-evolution</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-22-schema-evolution</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>롤링 배포에서 구·신 앱이 같은 스키마를 동시에 쓴다는 전제로 변경의 위험도를 분류하고, Expand–Contract 분해, 대용량 Backfill, DBMS별 온라인 DDL의 락 위험을 정리한다. 시리즈 Part 5 &quot;시니어 레벨&quot;의 첫 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 21강 — 멀티테넌시 설계</title>
      <link>https://www.donghanlab.com/posts/db-design-21-multitenancy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-21-multitenancy</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>공유 테이블·스키마 분리·DB 분리를 확장성, 격리, 운영 비용으로 비교하고 tenant_id를 PK·UNIQUE·FK에 모두 포함하는 이유를 설명한다. RLS로 격리를 DB에서 강제할 때 커넥션 풀에서 생기는 함정도 다룬다. 시리즈 Part 4 &quot;심화 모델링&quot;의 마지막 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 20강 — 차원 모델링</title>
      <link>https://www.donghanlab.com/posts/db-design-20-dimensional-modeling</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-20-dimensional-modeling</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>OLTP 모델과 분석 모델의 차이, Kimball 4단계와 스타 스키마, 팩트 테이블 세 유형, 준가산 측정값과 비율을 분자·분모로 저장하는 이유, 적합 차원과 버스 매트릭스를 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 19강 — 유연한 구조: 다형 관계, EAV, JSON</title>
      <link>https://www.donghanlab.com/posts/db-design-19-flexible-structures</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-19-flexible-structures</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>다형 관계에서 FK를 되찾는 세 가지 방법, EAV를 써도 되는 조건, JSON 컬럼의 인덱싱과 부분 갱신 비용, 컬럼으로 승격할 속성을 가르는 기준을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 18강 — 이력·시간 모델링</title>
      <link>https://www.donghanlab.com/posts/db-design-18-temporal</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-18-temporal</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>유효 시간과 거래 시간이라는 두 축을 구분하고 감사 로그·선분 이력·SCD Type 2·시스템 버전 테이블·이중 시간 모델을 비교한다. 반개구간과 기간 중첩 방지 제약까지 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 17강 — 계층 구조 모델링</title>
      <link>https://www.donghanlab.com/posts/db-design-17-hierarchies</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-17-hierarchies</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>인접 리스트·경로 열거·중첩 집합·클로저 테이블 네 가지 트리 모델을 재귀 CTE가 보편화된 기준으로 비교하고, 원본과 조회용 구조를 나누는 실무 조합을 정리한다. 시리즈 Part 4 &quot;심화 모델링&quot;의 첫 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 16강 — 파티셔닝 설계</title>
      <link>https://www.donghanlab.com/posts/db-design-16-partitioning</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-16-partitioning</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>파티셔닝의 가장 큰 가치가 성능이 아니라 데이터 수명 관리인 이유, RANGE·LIST·HASH 방식과 DBMS별 구현, PK와 UNIQUE에 파티션 키를 포함해야 하는 제약, 파티셔닝을 하지 말아야 할 때를 정리한다. 시리즈 Part 3 &quot;물리 설계&quot;의 마지막 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 15강 — 인덱스 설계</title>
      <link>https://www.donghanlab.com/posts/db-design-15-indexes</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-15-indexes</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>인덱스를 테이블이 아니라 쿼리에서 역산하는 절차, 복합 인덱스의 컬럼 순서 규칙, 커버링 인덱스, 인덱스를 타지 못하는 패턴, 그리고 인덱스가 청구하는 쓰기·공간·캐시 비용을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 14강 — 키 생성 전략</title>
      <link>https://www.donghanlab.com/posts/db-design-14-key-generation</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-14-key-generation</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>시퀀스·IDENTITY·UUIDv4·UUIDv7·Snowflake를 정렬성, 크기, 분산 생성, 추측 가능성으로 비교한다. 번호에 구멍이 생기는 것이 정상인 이유와 내부 PK·외부 ID·업무 번호를 분리하는 설계를 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 13강 — 제약조건 설계</title>
      <link>https://www.donghanlab.com/posts/db-design-13-constraints</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-13-constraints</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>NOT NULL·CHECK·UNIQUE·FOREIGN KEY부터 지연 제약과 배타 제약까지, 앱 검증이 우회되는 경로를 DB가 막는 방법을 정리한다. UNIQUE의 NULL 처리가 DBMS마다 다른 지점과 소프트 삭제를 부분 인덱스로 푸는 방법도 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 12강 — 데이터 타입 설계</title>
      <link>https://www.donghanlab.com/posts/db-design-12-data-types</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-12-data-types</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>정수·실수·문자열·날짜 타입을 도메인에 맞게 고르는 원칙, 금액에 NUMERIC을 쓰는 이유, 문자 인코딩과 길이 단위, UTC 기준 시각 타입, 조인 컬럼의 타입·콜레이션 불일치가 인덱스를 무력화하는 지점을 DBMS별로 정리한다. 시리즈 Part 3 &quot;물리 설계&quot;의 첫 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 11강 — 식별/비식별 관계, 슈퍼타입/서브타입</title>
      <link>https://www.donghanlab.com/posts/db-design-11-identifying-and-subtypes</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-11-identifying-and-subtypes</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>식별 관계와 비식별 관계의 장단점과 선택 기준, 슈퍼타입·서브타입을 단일 테이블·서브타입별 테이블·슈퍼+서브 테이블 세 가지로 변환하는 전략과 비교표를 다룬다. 시리즈 Part 2 &quot;논리 설계&quot;의 마지막 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 10강 — 반정규화</title>
      <link>https://www.donghanlab.com/posts/db-design-10-denormalization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-10-denormalization</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>반정규화를 검토하기 전에 확인할 순서, 컬럼·테이블·관계별 기법, 중복을 동기화하는 수단 비교표, 생성 컬럼·복합 FK·집계 테이블 예제와 결정 기록 양식을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 9강 — 4NF, 5NF</title>
      <link>https://www.donghanlab.com/posts/db-design-09-4nf-5nf</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-09-4nf-5nf</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>함수 종속성으로 설명되지 않는 중복을 다루는 다치 종속과 4NF, 조인 종속과 5NF, 두 정규형이 실무에서 나타나는 빈도와 판단 기준, 그리고 6NF를 간단히 소개한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 8강 — 정규화 1NF ~ BCNF</title>
      <link>https://www.donghanlab.com/posts/db-design-08-normalization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-08-normalization</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>1NF부터 BCNF까지 각 정규형이 제거하는 대상, 종속성 보존을 기준으로 한 3NF와 BCNF의 선택, 3NF 합성과 BCNF 분해 알고리즘, 무손실 조인 검사를 예제와 DDL로 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 7강 — 이상현상과 함수 종속성</title>
      <link>https://www.donghanlab.com/posts/db-design-07-anomalies-and-fd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-07-anomalies-and-fd</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>삽입·갱신·삭제 이상현상의 원인, 함수 종속성의 정의와 종류, 암스트롱 공리와 유도 규칙, 속성 폐포로 후보키를 기계적으로 찾는 방법, 최소 커버까지 정규화의 도구를 준비한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 6강 — ER → 관계형 변환</title>
      <link>https://www.donghanlab.com/posts/db-design-06-er-to-relational</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-06-er-to-relational</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>ER 요소별 관계형 변환 규칙과 1:N·N:M·1:1·다중값 속성·약한 엔티티·삼항 관계·재귀 관계의 DDL을 정리한다. 시리즈 Part 2 &quot;논리 설계&quot;의 첫 강이다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 5강 — 키의 종류</title>
      <link>https://www.donghanlab.com/posts/db-design-05-keys</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-05-keys</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>슈퍼키·후보키·기본키·대체키·외래키의 계층, 대체키에 UNIQUE를 빠뜨리는 흔한 실수, 자연키와 대리키의 선택 기준, 복합키의 크기 전파 문제와 복합 FK의 NULL 처리(MATCH FULL)를 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 4강 — ERD 표기법</title>
      <link>https://www.donghanlab.com/posts/db-design-04-erd-notation</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-04-erd-notation</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>Chen, IE(Crow&apos;s Foot), IDEF1X, Barker, UML 표기법을 대조하고 카디널리티를 반대로 읽는 실수를 막는 규칙, 개념 ERD와 물리 ERD를 분리하는 실무 팁을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 3강 — 개념 모델링 (ER 모델)</title>
      <link>https://www.donghanlab.com/posts/db-design-03-conceptual-modeling</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-03-conceptual-modeling</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>엔티티·속성·관계라는 ER 모델의 3요소, 엔티티와 속성의 종류, 카디널리티와 참여도 표기, 이항 관계 셋으로 분해되지 않는 삼항 관계, 재귀 관계까지 개념 설계의 판단 기준을 정리한다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 2강 — 요구사항 분석</title>
      <link>https://www.donghanlab.com/posts/db-design-02-requirements</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-02-requirements</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>데이터·업무 규칙·처리·비기능 네 가지 수집 항목, 명사와 동사로 엔티티 후보를 뽑는 분석, 업무 규칙 분류표, 모호성을 없애는 질문 목록, CRUD 매트릭스와 볼륨·쿼리 프로파일, 용어 사전까지 설계의 첫 단계를 다룬다.</description>
    </item>
    <item>
      <title>DB 설계 A to Z 1강 — 설계란 무엇인가</title>
      <link>https://www.donghanlab.com/posts/db-design-01-what-is-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-design-01-what-is-design</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>DB 설계를 요구사항·개념·논리·물리·구현 5단계로 나누는 이유, ANSI/SPARC 3층 스키마와 데이터 독립성, 그리고 서로 충돌하는 좋은 설계의 기준 다섯 가지를 쇼핑몰 주문항목 처리단계 예제로 정리한다. 시리즈 Part 1 &quot;기초: 설계의 틀&quot;의 첫 강이다.</description>
    </item>
    <item>
      <title>PM2 완전 정복 7편 — 안티패턴 12선과 운영 체크리스트</title>
      <link>https://www.donghanlab.com/posts/pm2-07-antipatterns-checklist</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-07-antipatterns-checklist</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>sudo pm2 혼용부터 K8s 안에서 PM2로 스케일링까지 현장에서 반복되는 안티패턴 12가지를 증상·원인·해결로 정리하고, 설치부터 무중단·로그·보안까지 운영 셋업 체크리스트와 명령어 치트시트로 시리즈를 마무리한다.</description>
    </item>
    <item>
      <title>PM2 완전 정복 6편 — Docker, Nginx, 폐쇄망에서 PM2를 운영하기</title>
      <link>https://www.donghanlab.com/posts/pm2-06-docker-nginx-airgap</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-06-docker-nginx-airgap</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>컨테이너에서 PM2를 쓸지 말지의 판단 기준과 pm2-runtime, Nginx 리버스 프록시 구성, 인터넷이 없는 폐쇄망에서의 오프라인 설치 절차, 업그레이드 주의사항과 증상별 트러블슈팅.</description>
    </item>
    <item>
      <title>PM2 완전 정복 5편 — 무엇이든 띄우고, 지켜보고, 배포하기</title>
      <link>https://www.donghanlab.com/posts/pm2-05-monitoring-and-deploy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-05-monitoring-and-deploy</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>npm 스크립트·TypeScript·Next.js·Bun·비 Node 앱을 PM2로 띄우는 방법, pm2 monit과 @pm2/io 커스텀 메트릭 및 외부 관측성 스택과의 역할 분담, Programmatic API, 그리고 pm2 deploy와 CI/CD 중 무엇을 고를지.</description>
    </item>
    <item>
      <title>PM2 완전 정복 4편 — God Daemon과 클러스터 모드, 그리고 진짜 무중단 재시작</title>
      <link>https://www.donghanlab.com/posts/pm2-04-internals-and-cluster</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-04-internals-and-cluster</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>PM2 데몬과 PM2_HOME의 구조, fork와 cluster 모드의 차이와 클러스터가 불러오는 상태(State) 문제, restart와 reload의 결정적 차이, wait_ready와 graceful shutdown으로 요청 유실을 0으로 만드는 흐름.</description>
    </item>
    <item>
      <title>PM2 완전 정복 3편 — 재부팅에도 살아남는 프로세스와 로그 운영</title>
      <link>https://www.donghanlab.com/posts/pm2-03-startup-and-log-ops</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-03-startup-and-log-ops</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>watch 모드를 개발 전용으로 두는 이유, startup/save/resurrect로 만드는 부팅 영속성, 그리고 pm2-logrotate와 OS logrotate로 로그 디스크를 지키는 방법.</description>
    </item>
    <item>
      <title>PM2 완전 정복 2편 — Ecosystem 파일로 설정을 선언하고 재시작을 설계한다</title>
      <link>https://www.donghanlab.com/posts/pm2-02-ecosystem-and-restart</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-02-ecosystem-and-restart</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>CLI 옵션을 ecosystem.config.js로 옮겨 재현 가능하게 만들고, env 블록과 --update-env 함정을 정리하며, 크래시 루프 방지·지수 백오프·메모리 기반 재시작·크론 재시작까지 재시작 정책을 의도적으로 설계한다.</description>
    </item>
    <item>
      <title>PM2 완전 정복 1편 — 프로세스 매니저가 필요한 이유와 첫 실행</title>
      <link>https://www.donghanlab.com/posts/pm2-01-why-and-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/pm2-01-why-and-basics</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>node server.js가 운영에서 부딪히는 여섯 가지 문제, systemd·Docker와의 역할 비교, 설치와 첫 실행, 상태 조회부터 stop/delete/kill 구분까지 필수 명령어와 로그 기초.</description>
    </item>
    <item>
      <title>React의 탄생 3편 — 치른 대가와 그 이후의 진화</title>
      <link>https://www.donghanlab.com/posts/why-react-was-born-03-cost-and-after</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/why-react-was-born-03-cost-and-after</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>JSX를 향한 초기 반발과 Pete Hunt의 반론, 그리고 다시 그리는 비용·로직 재사용·동기 렌더링·상태 관리·SSR·세밀한 갱신이라는 여섯 가지 대가와 그에 대한 대응의 연표.</description>
    </item>
    <item>
      <title>React의 탄생 2편 — &quot;전부 다시 그린다&quot;는 발상과 Virtual DOM</title>
      <link>https://www.donghanlab.com/posts/why-react-was-born-02-the-idea</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/why-react-was-born-02-the-idea</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>Facebook의 읽지 않은 메시지 버그와 XHP, Jordan Walke의 질문에서 출발해 UI = f(state), 미니 Virtual DOM 구현, Reconciliation의 두 가정, 그리고 JSX·단방향 흐름 같은 함께 온 설계 결정까지.</description>
    </item>
    <item>
      <title>React의 탄생 1편 — 서버 렌더링부터 MV* 프레임워크까지</title>
      <link>https://www.donghanlab.com/posts/why-react-was-born-01-before-react</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/why-react-was-born-01-before-react</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>서버가 HTML 전체를 다시 그리던 시대, 명령형 DOM API, AJAX와 jQuery가 남긴 네 가지 대가, 그리고 Backbone·Knockout·AngularJS가 갈라진 지점까지.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 6편 — 스트리밍과 읽기 복제본, 마지막 요청까지 지키는 종료</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-06-scale-and-shutdown</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-06-scale-and-shutdown</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>수십만 행을 메모리에 올리지 않고 내보내는 커서 스트리밍, 읽기 복제본과 복제 지연의 함정, 진행 중인 요청을 지키는 Graceful Shutdown, 그리고 요청 한 건의 타임라인과 운영 전 체크리스트로 시리즈를 닫는다.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 5편 — 캐시와 타임아웃, 에러와 추적으로 파이프라인을 지키는 법</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-05-cache-timeout-observability</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-05-cache-timeout-observability</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>DB 조회를 아예 하지 않는 캐싱 계층부터 Cache Stampede, 바깥이 길고 안쪽이 짧아야 하는 타임아웃 체인과 쿼리 취소, 에러를 계층 경계에서 번역하는 법, 그리고 요청 하나를 끝까지 추적하는 관측성까지.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 4편 — 트랜잭션과 커넥션 풀, 부하에서 먼저 무너지는 지점</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-04-transaction-and-pool</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-04-transaction-and-pool</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>트랜잭션이 하나의 연결 위에서만 성립하는 이유와 격리 수준, 커넥션 풀이 고갈되는 장애 시나리오와 사이징 기준, 그리고 EXPLAIN ANALYZE와 N+1과 OFFSET 페이지네이션까지 실무에서 터지는 지점들을 본다.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 3편 — 커넥션 풀을 지나 DB에 닿았다가 JSON으로 돌아오기까지</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-03-db-and-response</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-03-db-and-response</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>커넥션 풀에서 연결을 빌리는 순간부터 DB 안에서 파서와 플래너와 실행기가 움직이는 과정, 그리고 결과 행이 DTO와 JSON을 거쳐 상태 코드와 헤더를 달고 클라이언트로 나가기까지를 따라간다.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 2편 — Node.js는 요청을 받아 어떤 계층으로 흘려보내는가</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-02-app-entry</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-02-app-entry</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>요청이 애플리케이션 서버 안으로 들어온 뒤의 이야기. 소켓에서 req 객체가 만들어지는 과정과 싱글 스레드가 동시 요청을 처리하는 원리, 미들웨어 파이프라인, 그리고 Controller에서 Service를 거쳐 Repository까지 내려가는 계층 구조를 본다.</description>
    </item>
    <item>
      <title>요청 한 건의 일생 1편 — 요청은 브라우저를 떠나 어디를 지나 서버에 닿는가</title>
      <link>https://www.donghanlab.com/posts/request-lifecycle-01-the-map</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/request-lifecycle-01-the-map</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>버튼 하나를 누른 요청이 DB에 닿았다가 돌아오기까지의 전체 지도를 먼저 그린다. URL 해석과 DNS, TCP와 TLS 핸드셰이크, 그리고 로드밸런서와 리버스 프록시가 요청에 무엇을 더하는지까지.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 13강 — 측정과 개선: DORA 지표, 그리고 마무리</title>
      <link>https://www.donghanlab.com/posts/cicd-13-dora-metrics-wrapup</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-13-dora-metrics-wrapup</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>&quot;그래서 우리 팀의 전달 능력이 실제로 좋아졌는가&quot;에 답하기 위한 DORA 네 지표의 정의와 수집 방법, 지표를 잘못 쓰는 방식, 파이프라인 자체의 건강 지표, 성숙도 로드맵과 최종 체크리스트로 시리즈를 마무리합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 12강 — GitOps와 Kubernetes 배포</title>
      <link>https://www.donghanlab.com/posts/cicd-12-gitops-kubernetes</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-12-gitops-kubernetes</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>배포에 필요한 Kubernetes 리소스만 추린 뒤, Git을 운영 상태의 원천으로 삼는 GitOps를 다룹니다. Push와 Pull 배포의 차이, 앱 저장소와 설정 저장소 분리, Argo CD Application, GitOps에서의 비밀값과 마이그레이션 순서를 정리합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 11강 — 폐쇄망 환경의 CI/CD</title>
      <link>https://www.donghanlab.com/posts/cicd-11-air-gapped-cicd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-11-air-gapped-cicd</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>인터넷과 분리된 폐쇄망에서는 hosted runner도 npm 레지스트리도 Docker Hub도 없습니다. 반입 횟수와 크기를 줄이는 것을 목표로 내부망 구성 요소, 이미지·의존성 반입, 폐쇄망용 Dockerfile, 내부 CI와 배포 번들 방식을 설계합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 10강 — 모노레포와 재사용 가능한 파이프라인</title>
      <link>https://www.donghanlab.com/posts/cicd-10-monorepo-reusable-pipelines</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-10-monorepo-reusable-pipelines</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>&quot;README 하나 고쳤는데 왜 전체가 빌드되지?&quot;와 &quot;같은 워크플로를 복사해 붙여 넣는 문제&quot;를 함께 풉니다. 변경 영향 분석과 paths-filter, Composite Action과 Reusable Workflow의 차이, 조직 단위 표준화를 다룹니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 9강 — 공급망 보안: 스캔, SBOM, 서명</title>
      <link>https://www.donghanlab.com/posts/cicd-09-supply-chain-security</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-09-supply-chain-security</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>의존성·베이스 이미지·서드파티 액션까지 모두 공급망입니다. 액션 고정과 의존성 관리 자동화, 코드·비밀값 스캔, 컨테이너 이미지 스캔, SBOM 생성, 이미지 서명과 검증, SLSA 프레임워크를 파이프라인에 심습니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 8강 — 배포 전략, 롤백, DB 마이그레이션</title>
      <link>https://www.donghanlab.com/posts/cicd-08-deployment-strategies-db-migration</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-08-deployment-strategies-db-migration</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Recreate·Rolling·Blue-Green·Canary·기능 플래그를 비교하고 단일 서버 Blue-Green을 직접 구현합니다. 롤백의 세 가지 방식과, 구·신 버전이 공존하는 시간을 전제로 한 Expand-Contract DB 마이그레이션까지 설계합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 7강 — 시크릿, 환경 분리, OIDC</title>
      <link>https://www.donghanlab.com/posts/cicd-07-secrets-environments-oidc</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-07-secrets-environments-oidc</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>파이프라인은 조직에서 가장 강력한 자동화 주체입니다. 비밀값의 올바른 위치, GitHub 시크릿과 변수, Environments 승인, GITHUB_TOKEN 최소 권한, 스크립트 인젝션과 포크 PR, 그리고 장기 자격 증명을 없애는 OIDC를 다룹니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 6강 — 배포 자동화: 서버 배포와 플랫폼 배포</title>
      <link>https://www.donghanlab.com/posts/cicd-06-deployment-automation</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-06-deployment-automation</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>레지스트리에 올린 이미지를 서버에서 실행시키는 CD 단계를 만듭니다. Push와 Pull 방식을 비교하고, SSH + Docker Compose 배포 스크립트와 워크플로, 플랫폼 배포, PR 미리보기 환경, 릴리스 자동화를 구성합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 5강 — 컨테이너 빌드와 이미지 레지스트리</title>
      <link>https://www.donghanlab.com/posts/cicd-05-container-build-registry</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-05-container-build-registry</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Build Once Deploy Many를 컨테이너 이미지로 구현합니다. Next.js standalone 멀티스테이지 빌드, 빌드 시점 환경변수 문제, 태깅 전략과 digest, 레지스트리 선택, 멀티 플랫폼 빌드를 다룹니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 4강 — 파이프라인 최적화: 캐시, 매트릭스, 병렬, 동시성 제어</title>
      <link>https://www.donghanlab.com/posts/cicd-04-pipeline-optimization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-04-pipeline-optimization</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>느린 CI는 결국 무시당합니다. 어디서 시간이 새는지 측정하고 캐시의 원리, job 병렬화, 매트릭스 빌드, concurrency 동시성 제어, 실행 자체를 건너뛰는 기법까지 적용합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 3강 — 테스트 전략과 품질 게이트</title>
      <link>https://www.donghanlab.com/posts/cicd-03-testing-quality-gates</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-03-testing-quality-gates</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>정적 분석부터 E2E까지 테스트를 파이프라인 어디에 둘지 설계하고, 서비스 컨테이너로 실제 DB 통합 테스트를 돌리고, 불안정한 테스트를 다루며 브랜치 보호 규칙으로 머지 게이트를 만듭니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 2강 — GitHub Actions 해부와 첫 워크플로</title>
      <link>https://www.donghanlab.com/posts/cicd-02-github-actions-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-02-github-actions-basics</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Workflow·Event·Job·Step·Action의 구성 요소부터 트리거와 표현식·컨텍스트, Next.js 첫 CI 워크플로 작성, job 분리와 아티팩트 전달, Runner 이해와 디버깅까지 다룹니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 CI/CD 1강 — CI/CD란 무엇인가: 개념과 전체 그림</title>
      <link>https://www.donghanlab.com/posts/cicd-01-what-is-cicd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/cicd-01-what-is-cicd</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>통합 지옥과 &quot;내 PC에서는 되는데요&quot;에서 출발해 CI·Continuous Delivery·Deployment를 구분하고, 파이프라인의 해부와 Build Once Deploy Many 같은 핵심 원칙, 도구 지형도까지 정리합니다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 15장 — 정리: 풀스택 개발자 네트워크 체크리스트</title>
      <link>https://www.donghanlab.com/posts/network-15-checklist</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-15-checklist</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>시리즈 전체를 개념·설계·운영 세 묶음의 점검 목록으로 압축했다. 각 항목이 낯설다면 해당 장으로 돌아가면 된다. 다음 단계 학습 제안도 함께 담았다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 14장 — 실전 트러블슈팅</title>
      <link>https://www.donghanlab.com/posts/network-14-troubleshooting</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-14-troubleshooting</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>이름 해석부터 애플리케이션 로직까지 아래에서 위로 올라가는 진단 순서와, 각 단계에서 쓰는 명령어(nc·ss·curl -w·tcpdump·mtr·openssl), 브라우저 DevTools 활용법, 증상별 원인 사전을 담았다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 13장 — 네트워크 보안과 폐쇄망 환경</title>
      <link>https://www.donghanlab.com/posts/network-13-security-and-air-gapped</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-13-security-and-air-gapped</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>풀스택 개발자가 만들기 쉬운 SSRF를 포함한 주요 공격과 방어, 방화벽 정책 요청서에 적어야 할 것, DMZ·Bastion·제로 트러스트, 그리고 폐쇄망이 깨뜨리는 &quot;인터넷이 된다&quot;는 가정들을 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 12장 — 네트워크 성능과 안정성 설계</title>
      <link>https://www.donghanlab.com/posts/network-12-performance-and-stability</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-12-performance-and-stability</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>RTT로 계산하는 새 연결의 최소 비용, HTTP 클라이언트와 DB 커넥션 풀의 재사용, 바깥이 안쪽보다 길어야 하는 타임아웃 정렬, 백오프와 지터, 서킷 브레이커와 격벽, 프론트엔드 최적화까지.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 11장 — 컨테이너와 클라우드 네트워크</title>
      <link>https://www.donghanlab.com/posts/network-11-container-cloud-network</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-11-container-cloud-network</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Docker 네트워크 드라이버와 컨테이너 안의 localhost 함정, 포트 매핑 방향과 ufw로 막히지 않는 publish, depends_on과 healthcheck, Kubernetes Service·DNS, VPC 서브넷과 보안 그룹·NACL의 차이를 다룬다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 10장 — 인프라 구성요소: 프록시, 로드밸런서, CDN, 게이트웨이</title>
      <link>https://www.donghanlab.com/posts/network-10-proxy-lb-cdn</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-10-proxy-lb-cdn</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>포워드·리버스 프록시의 역할 구분, 프록시 뒤에서 클라이언트 IP와 프로토콜을 되찾는 법, L4와 L7 로드밸런서, 헬스체크와 Graceful Shutdown, CDN과 API Gateway까지 인프라 구성요소를 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 9장 — 실시간 통신: Polling, SSE, WebSocket, WebRTC</title>
      <link>https://www.donghanlab.com/posts/network-09-realtime-communication</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-09-realtime-communication</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>Polling·SSE·WebSocket·WebRTC를 요구사항 기준으로 비교하고, Nginx 버퍼링과 Upgrade 헤더, &quot;정확히 60초마다 끊김&quot;의 원인, WebRTC 시그널링과 STUN/TURN/SFU의 네트워크 포인트를 다룬다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 8장 — 브라우저 보안 모델: SOP, CORS, 쿠키</title>
      <link>https://www.donghanlab.com/posts/network-08-browser-security</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-08-browser-security</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>URL 입력부터 렌더까지의 전체 흐름을 되짚고, Origin과 SOP, CORS preflight와 credentials, 쿠키 보안 속성, CSRF·XSS를 네트워크 관점에서 정리한다. CORS 트러블슈팅 체크리스트 포함.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 7장 — TLS와 HTTPS: 암호화와 신뢰의 구조</title>
      <link>https://www.donghanlab.com/posts/network-07-tls-https</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-07-tls-https</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>HTTPS가 보장하는 기밀성·무결성·인증, 인증서 신뢰 체인과 fullchain 누락 사고, TLS 1.3 핸드셰이크와 SNI·ALPN, 폐쇄망 사설 CA의 클라이언트별 신뢰 저장소 차이를 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 6장 — HTTP: 웹의 언어와 그 진화</title>
      <link>https://www.donghanlab.com/posts/network-06-http</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-06-http</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>HTTP 메시지 구조와 메서드의 의미론, 실무에서 갈리는 상태 코드(401/403, 502/504), Cache-Control과 조건부 요청, 그리고 1.0에서 3까지의 진화와 각 버전이 해결한 HOL Blocking을 다룬다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 5장 — DNS: 이름이 주소가 되기까지</title>
      <link>https://www.donghanlab.com/posts/network-05-dns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-05-dns</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>DNS의 계층 구조와 조회 과정, 주요 레코드 타입과 apex CNAME 제약, TTL과 애플리케이션 레벨 캐시의 함정, /etc/hosts 오버라이드, dig·getent로 확인하는 법을 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 4장 — 전송 계층: TCP와 UDP, 포트, 소켓</title>
      <link>https://www.donghanlab.com/posts/network-04-tcp-and-udp</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-04-tcp-and-udp</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>포트와 소켓의 생애주기부터 3-way/4-way 핸드셰이크, TIME_WAIT과 CLOSE_WAIT이 알려주는 것, 재전송·흐름 제어·혼잡 제어, UDP와의 비교, 그리고 에러 코드로 계층을 읽는 법까지.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 3장 — 네트워크 계층: IP, 서브넷, NAT, 라우팅</title>
      <link>https://www.donghanlab.com/posts/network-03-ip-and-routing</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-03-ip-and-routing</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>CIDR 계산법과 사설 대역, NAT가 Rate Limit·WebRTC에 미치는 영향, 라우팅 테이블과 Docker 대역 충돌, MTU·PMTU 블랙홀, IPv6 환경의 ECONNREFUSED까지 네트워크 계층을 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 2장 — 링크 계층: MAC, 스위치, ARP, VLAN</title>
      <link>https://www.donghanlab.com/posts/network-02-link-layer</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-02-link-layer</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>MAC 주소가 &quot;다음 홉&quot;의 주소인 이유, 스위치의 MAC 학습, ARP로 IP에서 MAC을 찾는 과정과 ARP 캐시가 일으키는 실무 증상, 그리고 VLAN에 의한 논리적 분리를 다룬다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 네트워크 1장 — 네트워크의 기본 구조: 패킷, 프로토콜, 계층 모델</title>
      <link>https://www.donghanlab.com/posts/network-01-packets-and-layers</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/network-01-packets-and-layers</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>network</category>
      <description>회선 교환과 패킷 교환의 차이에서 출발해 OSI 7계층과 TCP/IP 4계층의 대응, 캡슐화와 역캡슐화, 그리고 방화벽·로드밸런서가 모두 기준으로 삼는 5-tuple까지 정리한다.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 부록 — 전체 과정 요약</title>
      <link>https://www.donghanlab.com/posts/infra-11-course-roadmap</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-11-course-roadmap</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>1강부터 10강까지의 핵심 질문과 도구, 반드시 기억할 점을 한 표로 모으고 각 강으로 가는 링크를 정리한다. 그리고 네트워크·데이터·플랫폼·보안 심화로 이어지는 다음 학습 방향까지.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 10강 — 운영 심화</title>
      <link>https://www.donghanlab.com/posts/infra-10-operations-advanced</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-10-operations-advanced</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>가용성 숫자가 뜻하는 시간, 고가용성 설계와 백업·재해 복구, DB 운영과 캐싱·큐, 보안 운영, 부하 테스트와 용량 관리, SLO와 에러 버짓, 장애 대응과 비난 없는 회고.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 9강 — 쿠버네티스</title>
      <link>https://www.donghanlab.com/posts/infra-09-kubernetes</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-09-kubernetes</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>컨트롤 플레인과 핵심 오브젝트, probe 세 종류의 구분, requests와 limits, 오토스케일링, 롤링 업데이트와 무중단 종료, Helm·Kustomize 패키징, 그리고 쿠버네티스를 쓰지 말아야 할 때.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 8강 — IaC (Infrastructure as Code)</title>
      <link>https://www.donghanlab.com/posts/infra-08-iac</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-08-iac</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Terraform의 plan 읽기와 state 보호, 모듈과 환경 분리, CI에서의 실행 방식, Ansible의 멱등성, 두 도구의 역할 분담, 그리고 폐쇄망에서의 IaC 운영.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 7강 — 관측성</title>
      <link>https://www.donghanlab.com/posts/infra-07-observability</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-07-observability</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>로그·메트릭·트레이스 세 신호와 구조화 로그, RED·USE·Golden Signals 방법론, 증상 기반 알림, 분산 트레이싱과 헬스체크 엔드포인트, Docker Compose로 올려 보는 실습용 관측 스택.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 6강 — 클라우드 기초 (AWS)</title>
      <link>https://www.donghanlab.com/posts/infra-06-aws-cloud-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-06-aws-cloud-basics</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>IaaS부터 SaaS까지의 책임 경계, IAM 최소 권한과 역할, VPC의 public/private 라우팅과 보안 그룹, EC2·S3·RDS·ELB·Route 53의 기본기, 그리고 NAT와 데이터 전송에서 새는 비용까지.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 5강 — CI/CD</title>
      <link>https://www.donghanlab.com/posts/infra-05-cicd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-05-cicd</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>CI와 CD의 구분, GitHub Actions 워크플로 구조, 이미지 빌드와 푸시, 시크릿과 OIDC, 블루/그린과 롤링 배포, 롤백과 expand-contract DB 마이그레이션까지 — 배포를 사람 손에서 파이프라인으로 옮기는 법.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 4강 — Docker</title>
      <link>https://www.donghanlab.com/posts/infra-04-docker</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-04-docker</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>컨테이너와 VM의 차이, 이미지 레이어와 캐시, 멀티 스테이지 Dockerfile, 볼륨과 네트워크, Compose, 로그·리소스 제한, 폐쇄망 반입과 트러블슈팅까지 — 실행 환경을 이미지로 고정하는 법.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 3강 — 웹서버와 리버스 프록시</title>
      <link>https://www.donghanlab.com/posts/infra-03-web-server-reverse-proxy</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-03-web-server-reverse-proxy</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Nginx 설정 구조부터 정적 파일과 SPA, proxy_pass와 X-Forwarded 헤더, location 우선순위, certbot HTTPS, 로드밸런싱, 타임아웃과 속도 제한까지 — 앱 앞에 서는 웹서버 운영의 기본.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 2강 — 네트워크 기초</title>
      <link>https://www.donghanlab.com/posts/infra-02-network-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-02-network-basics</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>OSI 계층과 IP·서브넷, TCP와 UDP, DNS, HTTP와 HTTPS, NAT·프록시·로드밸런서, 방화벽과 바인딩 주소까지 — 접속이 안 되는 원인을 DNS에서 응용까지 순서대로 좁혀 가는 법.</description>
    </item>
    <item>
      <title>풀스택 개발자를 위한 인프라 1강 — 리눅스 운영 기본</title>
      <link>https://www.donghanlab.com/posts/infra-01-linux-operations</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/infra-01-linux-operations</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>FHS 디렉터리 구조와 권한, 프로세스와 시그널, systemd 서비스, 패키지 관리, 환경 변수, 텍스트 처리, 쉘 스크립트, 리소스 점검까지 — 서버에 접속했을 때 무엇이 어디에 있고 무엇이 어떻게 돌고 있는지 스스로 파악하는 법.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 특별편 — 폐쇄망에서의 DevOps</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-08-air-gapped</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-08-air-gapped</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>npm install도 docker pull도 안 되는 폐쇄망에서 안티패턴이 자라는 이유와, 내부 레지스트리·패키지 미러·릴리스 번들·다이제스트 고정·오프라인 취약점 스캔·복구 리허설로 시리즈의 패턴을 이식하는 방법.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 7강 — 조직: 도구로는 해결되지 않는 것</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-07-organization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-07-organization</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Conway의 법칙과 역 Conway 기동, DevOps 팀이라는 새 사일로, You Build It You Run It, Team Topologies와 인지 부하, Platform Engineering, 그리고 Westrum 조직 문화.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 6강 — 운영: 장애를 대하는 방식</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-06-operations</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-06-operations</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Monitoring과 Observability의 차이, 로그·메트릭·트레이스와 OpenTelemetry, Golden Signals와 SLI/SLO·Error Budget, Alert Fatigue와 Circuit Breaker, 그리고 Blameless Postmortem.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 5강 — 배포 전략: 빅뱅 릴리스를 쪼개는 법</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-05-deployment</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-05-deployment</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>배포와 공개의 분리를 축으로 Rolling Update, Blue-Green, Expand and Contract, Canary, Progressive Delivery, Feature Flag, Strangler Fig를 정리하고 Knight Capital 사고에서 배우는 것.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 4강 — 파이프라인과 아티팩트</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-04-pipeline</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-04-pipeline</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Deployment Pipeline과 Build Once Deploy Many, latest 태그가 검증을 무력화하는 이유, Twelve-Factor 설정 분리와 시크릿 관리, Pipeline as Code·GitOps·Shift-Left.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 3강 — 코드 흐름: 병합 지옥에서 벗어나기</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-03-code-flow</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-03-code-flow</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Integration Hell과 장수 브랜치가 만드는 병합 이자, 그리고 Continuous Integration·Trunk-Based Development·Branch by Abstraction·Stop the Line으로 변경 단위를 줄이는 방법.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 2강 — 인프라: 손으로 만든 서버의 최후</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-02-infrastructure</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-02-infrastructure</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>Snowflake Server, Configuration Drift, ClickOps가 재현성을 무너뜨리는 과정과 IaC·멱등성·Immutable Infrastructure·Pets vs Cattle·Phoenix Server로 되돌리는 두 단계.</description>
    </item>
    <item>
      <title>DevOps 패턴과 안티패턴 1강 — DevOps는 왜 패턴이 필요해졌나</title>
      <link>https://www.donghanlab.com/posts/devops-patterns-01-why-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/devops-patterns-01-why-patterns</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>혼돈의 벽과 변경을 막을수록 위험해지는 악순환, 2009년 DevOpsDays가 만든 전환점, 그리고 이후 모든 패턴을 판별할 세 가지 질문(재현성·변경 단위·피드백).</description>
    </item>
    <item>
      <title>TypeScript로 다시 읽는 GoF 디자인 패턴 — 4편: 행위 패턴 Ⅱ</title>
      <link>https://www.donghanlab.com/posts/design-patterns-behavioral-2</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/design-patterns-behavioral-2</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Iterator, Mediator, Memento, Visitor, Interpreter — 순회하고, 조율하고, 기록하고, 구조를 방문하고, 언어를 해석하는 다섯 가지 패턴과 시리즈 정리</description>
    </item>
    <item>
      <title>TypeScript로 다시 읽는 GoF 디자인 패턴 — 3편: 행위 패턴 Ⅰ</title>
      <link>https://www.donghanlab.com/posts/design-patterns-behavioral-1</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/design-patterns-behavioral-1</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Strategy, State, Template Method, Observer, Command, Chain of Responsibility — 객체들이 책임을 나누고 협력하는 여섯 가지 방법</description>
    </item>
    <item>
      <title>TypeScript로 다시 읽는 GoF 디자인 패턴 — 2편: 구조 패턴</title>
      <link>https://www.donghanlab.com/posts/design-patterns-structural</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/design-patterns-structural</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy — 객체와 클래스를 조합해 더 큰 구조를 만드는 일곱 가지 패턴</description>
    </item>
    <item>
      <title>TypeScript로 다시 읽는 GoF 디자인 패턴 — 1편: 들어가며와 생성 패턴</title>
      <link>https://www.donghanlab.com/posts/design-patterns-creational</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/design-patterns-creational</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>디자인 패턴이 무엇이고 왜 배우는지, 그리고 Singleton, Factory Method, Abstract Factory, Builder, Prototype — 객체를 만드는 방법에 대한 다섯 가지 패턴</description>
    </item>
    <item>
      <title>데이터베이스 안티패턴과 디자인 패턴 — 쇼핑몰 예제로 정리하기</title>
      <link>https://www.donghanlab.com/posts/db-antipatterns-and-design-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/db-antipatterns-and-design-patterns</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>database</category>
      <description>EAV·다중 컬럼 속성부터 인덱스·쿼리·운영까지 SQL 안티패턴을 훑고, 서브타입·계층·이력 모델링과 키셋 페이지네이션·큐 테이블·멱등성 키 같은 검증된 패턴을 쇼핑몰 예제로 정리한다.</description>
    </item>
    <item>
      <title>Next.js는 무엇이 불편해서 만들어졌나</title>
      <link>https://www.donghanlab.com/posts/why-nextjs-was-born</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/why-nextjs-was-born</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>CSR의 구조적 한계와 수제 SSR의 고통, 그리고 Next.js가 그 문제를 규칙(convention)으로 해결한 과정</description>
    </item>
    <item>
      <title>디자인 패턴 전에 알아야 할 안티패턴 — 5편: 통합과 조직</title>
      <link>https://www.donghanlab.com/posts/anti-patterns-integration-and-organization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/anti-patterns-integration-and-organization</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Stovepipe System, Vendor Lock-In, Single Point of Failure, Architecture by Implication, Design by Committee, Ivory Tower Architecture — 시스템 간 통합과 아키텍처를 결정하는 방식의 안티패턴</description>
    </item>
    <item>
      <title>디자인 패턴 전에 알아야 할 안티패턴 — 4편: 분산 시스템</title>
      <link>https://www.donghanlab.com/posts/anti-patterns-distributed-systems</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/anti-patterns-distributed-systems</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Distributed Monolith, Shared Database, Chatty Services, Nanoservices, Entity Service, Death Star — 경계가 네트워크가 되면서 증폭되는 안티패턴</description>
    </item>
    <item>
      <title>디자인 패턴 전에 알아야 할 안티패턴 — 3편: 계층과 모듈 구조</title>
      <link>https://www.donghanlab.com/posts/anti-patterns-layers-and-modules</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/anti-patterns-layers-and-modules</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Architecture Sinkhole, Cyclic Dependency, Leaky Abstraction, Anemic Domain Model, Inner-Platform Effect, Swiss Army Knife — 한 애플리케이션 안에서 계층과 모듈의 경계가 무너진 안티패턴</description>
    </item>
    <item>
      <title>패턴을 고르는 법 — 교환 조건의 계산</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-16-choosing-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-16-choosing-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>충돌하는 힘을 숫자로 적고, 팔 권한을 확인하고, 되돌리기 비용으로 정렬하는 선택 절차. 패턴이 안티패턴이 되는 세 경로와 판 것을 남기는 ADR. 시리즈 완결.</description>
    </item>
    <item>
      <title>운영을 패턴으로 — Health Check, Correlation ID, Leader Election</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-15-operational-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-15-operational-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Health Check, Graceful Shutdown, Correlation ID, Leader Election을 시스템이 자기 상태를 선언하는 장치로 본다. 프로브 설정이 정하는 시간, 로그 저장 비용, 펜싱 토큰 없는 락의 한계.</description>
    </item>
    <item>
      <title>변경을 안전하게 내보내기 — Sidecar, Feature Toggle, Expand-Contract</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-14-deployment-and-change-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-14-deployment-and-change-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>배포는 원자적이지 않다는 전제에서 나오는 Expand-Contract, Feature Toggle, Canary, Sidecar. 배포 3배·토글 조합 1,024가지·canary 검출 하한이라는 가격표와 만료일을 박은 토글.</description>
    </item>
    <item>
      <title>실패를 설계에 넣기 — Stability Patterns</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-13-stability-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-13-stability-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Nygard 계열 안정성 장치 여덟 개를 무엇을 막는가로 정리하고, 겹치는 순서와 설정값의 근거를 계산한다. 틀린 설정이 없는 것보다 나쁜 이유와 장치별 한계 이득.</description>
    </item>
    <item>
      <title>읽기와 쓰기를 가르다 — CQRS와 Event Sourcing</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-12-cqrs-and-event-sourcing</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-12-cqrs-and-event-sourcing</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>CQRS의 세 단계와 단계별 비용, CQRS와 별개인 Event Sourcing이 읽기 모델을 사실상 강제하는 이유. 투영 재구축 시간, 업캐스팅, 잊힐 권리와의 충돌.</description>
    </item>
    <item>
      <title>분산 쓰기의 정합성 — Saga, Transactional Outbox, Idempotent Receiver</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-11-saga-and-outbox</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-11-saga-and-outbox</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>원자성 대신 보상을 사는 Saga의 Orchestration과 Choreography 비교, 상태 머신으로 쓴 조정자, Outbox 폴링·정리 비용과 멱등성 키의 보관 기간.</description>
    </item>
    <item>
      <title>서비스 경계를 긋는 법 — Bounded Context와 분해 전략</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-10-service-decomposition</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-10-service-decomposition</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Bounded Context와 Context Mapping으로 경계를 긋고 커밋 로그의 동시 변경으로 후보를 검증한다. 조율 쌍 K(K−1)/2, 잘못 그은 경계의 수정 비용, Modular Monolith가 먼저인 이유.</description>
    </item>
    <item>
      <title>이질적인 것을 막아내는 벽 — Anticorruption Layer와 Strangler Fig</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-9-anticorruption-and-strangler</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-9-anticorruption-and-strangler</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>외부 모델을 한 곳에 가두는 Anticorruption Layer와 레거시를 조각내 대체하는 Strangler Fig. 번역 비용을 측정 가능하게 모으는 법과 전면 재작성이 더 싼 규모의 계산.</description>
    </item>
    <item>
      <title>메시지로 말하기 — Enterprise Integration Patterns</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-8-messaging-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-8-messaging-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Enterprise Integration Patterns 중 현역인 것들과 비동기 메시징이 파는 즉시성·순서·디버깅 가능성. 멱등 소비자와 DLQ 골격, 큐 대신 PostgreSQL 작업 테이블로 충분한 경우.</description>
    </item>
    <item>
      <title>원격 경계의 문법 — Remote Facade, DTO, API Composition, BFF</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-7-remote-boundary-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-7-remote-boundary-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>원격 경계에서 왕복 횟수·내부 구조 유출·흩어진 데이터·클라이언트별 요구를 다루는 네 패턴. 가용성 산술로 본 부분 실패 처리와 필드 하나당 늘어나는 매핑 지점.</description>
    </item>
    <item>
      <title>변하는 것을 갈아끼우기 — 백엔드에서 살아남은 GoF</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-6-gof-in-the-backend</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-6-gof-in-the-backend</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>GoF 23개 중 백엔드에서 살아남은 여덟 개의 서식지. Strategy와 Decorator를 클래스와 함수로 나란히 써 보고, 함수 버전이 사는 컴파일 타임 검사와 파는 발견 가능성을 비교한다.</description>
    </item>
    <item>
      <title>도메인을 말하는 어휘 — 값 객체, 엔티티, 애그리게이트, 도메인 이벤트</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-5-ddd-tactical-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-5-ddd-tactical-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>값 객체·엔티티·애그리게이트·도메인 이벤트가 검증 지점을 줄이는 방식. 애그리게이트 크기와 동시성 충돌의 교환, 판별 유니온 대안, 경계 없이 전술 패턴만 사면 손해인 이유.</description>
    </item>
    <item>
      <title>같은 말을 네 번 하는 그림들 — Layered, Hexagonal, Onion, Clean</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-4-hexagonal-and-friends</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-4-hexagonal-and-friends</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Layered·Hexagonal·Onion·Clean은 의존 방향이라는 한 규칙의 다른 그림이다. 의존성 역전을 클로저 하나로 구현하고, 유스케이스당 파일 7개와 필드당 8군데라는 가격표를 붙인다.</description>
    </item>
    <item>
      <title>영속성을 도메인에서 떼어내기 — Repository, Data Mapper, Unit of Work</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-3-persistence-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-3-persistence-patterns</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Repository만 넣고 Unit of Work를 빠뜨리면 트랜잭션 경계가 사라지는 이유. AsyncLocalStorage로 만든 최소 Unit of Work, Identity Map과 Lazy Load의 대가, 쓰기와 조회 경로의 분리.</description>
    </item>
    <item>
      <title>도메인 로직은 어디에 사는가 — Transaction Script, Domain Model, Table Module</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-2-where-domain-logic-lives</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-2-where-domain-logic-lives</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>같은 규칙을 쓰는 유스케이스 수 K로 Transaction Script와 Domain Model의 전환점을 계산하고, Node/TypeScript에서 Table Module이 성립하지 않는 이유를 따진다.</description>
    </item>
    <item>
      <title>패턴은 무엇을 파는가 — 해법이 아니라 교환 조건</title>
      <link>https://www.donghanlab.com/posts/backend-design-patterns-1-what-patterns-sell</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-design-patterns-1-what-patterns-sell</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>패턴을 해법이 아니라 교환 조건으로 읽는 법. 간접성·일관성·중복이라는 세 통화, Repository로 계산해 본 가격표, 그리고 16편 시리즈의 지도.</description>
    </item>
    <item>
      <title>효율적인 React 8편 — 측정하고 유지하기: 판단을 기계에 맡기고, 시리즈를 정리한다</title>
      <link>https://www.donghanlab.com/posts/efficient-react-8-measure-and-sustain</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-8-measure-and-sustain</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>한 번 빠르게 만든 코드는 다음 PR에서 다시 느려진다. 실제 사용자 환경의 측정, 성능 예산을 CI에 거는 법, lint로 판단을 기계화하는 법, 리뷰 질문, 기존 코드베이스에 적용하는 순서, 그리고 시리즈 총정리.</description>
    </item>
    <item>
      <title>효율적인 React 7편 — 경계와 번들: JS가 도착하기까지</title>
      <link>https://www.donghanlab.com/posts/efficient-react-7-boundaries-and-bundle</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-7-boundaries-and-bundle</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>JS는 받고, 해석하고, 실행하고, hydration해야 쓸모가 생긴다. &apos;use client&apos; 경계가 번들을 결정하는 방식, 코드 분할 단위, import 습관, 서드파티 스크립트, 이미지·폰트, hydration 불일치.</description>
    </item>
    <item>
      <title>효율적인 React 6편 — 반응성과 우선순위: 빠르게 만들 수 없으면 먼저 반응한다</title>
      <link>https://www.donghanlab.com/posts/efficient-react-6-responsiveness</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-6-responsiveness</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>계산을 더 줄일 수 없을 때 남는 방법은 우선순위다. INP의 세 구간, useTransition과 useDeferredValue의 선택 기준, 디바운스와의 차이, 긴 작업 쪼개기, 가상화의 대가, Activity로 화면 상태 보존하기.</description>
    </item>
    <item>
      <title>효율적인 React 5편 — 데이터 흐름 설계: 도착 순서를 트리와 함께 설계한다</title>
      <link>https://www.donghanlab.com/posts/efficient-react-5-data-flow</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-5-data-flow</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>사용자가 느끼는 지연의 대부분은 렌더가 아니라 데이터 도착 순서에서 생긴다. Waterfall이 생기는 세 경로, 요청을 위에서 병렬로 시작하는 법, Suspense 경계 배치 기준, 서버 컴포넌트와 클라이언트 캐시의 역할 분담, Actions와 useOptimistic.</description>
    </item>
    <item>
      <title>효율적인 React 4편 — Effect 없이 생각하기: 동기화와 이벤트를 구분하는 법</title>
      <link>https://www.donghanlab.com/posts/efficient-react-4-effects</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-4-effects</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>useEffect는 &apos;무언가 바뀌면 실행&apos;하는 도구가 아니라 &apos;화면이 존재하는 동안 외부 시스템과 맞추는&apos; 도구다. Effect가 필요 없는 일곱 가지 경우, 필요한 다섯 가지 경우, 의존성 배열을 줄이는 법, useEffectEvent.</description>
    </item>
    <item>
      <title>효율적인 React 3편 — 구조로 렌더 범위 줄이기: memo보다 먼저 할 일</title>
      <link>https://www.donghanlab.com/posts/efficient-react-3-render-scope</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-3-render-scope</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>렌더 반경을 사후에 막는 memo 대신, 반경이 처음부터 넓어지지 않게 하는 네 가지 구조 기법. 컴포넌트 정체성 규칙과 React Compiler가 바꾼 것, 바꾸지 못한 것.</description>
    </item>
    <item>
      <title>효율적인 React 2편 — 상태 설계: 적게, 올바른 자리에, 불가능한 조합 없이</title>
      <link>https://www.donghanlab.com/posts/efficient-react-2-state-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-2-state-design</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>state는 렌더의 원인이자 버그의 출처다. 최소 상태를 가려내는 세 질문, 파생값 계산, 상태 5분류와 각자의 자리, Colocation, 불가능한 상태를 타입으로 막는 법.</description>
    </item>
    <item>
      <title>효율적인 React 1편 — 비용 모델: React는 무엇에 비용을 쓰는가</title>
      <link>https://www.donghanlab.com/posts/efficient-react-1-cost-model</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/efficient-react-1-cost-model</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>렌더를 일으키는 원인 세 가지, 렌더가 전파되는 규칙, 전파가 멈추는 두 조건. 최적화 API를 꺼내기 전에 알아야 할 React의 비용 구조를 정리한다.</description>
    </item>
    <item>
      <title>디자인 패턴 전에 알아야 할 안티패턴 — 2편: 아키텍처와 프로세스</title>
      <link>https://www.donghanlab.com/posts/anti-patterns-architecture-and-process</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/anti-patterns-architecture-and-process</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Spaghetti Code, Big Ball of Mud, Lava Flow, Golden Hammer, Premature Optimization, Reinventing the Wheel — 시스템과 개발 문화 차원의 안티패턴</description>
    </item>
    <item>
      <title>디자인 패턴 전에 알아야 할 안티패턴 7가지</title>
      <link>https://www.donghanlab.com/posts/anti-patterns-before-design-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/anti-patterns-before-design-patterns</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
      <description>Magic Number, God Object, Long Method, Feature Envy, Shotgun Surgery, Primitive Obsession, Cargo Cult — 언어와 프레임워크를 가리지 않고 등장하는 대표 안티패턴 전체</description>
    </item>
    <item>
      <title>리눅스 명령어, 실무에서 진짜 자주 쓰는 것들 (4) — 터미널 에디터 지형도</title>
      <link>https://www.donghanlab.com/posts/linux-commands-4-terminal-editors</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/linux-commands-4-terminal-editors</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>vi, Vim, Neovim, nano는 뭐가 다른가. 계보와 설계 철학부터 실무에서 뭘 고를지, 폐쇄망 서버에 에디터를 어떻게 들고 갈지까지 정리한 터미널 에디터 전체 지형도.</description>
    </item>
    <item>
      <title>왜 같은 실수가 반복되는가 — 안티패턴의 생산 메커니즘</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-16-why-we-repeat-ourselves</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-16-why-we-repeat-ourselves</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>알려진 해법이 있는데도 같은 구조가 반복되는 이유. Conway의 법칙, 도구 우선 선택, 지연 도착하는 비용, 중앙화와 분산의 진자. 시리즈 완결.</description>
    </item>
    <item>
      <title>관측 불가능한 시스템 — 로그만 있는 분산 시스템</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-15-unobservable-system</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-15-unobservable-system</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>로그만 있는 분산 시스템에서 장애 원인을 못 찾는 이유. 로그·메트릭·트레이스의 역할 분담, Correlation ID, 카디널리티 폭발, 알림 피로.</description>
    </item>
    <item>
      <title>이벤트 루프를 막는 자 — Node.js 런타임 고유 안티패턴</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-14-blocking-the-event-loop</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-14-blocking-the-event-loop</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>CSV 내보내기 하나가 무관한 엔드포인트의 p99까지 올리는 이유. CPU가 이벤트 루프를 붙잡는 네 가지 통로, 동시성 없는 async, 스트림과 백프레셔.</description>
    </item>
    <item>
      <title>상태를 잊은 함수 — 서버리스 안티패턴</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-13-stateless-function-serverless</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-13-stateless-function-serverless</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>스케일 아웃된 함수가 DB 커넥션을 고갈시키는 이유, 콜드 스타트의 네 단계, Lambda Pinball, 그리고 서버리스가 오히려 정답인 경우.</description>
    </item>
    <item>
      <title>동기 호출 사슬과 장애 전파 — Retry Storm, Thundering Herd</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-12-retry-storm-thundering-herd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-12-retry-storm-thundering-herd</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>하위 서비스 하나가 느려지자 전체가 멈추는 동기 호출 사슬. 재시도 증폭, 캐시 동시 만료, 커넥션 풀 도미노와 각 방어책의 대가.</description>
    </item>
    <item>
      <title>Dual Write와 2PC의 유혹 — 분산 트랜잭션 안티패턴</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-11-dual-write-and-2pc</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-11-dual-write-and-2pc</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>DB 저장과 이벤트 발행을 나란히 쓰는 다섯 줄이 깨지는 방식, 2PC가 후퇴한 이유, Saga의 전제, Transactional Outbox와 멱등 소비자.</description>
    </item>
    <item>
      <title>Shared Database와 Entity Service — 경계를 데이터로 그을 때</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-10-shared-database-entity-service</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-10-shared-database-entity-service</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>컬럼 하나를 못 바꾸는 공유 DB와 명사로 쪼갠 Entity Service의 함정. 경계를 변경 이유로 긋고 데이터 중복을 결합도의 값으로 치르는 법.</description>
    </item>
    <item>
      <title>Distributed Monolith — 가장 비싼 실패</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-9-distributed-monolith</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-9-distributed-monolith</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>기능 하나에 서비스 일곱 개가 같은 날 배포되는 구조. 함께 바뀌는 것을 세어 진단하고 Modular Monolith로 후퇴하는 탈출 경로.</description>
    </item>
    <item>
      <title>계약의 붕괴 — Chatty Interface, 버전 없는 API, Over-fetching</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-8-contract-collapse</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-8-contract-collapse</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>Chatty Interface, 버전 없는 API, Over-fetching이 한 화면에 모이는 이유와 유스케이스 기반 엔드포인트·런타임 계약으로 계약을 고정하는 법.</description>
    </item>
    <item>
      <title>Fallacies of Distributed Computing — 네트워크를 함수 호출로 취급한 죄</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-7-fallacies-of-distributed-computing</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-7-fallacies-of-distributed-computing</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>네트워크 호출을 함수 호출처럼 쓴 대가. 분산 컴퓨팅의 여덟 가지 오류를 장애 시나리오로 번역하고 타임아웃·재시도·멱등성을 API의 1급 요소로 만든다.</description>
    </item>
    <item>
      <title>Smart Pipes, Dumb Endpoints — ESB 안티패턴</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-6-smart-pipes-dumb-endpoints</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-6-smart-pipes-dumb-endpoints</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>비즈니스 규칙이 게이트웨이 미들웨어에 숨는 순간. ESB의 실패가 API 게이트웨이로 되살아나는 구조와 게이트웨이의 책임을 문서로 고정하는 법.</description>
    </item>
    <item>
      <title>데이터베이스가 아키텍처가 될 때 — Smart DB와 DB-as-IPC</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-5-smart-db-as-architecture</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-5-smart-db-as-architecture</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>스토어드 프로시저에 로직이 숨은 Smart DB의 청구서, Oracle에서 PostgreSQL로 갈 때 돌아오는 비용, 무엇을 DB에 남길지의 기준.</description>
    </item>
    <item>
      <title>아무도 일하지 않는 계층 — Lasagna Architecture와 Leaky Layer</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-4-lasagna-architecture-leaky-layer</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-4-lasagna-architecture-leaky-layer</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>필드 하나에 파일 일곱 개를 건드리는 pass-through 계층과 새는 계층의 비용. 규칙은 계층 수가 아니라 의존 방향이다.</description>
    </item>
    <item>
      <title>Anemic Domain Model과 비대해진 Transaction Script</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-3-anemic-domain-model</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-3-anemic-domain-model</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>같은 검증이 세 곳에 흩어지는 Transaction Script의 한계와, 불변식을 타입으로 밀어 넣는 Parse, don&apos;t validate 접근.</description>
    </item>
    <item>
      <title>God Object와 Big Ball of Mud — 경계 없는 서버</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-2-god-object-big-ball-of-mud</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-2-god-object-big-ball-of-mud</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>나쁜 커밋 하나 없이 1,800줄 파일이 되는 과정. 응집도·결합도를 형용사가 아닌 기준으로 말하는 법과 이음매를 찾아 경계를 되살리는 순서.</description>
    </item>
    <item>
      <title>안티패턴이란 무엇인가 — 패턴의 그림자</title>
      <link>https://www.donghanlab.com/posts/backend-antipatterns-1-what-is-an-antipattern</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/backend-antipatterns-1-what-is-an-antipattern</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
      <description>안티패턴의 엄격한 정의(해법이 두 개 있어야 한다), 코드 스멜·실패 사례와의 구분, 판별 체크리스트, 그리고 16편 시리즈의 지도.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (7) — GoF 23개의 운명: 생존, 변형, 소멸</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-7-gof-in-frontend</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-7-gof-in-frontend</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>GoF 패턴 23개가 실제 프론트엔드 라이브러리 코드에서 어떤 모습으로 살아있는지 추적하고, 사라진 것들은 왜 사라졌는지 밝힌다. 시리즈 완결.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (6) — 폴더 구조는 의존성 규칙이다: FSD와 기계적 강제</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-6-architecture-fsd</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-6-architecture-fsd</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>폴더 구조 논쟁을 의존성 규칙 논쟁으로 환원한다. FSD 레이어 설계, 공개 API, 그리고 ESLint와 dependency-cruiser로 그 규칙을 CI에서 강제하는 법.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (5) — 상태의 4분류와 반응성 엔진 3종</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-5-state-and-reactivity</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-5-state-and-reactivity</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>서버/클라이언트/폼/URL 네 가지 상태를 가르는 실전 판단 기준과, VDOM diff·Proxy 추적·Signal 그래프 세 반응성 엔진의 내부 동작 비교.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (4) — Redux를 밑바닥부터: 타임트래블은 왜 공짜인가</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-4-redux-internals</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-4-redux-internals</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>40줄짜리 createStore를 직접 구현하며 구독 메커니즘, 미들웨어 체인(compose), Command 패턴, 타임트래블이 설계의 필연적 결과인 이유를 확인한다.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (3) — Headless 컴포넌트: 제어권을 설계한다</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-3-headless-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-3-headless-design</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>prop 15개짜리 드롭다운을 Compound Component → Control Props → State Reducer → Headless로 단계적으로 리팩터링하며 제어권 스펙트럼을 직접 만들어 본다.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (2) — 로직 재사용의 진화: Mixin에서 Hooks까지</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-2-logic-reuse</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-2-logic-reuse</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>하나의 요구사항을 Mixin, HOC, Render Props, Hooks 네 가지로 직접 리팩터링하며 각 전환의 이유를 체감한다. Hooks 내부의 연결 리스트와 의존성 배열의 정체까지.</description>
    </item>
    <item>
      <title>프론트엔드 디자인 패턴 (1) — 전체 지도: 상태는 어디에 사는가</title>
      <link>https://www.donghanlab.com/posts/frontend-design-patterns-1-overview</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-design-patterns-1-overview</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>jQuery부터 RSC까지, 프론트엔드 패턴의 역사를 하나의 질문으로 관통한다 — 상태는 어디에 살고, 변경은 어떻게 전파되며, 누가 그것을 소유하는가.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (9) — 조직과 프로세스: 안티패턴을 생산하는 공장</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-9-organization</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-9-organization</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>Cargo Cult, 이력서 주도 개발, 임시 코드의 영속성, 리팩터링 예산 부재. 코드 안에 없지만 코드를 만드는 안티패턴들과 시리즈 전체 정리.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (8) — 견고함: 거짓 안정감을 만드는 것들</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-8-robustness</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-8-robustness</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>에러 바운더리 부재로 인한 흰 화면, catch로 에러 삼키기, as와 any가 만드는 거짓 안정감, 런타임 검증 없는 API 신뢰, 그리고 깨지는데 아무도 안 읽는 테스트.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (7) — CSS와 접근성: 조용히 실패하는 것들</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-7-css-and-a11y</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-7-css-and-a11y</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>!important가 해결이 아니라 증거인 이유, z-index 인플레이션, 마진 소유권, 그리고 div 버튼부터 포커스 관리까지 예외를 던지지 않는 실패들.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (6) — 번들과 경계: 트리셰이킹은 왜 실패하는가</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-6-bundle-and-boundaries</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-6-bundle-and-boundaries</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>번들을 한 번도 열어보지 않는 것에서 시작해, 트리셰이킹이 실패하는 다섯 가지 이유, 코드 분할의 잘못된 단위, use client 커트라인, 그리고 환경변수를 통한 비밀 유출까지.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (5) — 네트워크와 실패 경로: 정상 경로만 짜고 배포하기</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-5-network-and-failure</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-5-network-and-failure</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>워터폴이 생기는 네 가지 경로, N+1 요청, 그리고 대부분의 코드에 빠져 있는 것 — 재시도, 타임아웃, 취소, 롤백. 실패 경로가 없는 코드는 완성된 것이 아니다.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (4) — 렌더링과 성능: 병목은 대개 리렌더가 아니다</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-4-rendering-performance</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-4-rendering-performance</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>React.memo 도배와 성능 방치는 같은 병이다. 실제 병목의 순서, Core Web Vitals가 잡아내는 안티패턴, 레이아웃 스래싱과 컴포지팅, 그리고 무엇을 어떤 도구로 측정할지.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (3) — 컴포넌트 설계: 성급한 추상화가 중복보다 비싼 이유</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-3-component-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-3-component-design</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>잘못된 추상화의 비용 곡선, God Component를 쪼개는 순서, 컴포넌트 안에서 컴포넌트를 정의할 때 입력값이 사라지는 이유, key={index}가 만드는 정체성 혼란.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (2) — 상태와 데이터 흐름: useEffect는 왜 계속 오용되는가</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-2-state-and-data-flow</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-2-state-and-data-flow</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>useEffect의 네 가지 오용을 해부하고, 왜 사람들이 계속 그렇게 쓰게 되는지 밝힌다. 파생 상태, props를 state로 복사, 성급한 전역화, boolean 상태 머신까지.</description>
    </item>
    <item>
      <title>프론트엔드 안티패턴 (1) — 안티패턴을 보는 눈: 비용 곡선과 되돌리기 비용</title>
      <link>https://www.donghanlab.com/posts/frontend-antipatterns-1-how-to-see</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/frontend-antipatterns-1-how-to-see</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>안티패턴은 실수가 아니라 구조다. 비용 곡선, 되돌리기 비용, 지연된 비용이라는 세 축으로 판단하는 법과, 지연된 비용을 즉시 아프게 만드는 측정 장치.</description>
    </item>
    <item>
      <title>리눅스 명령어, 실무에서 진짜 자주 쓰는 것들 (3) — 공유 라이브러리와 ldd</title>
      <link>https://www.donghanlab.com/posts/linux-commands-3-shared-libraries</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/linux-commands-3-shared-libraries</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>error while loading shared libraries가 떴을 때 무엇을 봐야 하는가. .so 파일의 정체, 동적 링커의 탐색 순서, ldd·readelf·LD_DEBUG로 의존성을 추적하는 법까지.</description>
    </item>
    <item>
      <title>리눅스 명령어, 실무에서 진짜 자주 쓰는 것들 (2) — 서버 운영편</title>
      <link>https://www.donghanlab.com/posts/linux-commands-2-server-ops</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/linux-commands-2-server-ops</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>서버가 죽었을 때 실제로 치는 명령어들. systemd, journalctl, 포트 점유 추적, 디스크 풀 대응, 컨테이너 운영까지 상황별로 정리.</description>
    </item>
    <item>
      <title>리눅스 명령어, 실무에서 진짜 자주 쓰는 것들 (1) — 기본편</title>
      <link>https://www.donghanlab.com/posts/linux-commands-1-basics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/linux-commands-1-basics</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <category>linux</category>
      <description>파일 탐색부터 텍스트 처리, 권한, 프로세스까지. 외우는 목록이 아니라 손에 붙는 순서로 정리한 리눅스 명령어 기본편.</description>
    </item>
    <item>
      <title>Sentry는 어떻게 에러를 잡아내는가 — yoyak 관측 설계 노트</title>
      <link>https://www.donghanlab.com/posts/yoyak-sentry-observability</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/yoyak-sentry-observability</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <category>projects</category>
      <description>AI 문서 요약 서비스 yoyak에 Sentry를 도입하기로 한 결정을 정리한다. 전역 핸들러·빌드 타임 래핑·이벤트 전송이라는 동작 원리부터, 이 프로젝트에서는 전제 조건인 개인정보 스크러빙 설계까지.</description>
    </item>
    <item>
      <title>도커의 본질 — 컨테이너를 맨손으로 만들며 이해하기</title>
      <link>https://www.donghanlab.com/posts/docker-deep-dive</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/docker-deep-dive</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <category>devops</category>
      <description>리눅스 namespace·cgroups·pivot_root만으로 컨테이너를 직접 만들어 보며, 도커가 자동화한 것이 무엇인지 본질부터 이해한다.</description>
    </item>
    <item>
      <title>JavaScript Proxy — Reflect와 실무 패턴 4가지</title>
      <link>https://www.donghanlab.com/posts/javascript-proxy-reflect-patterns</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/javascript-proxy-reflect-patterns</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <category>til</category>
      <description>Proxy의 단짝 Reflect의 역할과, 유효성 검사·읽기 전용·변경 감지·기본값 제공 실무 패턴을 정리합니다.</description>
    </item>
    <item>
      <title>JavaScript Proxy — target, handler, trap 동작 원리</title>
      <link>https://www.donghanlab.com/posts/javascript-proxy-mechanics</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/javascript-proxy-mechanics</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <category>til</category>
      <description>Proxy의 3요소인 target, handler, trap의 동작 원리와 receiver, Proxy.revocable()까지 정리합니다.</description>
    </item>
    <item>
      <title>JavaScript Proxy — 왜 필요한가?</title>
      <link>https://www.donghanlab.com/posts/javascript-proxy-why</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/javascript-proxy-why</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <category>til</category>
      <description>ES2015에서 도입된 Proxy가 해결하는 3가지 핵심 문제와 사용 판단 기준을 정리합니다.</description>
    </item>
    <item>
      <title>Suspense 경계는 어디에 그어야 하는가 — 실전 설계 기준 (번외편)</title>
      <link>https://www.donghanlab.com/posts/react-suspense-boundary-design</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-suspense-boundary-design</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>Suspense를 남용하지도, 방치하지도 않기 위한 실전 판단 기준을 정리합니다. 경계는 코드가 아니라 사용자가 화면을 읽는 구조를 따라갑니다.</description>
    </item>
    <item>
      <title>React 스트리밍 렌더링 — Suspense 경계가 응답을 쪼개는 절단선이 되기까지</title>
      <link>https://www.donghanlab.com/posts/react-streaming-rendering</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-streaming-rendering</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>RSC와 Suspense가 결합해 서버 렌더링 결과를 조각조각 스트리밍하는 방식과 Selective Hydration까지, 시리즈의 마지막 퍼즐을 맞춥니다.</description>
    </item>
    <item>
      <title>React Server Components — 렌더링을 어디서 할 것인가</title>
      <link>https://www.donghanlab.com/posts/react-server-components</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-server-components</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>SSR과 RSC의 차이, Server/Client Component의 경계 규칙, 그리고 children 패턴이 왜 중요한지 정리합니다.</description>
    </item>
    <item>
      <title>React Lane 내부 구현 — 비트마스크로 우선순위를 관리하는 법 (번외편)</title>
      <link>https://www.donghanlab.com/posts/react-lane-internals</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-lane-internals</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>React가 업데이트 우선순위를 31비트 정수 하나로 관리하는 방법과, 그 설계가 선택된 이유를 살펴봅니다.</description>
    </item>
    <item>
      <title>React Suspense — 데이터 로딩을 렌더링 시스템 안으로</title>
      <link>https://www.donghanlab.com/posts/react-suspense</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-suspense</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>Suspense가 어떤 문제를 풀고, Promise를 throw한다는 독특한 메커니즘이 동시성 렌더링과 어떻게 맞물리는지 정리합니다.</description>
    </item>
    <item>
      <title>React Fiber 아키텍처 — 렌더링을 멈추고, 재개하고, 버릴 수 있는 이유</title>
      <link>https://www.donghanlab.com/posts/react-fiber-architecture</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-fiber-architecture</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>React 16에서 도입된 Fiber 아키텍처가 왜 등장했고, 어떤 구조로 동시성 렌더링을 가능하게 하는지 정리합니다.</description>
    </item>
    <item>
      <title>React 렌더링 원리 — Virtual DOM, Reconciliation, 그리고 key</title>
      <link>https://www.donghanlab.com/posts/react-rendering-principles</link>
      <guid isPermaLink="true">https://www.donghanlab.com/posts/react-rendering-principles</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <category>frontend</category>
      <description>React가 UI를 어떻게 효율적으로 업데이트하는지, 그 내부 원리를 단계별로 정리합니다.</description>
    </item>
  </channel>
</rss>