네티는 유지 관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기 위한 비동기식 이벤트 기반 네트워크 애플리케이션 프레임워크다.네티는 궁극적으로 프레임워크이며, 기술적 내용에 못지않게 아키텍처상의 접근법이나 설계 원칙도 중요한 요점이다.관심사의 분리(비즈
다수의 클라이언트가 동시에 서버로 연결되는 것을 볼 수 있다. 지원되는 클라이언트의 수는 이론상으로 이용 가능한 시스템 리소스의 양과 JDK 버전에 따른 제약 조건에 의해서만 제한된다.모든 네티 서버에는 다음 항목이 필요하다.이 컴포넌트는 클라이언트로부터 받은 데이터를
넓게 보면, 네티는 우리가 기술과 아키텍처라고 광범위하게 이야기하는 두 관심 영역의 문제를 모두 해결한다.자바 NIO 기반의 비동기식 이벤트 기반 구현을 이용해 고부하 조건에서도 애플리케이션 성능과 확장성을 최대한으로 보장한다.네티는 애플리케이션 논리를 네트워크 레이어
네트워크를 통해 전송되는 데이터는 모두 동일한 형식(바이트)이다. 바이트가 전송되는 구체적인 방법은 데이터 전송의 기본 메커니즘을 추상화하도록 도와주는 개념인 네트워크 전송에 의해 좌우된다. 사용자는 이러한 세부 사항에 신경 쓸 필요가 없고, 바이트를 안정적으로 전송
자바 NIO는 ByteBuffer라는 자체 바이트 컨테이너를 제공하지만 이 클래스는 사용하기 부담스럽다. 네티에서는 ByteBuffer를 JDK API의 제약을 해결하고 네트워크 애플리케이션 개발자에게 더 나은 API를 제공하는 강력한 구현인 ByteBuf가 있다.네티
Channel인터페이스는 ChannelHandler API와 밀접한 관계가 있으며 간단하지만 유용한 상태 모델을 정의한다.Channel 수명주기 상태다음에는 ChannelHandler 인터페이스에서 제공하는 수명주기 메소드가 나오는데, 이러한 메소드는 ChannelHa
스레딩 모델이란 간단히 말해, 운영체제, 프로그래밍 언어, 프레임워크 또는 애플리케이션의 맥락에서 스레드 관리에 대한 주요 측면을 정의하는 것을 의미한다. 스레드가 생성되는 방법과 시기는 애플리케이션 코드의 실행에 중요한 영향을 미치므로 개발자는 여러 모델의 장단점을
부트스트랩이란 애플리케이션을 실행하도록 구성하는 과정으로서, 특히 네트워크 애플리케이션의 경우 ㄷ이 정의처럼 단순하지 않은 단계를 거칠 수 있다.네티는 애플리케이션 아키텍처에 대한 접근 방식과 일관되게 애플리케이션이 클라이언트 또는 서버든 관계없이 네트워크 레이어로부터
ChannelHandler는 네티 애플리케이션에서 아주 중요한 요소이므로 개발 과정의 표준 단계로서 이를 철저하게 테스트해야 한다. 최상의 방법은 구현이 올바른지만 확인할 것이 아니라 코드를 수정했을 때 문제를 쉽게 식별할 수 있게 테스트를 구성하는 것이다. 이러한 테
모든 네트워크 애플리케이션은 피어 간에 전송되는 원시 바이트를 대상 프로그램의 데이터 포맷으로 구문 분석하고 변환하는 방법을 정의해야 한다. 이러한 변환 논리는 바이트 스트림을 한 포맷에서 다른 포맷으로 변환하는 인코더와 디코더로 구성된 코덱에 의해 처리된다. 특정 애
네티는 다양한 일반적인 프로토콜을 위한 코덱과 핸들러를 제공함으로써 지루한 작업에 필요한 시간과 노력을 크게 절약할 수 있게 해준다. 이번 장에서는 SSL/TLS와 웹소켓 지원을 비롯해 이러한 도구와 장점에 대해 알아보고 데이터 압축을 통해 HTTP의 성능을 최대한