Netty Framework


네티는 전 세계에서 많은 개발자가 사용하는 범용 자바 네트워크 애플리케이션 프레임워크입니다.


다양한 오픈소스 프레임워크 내부에서 사용되고 있으며, 카카오/라인/애플/트위터 등 서비스 제공 업체에서도 사용됩니다.


네티는 Non-block 비동기 처리가 가능하기에 고성능으로 시스템을 유지할 수 있습니다.


또한, 상당 부분 프로그래머의 귀찮은 작업을 네티가 알아서 처리해줍니다.. ( 멀티 쓰레드 처리와 같은..)


훌륭하게도, 최소 10만 이상의 클라이언트의 접속이 가능합니다. 


Netty의 구조와 주요특징을 정확하게 알고 사용법을 익힌다면 , 효과적으로 네티 프레임워크를 사용할 수 있을 것입니다.




https://netty.io/


네티 공식 사이트에서 네티를 다음과 같이 정의하고 있습니다.



Netty는 비동기 이벤트 기반 네트워크 응용 프로그램 프레임 워크입니다.

유지 보수가 가능한 고성능 프로토콜 서버 및 클라이언트를 신속하게 개발할 수 있습니다.


Netty는 프로토콜 서버 및 클라이언트와 같은 네트워크 응용 프로그램을 빠르고 쉽게 개발할 수있는 NIO 클라이언트 서버 프레임 워크입니다.

 TCP 및 UDP 소켓 서버와 같은 네트워크 프로그래밍을 크게 간소화하고 간소화합니다.








주요 특징



네티 공식 홈페이지에선, 네티의 주요 특징을 첫줄에 정의하고 있습니다.

1. 비동기 이고 , 2. block&non-block 이 가능한, 3. 이벤트 기반 네트워크 프레임워크이다.





(1) 동기 / 비동기 처리 

- 동기: 특정 서비스를 호출하면 처리가 완료될 때까지 기다렸다가 결과를 받는 방식

-  비동기: 서비스를 호출하여 즉시 응답을 받고, 다른 작업을 하다가 처리가 완료되었는지 확인하여 결과를 받는 방식. NettryReactor 패턴 사용하고 있습니다.



(2)블로킹/논블로킹 소켓

블로킹 : read, write, accept 등의 메서드가 호출되면 완료될 때까지 쓰레드가 멈춤

- 논블로킹: 하나의 스레드로 여러 클라이언트 대응 가능




(3)이벤트 기반 프로그래밍

- 네트워크 이벤트의 주체는 소켓

- 데이터를 소켓에 전달하기 위해 데이터 핸들러 이용

- 로직 분리, 코드 재사용성 증가, 에러 처리 부담 완화


이벤트의 예) 연결 요청 , 데이터 전송, 데이터 수신







=> 다음과 같은 3가지 특징과 구조를 생각하며 , 네티를 사용한다면 조금 더 구조적으로 혹은 단계적으로 손쉽게 접근이 가능 할 것 같습니다.




참고

- https://netty.io/

- 자바 네트워크 소녀 Netty 

















+ Recent posts