Stack Overflow는 Node.js에서 발생하는가?
당연히 발생한다. 근데 진짜 질문은 그게 아니다. Node.js도 V8 엔진 위에서 돌아가는 JavaScript다. call stack이 있고, 함수를 호출하면 stack frame이 쌓이고, 너무 깊으면 터진다. function boom() { return boom(); } …
ARCHIVE
당연히 발생한다. 근데 진짜 질문은 그게 아니다. Node.js도 V8 엔진 위에서 돌아가는 JavaScript다. call stack이 있고, 함수를 호출하면 stack frame이 쌓이고, 너무 깊으면 터진다. function boom() { return boom(); } …
데이터베이스에서 트랜잭션이란 “여러 작업을 하나의 논리적 단위로 묶은 것"이다. 계좌이체를 생각하면 된다. A 계좌에서 빼고, B 계좌에 넣는다. 둘 중 하나만 되면 안 되니까 묶는다. 근데 문제는, 이런 트랜잭션이 동시에 여러 개 돌아갈 때다. 혼자 쓰면 아무 문제 …
같은 MVCC인데 왜 다를까 PostgreSQL이랑 MySQL(InnoDB)은 둘 다 MVCC(Multi-Version Concurrency Control)를 쓴다. MVCC는 간단히 말하면 “row를 수정할 때 기존 버전을 바로 덮어쓰지 않고, 새 버전을 만들어서 같이 보관 …
교차로 비유 신호등이 있는 교차로를 생각해보자. 신호등 있는 교차로 (Pessimistic): 🚗 A → [빨간불: 정지] ─── 기다림 ───→ [초록불] → 통과 │ 🚙 B → [초록불] → 통과 ─────────────────┘ 항상 한쪽만 통과. 충돌 확률 = 0%. 대신 아무도 …
문제: 상태를 공유하면 깨진다 동시성 프로그래밍에서 가장 흔한 버그는 뭘까? Race condition이다. 여러 작업이 같은 상태를 동시에 읽고 쓰면 결과를 예측할 수 없게 된다. 간단한 예시를 보자. 주식 가격 스트림을 받아서 이동평균을 계산하는 프로그램이다. import …
Node.js는 동시성에 몰빵한 런타임(!)이다. Python이 동시성과 병렬성을 분리하고, Go가 통합했다면, Node.js는 아예 처음부터 동시성 하나에 올인했다. “싱글스레드 + 이벤트 루프"라는 구조로, CPU 바운드는 과감하게 포기하고 I/O 동시성을 극한까 …
Concurrency vs Parallelism concurrency랑 parallelism은 여러 개의 작업을 동시에 돌리는 것이라고 이해하기 쉽지만 다르다. concurrency(동시성)은 여러 개의 작업의 진행 시간이 겹치도록(overlap) 하는 것이고, parallelism(병 …
Observable이란 무엇인가 프로그래밍에서 데이터를 다루는 방식은 크게 두 가지로 나뉜다. 하나는 pull 방식이다. 내가 필요할 때 데이터를 가져온다. 배열을 순회하거나, DB에 쿼리를 날리거나, API를 호출하는 것. 내가 주도권을 쥐고 있다. 다른 하나는 push 방식이다. 데 …