DB 설계 A to Z 4강 — ERD 표기법
Chen, IE(Crow's Foot), IDEF1X, Barker, UML 표기법을 대조하고 카디널리티를 반대로 읽는 실수를 막는 규칙, 개념 ERD와 물리 ERD를 분리하는 실무 팁을 정리한다.
210 posts · 10 categories · 2026
Chen, IE(Crow's Foot), IDEF1X, Barker, UML 표기법을 대조하고 카디널리티를 반대로 읽는 실수를 막는 규칙, 개념 ERD와 물리 ERD를 분리하는 실무 팁을 정리한다.
엔티티·속성·관계라는 ER 모델의 3요소, 엔티티와 속성의 종류, 카디널리티와 참여도 표기, 이항 관계 셋으로 분해되지 않는 삼항 관계, 재귀 관계까지 개념 설계의 판단 기준을 정리한다.
데이터·업무 규칙·처리·비기능 네 가지 수집 항목, 명사와 동사로 엔티티 후보를 뽑는 분석, 업무 규칙 분류표, 모호성을 없애는 질문 목록, CRUD 매트릭스와 볼륨·쿼리 프로파일, 용어 사전까지 설계의 첫 단계를 다룬다.
DB 설계를 요구사항·개념·논리·물리·구현 5단계로 나누는 이유, ANSI/SPARC 3층 스키마와 데이터 독립성, 그리고 서로 충돌하는 좋은 설계의 기준 다섯 가지를 쇼핑몰 주문항목 처리단계 예제로 정리한다. 시리즈 Part 1 "기초: 설계의 틀"의 첫 강이다.
sudo pm2 혼용부터 K8s 안에서 PM2로 스케일링까지 현장에서 반복되는 안티패턴 12가지를 증상·원인·해결로 정리하고, 설치부터 무중단·로그·보안까지 운영 셋업 체크리스트와 명령어 치트시트로 시리즈를 마무리한다.
컨테이너에서 PM2를 쓸지 말지의 판단 기준과 pm2-runtime, Nginx 리버스 프록시 구성, 인터넷이 없는 폐쇄망에서의 오프라인 설치 절차, 업그레이드 주의사항과 증상별 트러블슈팅.
npm 스크립트·TypeScript·Next.js·Bun·비 Node 앱을 PM2로 띄우는 방법, pm2 monit과 @pm2/io 커스텀 메트릭 및 외부 관측성 스택과의 역할 분담, Programmatic API, 그리고 pm2 deploy와 CI/CD 중 무엇을 고를지.
PM2 데몬과 PM2_HOME의 구조, fork와 cluster 모드의 차이와 클러스터가 불러오는 상태(State) 문제, restart와 reload의 결정적 차이, wait_ready와 graceful shutdown으로 요청 유실을 0으로 만드는 흐름.
watch 모드를 개발 전용으로 두는 이유, startup/save/resurrect로 만드는 부팅 영속성, 그리고 pm2-logrotate와 OS logrotate로 로그 디스크를 지키는 방법.
CLI 옵션을 ecosystem.config.js로 옮겨 재현 가능하게 만들고, env 블록과 --update-env 함정을 정리하며, 크래시 루프 방지·지수 백오프·메모리 기반 재시작·크론 재시작까지 재시작 정책을 의도적으로 설계한다.
node server.js가 운영에서 부딪히는 여섯 가지 문제, systemd·Docker와의 역할 비교, 설치와 첫 실행, 상태 조회부터 stop/delete/kill 구분까지 필수 명령어와 로그 기초.
JSX를 향한 초기 반발과 Pete Hunt의 반론, 그리고 다시 그리는 비용·로직 재사용·동기 렌더링·상태 관리·SSR·세밀한 갱신이라는 여섯 가지 대가와 그에 대한 대응의 연표.
Facebook의 읽지 않은 메시지 버그와 XHP, Jordan Walke의 질문에서 출발해 UI = f(state), 미니 Virtual DOM 구현, Reconciliation의 두 가정, 그리고 JSX·단방향 흐름 같은 함께 온 설계 결정까지.
서버가 HTML 전체를 다시 그리던 시대, 명령형 DOM API, AJAX와 jQuery가 남긴 네 가지 대가, 그리고 Backbone·Knockout·AngularJS가 갈라진 지점까지.
수십만 행을 메모리에 올리지 않고 내보내는 커서 스트리밍, 읽기 복제본과 복제 지연의 함정, 진행 중인 요청을 지키는 Graceful Shutdown, 그리고 요청 한 건의 타임라인과 운영 전 체크리스트로 시리즈를 닫는다.
DB 조회를 아예 하지 않는 캐싱 계층부터 Cache Stampede, 바깥이 길고 안쪽이 짧아야 하는 타임아웃 체인과 쿼리 취소, 에러를 계층 경계에서 번역하는 법, 그리고 요청 하나를 끝까지 추적하는 관측성까지.
트랜잭션이 하나의 연결 위에서만 성립하는 이유와 격리 수준, 커넥션 풀이 고갈되는 장애 시나리오와 사이징 기준, 그리고 EXPLAIN ANALYZE와 N+1과 OFFSET 페이지네이션까지 실무에서 터지는 지점들을 본다.
커넥션 풀에서 연결을 빌리는 순간부터 DB 안에서 파서와 플래너와 실행기가 움직이는 과정, 그리고 결과 행이 DTO와 JSON을 거쳐 상태 코드와 헤더를 달고 클라이언트로 나가기까지를 따라간다.
요청이 애플리케이션 서버 안으로 들어온 뒤의 이야기. 소켓에서 req 객체가 만들어지는 과정과 싱글 스레드가 동시 요청을 처리하는 원리, 미들웨어 파이프라인, 그리고 Controller에서 Service를 거쳐 Repository까지 내려가는 계층 구조를 본다.
버튼 하나를 누른 요청이 DB에 닿았다가 돌아오기까지의 전체 지도를 먼저 그린다. URL 해석과 DNS, TCP와 TLS 핸드셰이크, 그리고 로드밸런서와 리버스 프록시가 요청에 무엇을 더하는지까지.
blog92@web:~$ exit