PHP 동작원리와 Node.js 비교 — 요청은 어떻게 처리되는가
PHP-FPM의 멀티프로세스 모델과 Node.js의 싱글스레드 이벤트루프는 요청을 완전히 다른 방식으로 처리합니다. 5년간 PHP로 결제 시스템을 개발하고 Node.js로 전환한 경험을 바탕으로, 두 런타임의 동작원리와 구조적 차이를 정리했습니다.
PHP-FPM의 멀티프로세스 모델과 Node.js의 싱글스레드 이벤트루프는 요청을 완전히 다른 방식으로 처리합니다. 5년간 PHP로 결제 시스템을 개발하고 Node.js로 전환한 경험을 바탕으로, 두 런타임의 동작원리와 구조적 차이를 정리했습니다.
Redis를 캐시로만 쓰다가 면접에서 "싱글 스레드인데 왜 빠른가?"라는 질문에 막힌 경험이 있습니다. 싱글 스레드 모델, 자료구조별 시간복잡도, RDB/AOF 영속성, 메모리 관리, Sentinel과 Cluster까지 — Redis 내부 원리를 한 글에 정리했습니다.
이커머스 플랫폼에서 대량 주문 취소를 처리하며 Redis를 메시지 브로커(Bull Queue)와 분산 락(RedLock)으로 활용한 경험입니다. concurrency 설정, 중복 방지, 실패 처리, Redis 장애 대응까지 — 실전에서 배운 것들을 정리했습니다.
Redis 단일 노드가 죽으면 서비스 전체가 멈춥니다. Sentinel은 자동 failover를, Cluster는 샤딩과 failover를 제공합니다. 각각의 동작 원리, 장애 복구 시나리오, 그리고 어떤 상황에서 무엇을 선택해야 하는지 정리했습니다.
Redis는 인메모리 데이터베이스이지만, 데이터를 디스크에 저장하는 두 가지 방식이 있습니다. RDB 스냅샷의 fork()와 COW 메커니즘, AOF의 fsync 정책, 그리고 Redis 4.0의 혼합 방식까지. 실무 선택 기준을 정리했습니다.
Redis가 싱글 스레드라는 말은 반만 맞습니다. 정확히 무엇이 싱글 스레드이고, I/O 멀티플렉싱은 어떻게 동작하며, Redis 6.0의 I/O 스레드는 무엇을 바꿨는지. 면접에서 "왜 빠른가?"에 확실히 답할 수 있도록 정리했습니다.
Ctrl+C를 누르면 서버 내부에서 무슨 일이 일어나는지 추적합니다. OS 시그널의 기초부터 Node.js와 NestJS에서의 Graceful Shutdown 구현, Docker 환경에서의 PID 1 문제까지 하나씩 따라가봅니다.
같은 package.json인데 npm, yarn, pnpm이 만드는 node_modules 구조가 다릅니다. nested에서 flat으로, 다시 symlink로 — 구조가 바뀌어 온 이유와 각 방식의 트레이드오프를 정리합니다.
1633개 패키지를 가진 실제 프로덕션 모노레포에서 Bun 마이그레이션을 검토했습니다. 네이티브 모듈 호환성부터 체감 속도 예측, 워크트리 설치 시간 실측까지, 벤치마크 숫자가 아닌 현실적인 분석을 정리했습니다.