Skip to Content
Suffering builds character
아카이브23.스프링 웹플럭스Java NIO, 네티네티1.Java NIO만으로 구현한 경우

1.Java NIO만으로 구현한 경우

java.NIO 패키지만 가지고 논블로킹 기반의 네트워크 서버 프로그램을 구현하기 위해서는 다음과 같은 차이가 존재함

1. 저수준(Low-level)의 처리 로직 구현 및 지식 필요

앞서 각각 블로킹 및 논블로킹 소켓으로 네트워크 프로그램을 구현해보았음

블로킹은 소켓으로, 논블로킹은 소켓채널로 구현했기 때문에 네트워크 입출력을 구현하기 위한 메서드 및 동작 방식이 다름

만약 운영 중인 프로그램의 블로킹을 논블로킹으로 변경하려면 구현한 소스 코드를 변경해야 함

2. 낮은 유지보수성

만약 소켓에 문제가 발생하거나 연결된 스트림에 문제가 발생하면
새로운 소켓을 생성하고 데이터를 전송하는 예외 처리 코드를 작성해야 함

네트워크 통신은 다양한 상황에서 문제가 발생할 수 있는데,
서버에서 데이터를 수신 대기하는 상황에서 발생하는 오류나
서버에 연결을 시도하는 과정에서 발생하는 오류 등 다양한 상황별로 예외처리가 필요할 수 있음

또한 이러한 코드는 데이터 송신 및 수신 처리 로직 사이사이에 구현해야 하며, 결과적으로 이러한 프로그램 구조는 코드의 중복을 증가시키고, 디버깅도 어려워지게 만듦

Last updated on