b.log()

프론트엔드부터
인프라까지,
배운 것을 기록합니다.

210 posts · 10 categories · 2026

61

DB 설계 A to Z 4강 — ERD 표기법

Chen, IE(Crow's Foot), IDEF1X, Barker, UML 표기법을 대조하고 카디널리티를 반대로 읽는 실수를 막는 규칙, 개념 ERD와 물리 ERD를 분리하는 실무 팁을 정리한다.

2026-09-17
[database]
db-design-04-erd-notation.md
62

DB 설계 A to Z 3강 — 개념 모델링 (ER 모델)

엔티티·속성·관계라는 ER 모델의 3요소, 엔티티와 속성의 종류, 카디널리티와 참여도 표기, 이항 관계 셋으로 분해되지 않는 삼항 관계, 재귀 관계까지 개념 설계의 판단 기준을 정리한다.

2026-09-17
[database]
db-design-03-conceptual-modeling.md
63

DB 설계 A to Z 2강 — 요구사항 분석

데이터·업무 규칙·처리·비기능 네 가지 수집 항목, 명사와 동사로 엔티티 후보를 뽑는 분석, 업무 규칙 분류표, 모호성을 없애는 질문 목록, CRUD 매트릭스와 볼륨·쿼리 프로파일, 용어 사전까지 설계의 첫 단계를 다룬다.

2026-09-17
[database]
db-design-02-requirements.md
64

DB 설계 A to Z 1강 — 설계란 무엇인가

DB 설계를 요구사항·개념·논리·물리·구현 5단계로 나누는 이유, ANSI/SPARC 3층 스키마와 데이터 독립성, 그리고 서로 충돌하는 좋은 설계의 기준 다섯 가지를 쇼핑몰 주문항목 처리단계 예제로 정리한다. 시리즈 Part 1 "기초: 설계의 틀"의 첫 강이다.

2026-09-17
[database]
db-design-01-what-is-design.md
65

PM2 완전 정복 7편 — 안티패턴 12선과 운영 체크리스트

sudo pm2 혼용부터 K8s 안에서 PM2로 스케일링까지 현장에서 반복되는 안티패턴 12가지를 증상·원인·해결로 정리하고, 설치부터 무중단·로그·보안까지 운영 셋업 체크리스트와 명령어 치트시트로 시리즈를 마무리한다.

2026-09-17
[devops]
pm2-07-antipatterns-checklist.md
66

PM2 완전 정복 6편 — Docker, Nginx, 폐쇄망에서 PM2를 운영하기

컨테이너에서 PM2를 쓸지 말지의 판단 기준과 pm2-runtime, Nginx 리버스 프록시 구성, 인터넷이 없는 폐쇄망에서의 오프라인 설치 절차, 업그레이드 주의사항과 증상별 트러블슈팅.

2026-09-17
[devops]
pm2-06-docker-nginx-airgap.md
67

PM2 완전 정복 5편 — 무엇이든 띄우고, 지켜보고, 배포하기

npm 스크립트·TypeScript·Next.js·Bun·비 Node 앱을 PM2로 띄우는 방법, pm2 monit과 @pm2/io 커스텀 메트릭 및 외부 관측성 스택과의 역할 분담, Programmatic API, 그리고 pm2 deploy와 CI/CD 중 무엇을 고를지.

2026-09-17
[devops]
pm2-05-monitoring-and-deploy.md
68

PM2 완전 정복 4편 — God Daemon과 클러스터 모드, 그리고 진짜 무중단 재시작

PM2 데몬과 PM2_HOME의 구조, fork와 cluster 모드의 차이와 클러스터가 불러오는 상태(State) 문제, restart와 reload의 결정적 차이, wait_ready와 graceful shutdown으로 요청 유실을 0으로 만드는 흐름.

2026-09-17
[devops]
pm2-04-internals-and-cluster.md
69

PM2 완전 정복 3편 — 재부팅에도 살아남는 프로세스와 로그 운영

watch 모드를 개발 전용으로 두는 이유, startup/save/resurrect로 만드는 부팅 영속성, 그리고 pm2-logrotate와 OS logrotate로 로그 디스크를 지키는 방법.

2026-09-17
[devops]
pm2-03-startup-and-log-ops.md
70

PM2 완전 정복 2편 — Ecosystem 파일로 설정을 선언하고 재시작을 설계한다

CLI 옵션을 ecosystem.config.js로 옮겨 재현 가능하게 만들고, env 블록과 --update-env 함정을 정리하며, 크래시 루프 방지·지수 백오프·메모리 기반 재시작·크론 재시작까지 재시작 정책을 의도적으로 설계한다.

2026-09-17
[devops]
pm2-02-ecosystem-and-restart.md
71

PM2 완전 정복 1편 — 프로세스 매니저가 필요한 이유와 첫 실행

node server.js가 운영에서 부딪히는 여섯 가지 문제, systemd·Docker와의 역할 비교, 설치와 첫 실행, 상태 조회부터 stop/delete/kill 구분까지 필수 명령어와 로그 기초.

2026-09-17
[devops]
pm2-01-why-and-basics.md
72

React의 탄생 3편 — 치른 대가와 그 이후의 진화

JSX를 향한 초기 반발과 Pete Hunt의 반론, 그리고 다시 그리는 비용·로직 재사용·동기 렌더링·상태 관리·SSR·세밀한 갱신이라는 여섯 가지 대가와 그에 대한 대응의 연표.

2026-09-17
[frontend]
why-react-was-born-03-cost-and-after.md
73

React의 탄생 2편 — "전부 다시 그린다"는 발상과 Virtual DOM

Facebook의 읽지 않은 메시지 버그와 XHP, Jordan Walke의 질문에서 출발해 UI = f(state), 미니 Virtual DOM 구현, Reconciliation의 두 가정, 그리고 JSX·단방향 흐름 같은 함께 온 설계 결정까지.

2026-09-17
[frontend]
why-react-was-born-02-the-idea.md
74

React의 탄생 1편 — 서버 렌더링부터 MV* 프레임워크까지

서버가 HTML 전체를 다시 그리던 시대, 명령형 DOM API, AJAX와 jQuery가 남긴 네 가지 대가, 그리고 Backbone·Knockout·AngularJS가 갈라진 지점까지.

2026-09-17
[frontend]
why-react-was-born-01-before-react.md
75

요청 한 건의 일생 6편 — 스트리밍과 읽기 복제본, 마지막 요청까지 지키는 종료

수십만 행을 메모리에 올리지 않고 내보내는 커서 스트리밍, 읽기 복제본과 복제 지연의 함정, 진행 중인 요청을 지키는 Graceful Shutdown, 그리고 요청 한 건의 타임라인과 운영 전 체크리스트로 시리즈를 닫는다.

2026-09-17
[backend]
request-lifecycle-06-scale-and-shutdown.md
76

요청 한 건의 일생 5편 — 캐시와 타임아웃, 에러와 추적으로 파이프라인을 지키는 법

DB 조회를 아예 하지 않는 캐싱 계층부터 Cache Stampede, 바깥이 길고 안쪽이 짧아야 하는 타임아웃 체인과 쿼리 취소, 에러를 계층 경계에서 번역하는 법, 그리고 요청 하나를 끝까지 추적하는 관측성까지.

2026-09-17
[backend]
request-lifecycle-05-cache-timeout-observability.md
77

요청 한 건의 일생 4편 — 트랜잭션과 커넥션 풀, 부하에서 먼저 무너지는 지점

트랜잭션이 하나의 연결 위에서만 성립하는 이유와 격리 수준, 커넥션 풀이 고갈되는 장애 시나리오와 사이징 기준, 그리고 EXPLAIN ANALYZE와 N+1과 OFFSET 페이지네이션까지 실무에서 터지는 지점들을 본다.

2026-09-17
[backend]
request-lifecycle-04-transaction-and-pool.md
78

요청 한 건의 일생 3편 — 커넥션 풀을 지나 DB에 닿았다가 JSON으로 돌아오기까지

커넥션 풀에서 연결을 빌리는 순간부터 DB 안에서 파서와 플래너와 실행기가 움직이는 과정, 그리고 결과 행이 DTO와 JSON을 거쳐 상태 코드와 헤더를 달고 클라이언트로 나가기까지를 따라간다.

2026-09-17
[backend]
request-lifecycle-03-db-and-response.md
79

요청 한 건의 일생 2편 — Node.js는 요청을 받아 어떤 계층으로 흘려보내는가

요청이 애플리케이션 서버 안으로 들어온 뒤의 이야기. 소켓에서 req 객체가 만들어지는 과정과 싱글 스레드가 동시 요청을 처리하는 원리, 미들웨어 파이프라인, 그리고 Controller에서 Service를 거쳐 Repository까지 내려가는 계층 구조를 본다.

2026-09-17
[backend]
request-lifecycle-02-app-entry.md
80

요청 한 건의 일생 1편 — 요청은 브라우저를 떠나 어디를 지나 서버에 닿는가

버튼 하나를 누른 요청이 DB에 닿았다가 돌아오기까지의 전체 지도를 먼저 그린다. URL 해석과 DNS, TCP와 TLS 핸드셰이크, 그리고 로드밸런서와 리버스 프록시가 요청에 무엇을 더하는지까지.

2026-09-17
[backend]
request-lifecycle-01-the-map.md

blog92@web:~$ exit