티스토리 뷰

  • I/O : 컴퓨터 시스템이 외부의 입출력 장치들과 데이터를 주고 받는 것
    • 파일 I/O, DB I/O, 네트워크 I/O 등

3.1 Blocking I/O

  • 하나의 스레드가 I/O에 의해서 차단되어 대기하는 것

  • 멀티스레딩 기법으로 보완 가능하나 아래와 같은 문제점 존재
    • 컨텍스트 스위칭으로 인한 스레드 전환 비용
    • 과다한 메모리 사용으로 오버헤드 발생할 수 있음
    • 스레드 풀에서 응답 지연 발생할 수 있음

3.2 Non-Blocking I/O

  • 작업 스레드의 종료 여부와 관계없이 요청한 스레드는 차단되지 않음

  • 스레드 내부에 CPU를 많이 사용하는 작업이 포함된 경우에는 성능에 악영향을 줄 수 있음
  • 사용자의 요청에서 응답까지의 전체 과정에서 Blocking I/O 요소가 포함된 경우에는 Non-Blocking의 이점을 발휘하기 어려움

3.3 Spring Framework에서의 Blocking I/O와 Non-Blocking I/O

  • Blocking I/O 기반의 Spring MVC
  • Non-Blocking I/O 기반의 Spring WebFlux

3.4 Non-Blocking I/O 방식의 통신이 적합한 시스템

  • 대량의 요청 트래픽이 발생하는 시스템
    • 저비용 고성능
  • 마이크로 서비스 기반 시스템 
    • 수많은 I/O 지속적 발생
  • 스트리밍 또는 실시간 시스템
    • 무한 데이터 스트림 처리
  • 단, 학습 난이도와 경험 있는 개발 인력 확보 용이성 고려 필요
댓글