I/O 멀티플렉싱 모델
여러 소켓을 동시에 다룰 때 핵심은 스레드를 연결마다 늘리는 것이 아니라, 커널이 준비 완료 이벤트만 알려 주게 만드는 것입니다.
관찰 등록
non-blocking 소켓과 read/write 관심사를 select, poll, epoll, kqueue에 등록합니다.
준비 대기
커널이 준비된 fd 목록을 돌려줄 때까지 잠들고, timeout으로 정체를 감지합니다.
짧게 처리
EAGAIN이 나올 때까지 짧게 처리하고, CPU 작업은 이벤트 루프 밖으로 뺍니다.
관심 변경
송신 버퍼가 비었거나 닫힘을 감지하면 관심 이벤트와 연결 상태를 갱신합니다.
콜백 하나가 DB 호출이나 파일 I/O로 막히면 준비된 다른 fd도 대기합니다.
fd별 상태 머신, backpressure, partial read/write 처리를 먼저 설계합니다.
연결 수가 늘어도 스레드 수와 컨텍스트 스위칭이 완만하면 모델이 맞습니다.