본문 바로가기

자바/WAS

undertow

Java Servlet 3.1 표준과 WebSocket 을 구현하고 Http Upgrade를 지원

또한 서블릿 배포 환경에서 고성능 Non-Blocking 핸들러를 사용할 수 있음


I/O 부분은 JBoss 프로젝트 중 하나인 XNIO를 이용하여 처리함

Java로 작성된 유연하면서 고성능의 웹서버이며 NIO기반의 blogcking / Non-blocking API를 제공

컴포지션 아키텍처를 제공하여 작은 단위의 용도를 갖는 핸들러들을 연결하여 웹서버를 구축 할 수 있음

컴포지션 아키텍처는 Full Java EE Servlet 3.1 컨테이너에서 부터 Low Level의 Non-blocking 핸들러 또는 그 중간 수준의 기능을 선택을 할 수 있는 유연성을 제공해 줌

쉽게 사용할 수 있는 높은 수준의 Builder API를 통해 완전히 임베딩 할 수 있도록 설계되어 있음

Undertow의 라이프 사이클은 임베딩 애플리케이션에서 완벽하게 제어 할 수 있음


  • Lightweight
    • Core 라이브러리가 1.3MB 정도로 매우 작으며, 런타임에서 가볍게 동작함
    • 단순한 임베드 웹서버일 경우에는 10MB 이하의 힙 사이즈에서도 동작함
  • Http 업그레이드 지원
    • HTTP Upgrade를 사용하여 HTTP상에서 동작하는 다양한 프로토콜을 다중화함

      • EJB와 JMS 등 자체 프로토콜을 사용하는 서비스들을 Http를 통해 연결하여 리슨 포트수를 줄임
      • 이를 통해 클라우드 환경에서 사용되는 포트의 수를 줄여 동일한 시스템에서 더 많은 서버를 실행할 수 있음
      • VM 이나 컨테이너 환경에서 네트워크 포트관리가 어려울때 매우 유용함
  • 웹소켓 지원
    • JSR-356 을 포함한 웹소켓을 완벽하게 지원
  • Servlet 3.1 지원
    • 임베드 Servlet 을 포함한 Servlet 3.1 을 지원함. 이것은 servlet 과 native undertow non-blocking 핸들러를 결합하여 배포할 수 있게 함
  • 손쉬운 임베딩
    • 작은 코드로도 애플리케이션에서 undertow를 포함시킬 수 있으며, standalone으로 실행할 수 있음
  • 유연성
    • undertow 서버는 핸들러 체인을 통해 설정할 수 있음. 이것은 필요한 기능을 추가하고 제거하는데 있어서 사용하지 않은 것들에 대해서 신경 쓸 필요가 없게 해줌

[참조]


 http://www.opennaru.com/jboss/undertow-is-web-server-in-wildfly-and-jboss-eap7/

 http://undertow.io/