시스템 디자인에서의 폴링

폴링은 클라이언트가 서버로부터 업데이트를 받을 수 있게 해줍니다. 이를 웨이터가 음식이 준비되었는지 확인하는 과정에 비유할 수 있습니다.

세 가지 주요 방식이 있습니다.

Short Polling

클라이언트가 정해진 간격으로 업데이트를 요청합니다. 데이터가 준비되지 않았다면 서버는 빈 응답을 보냅니다. 클라이언트는 데이터가 도착할 때까지 이 과정을 반복합니다. 이 방식은 불필요한 요청을 많이 생성합니다.

Long Polling

클라이언트가 요청을 보내면 서버는 이를 열어둔 상태로 유지합니다. 서버는 데이터가 준비되었을 때만 응답합니다. 클라이언트가 응답을 받으면 즉시 새로운 요청을 보냅니다. 이는 실시간에 가까운 느낌을 줍니다. Short Polling에 비해 빈 응답을 줄일 수 있습니다.

Event Stream

클라이언트와 서버가 단일 연결을 엽니다. 이 연결은 한쪽에서 닫을 때까지 유지됩니다. 서버는 이벤트가 발생할 때마다 클라이언트로 데이터를 푸시합니다. 이것이 진정한 실시간 통신입니다.

단점은 리소스 사용량입니다. 연결이 특정 포트를 점유합니다. 연결이 종료될 때까지 해당 포트는 다른 작업에 사용할 수 없습니다.

선택은 시스템의 요구 사항과 수용 가능한 트레이드오프(trade-offs)에 따라 달라집니다.

출처: https://dev.to/cibani_joe/polling-in-system-design-ph6