버텍스(Vert.x)란?, Vertx개요및특징

2024. 3. 19. 15:53젬스it

반응형


버텍스(Vert.x)란?, Vertx개요및특징
1. Vert.x 개요, 특징

1-1. 버텍스(Vert.x) 개요


n  버텍스(Vert.x)는 JVM에서 동작하는 폴리글랏(Polyglot, 여러가지언어로 개발가능하다), 넌 블로킹(Non-Blocking), 이벤트기반(Event-Driven) 비동기 서버 프레임워크다.
n  2011년 팀 폭스(Tim Fox)에 의해 시작되어VMware의 지원속에 발전하다가 지금은 Eclipse Foundation에서 관리하고있다.
n  JAX Innovation awards 2014에서 Most Innovative JavaTechnology 부문 수상한 이벤트 기반 비동기 프로그래밍(EAP)의 대표 모델이다.
n  Node.js와 같이 이벤트 기반이지만 싱글쓰레드로 동작하는 Node.js와달리 멀티 스레드로 동작한다.
n  Vert.x는 Node.js에서 출발한 프로젝트로Node.js를 접해본 개발자라면 쉽게 적응 할 수 있다. Node.js는라어언 달(Ryan Dahl)에 의해 2009년부터 시작된프로젝트로 Vert.x보다 앞서 관심을 불러일으켰고 현재 Vert.x보다많은 에코 시스템을 보유하고 있다.


1-2. 버텍스(Vert.x) 특징


n  현대는 바야흐로 IoT(Internet OfThings) 시대이다. 수많은 기기가 센서를 통해 외부를 인지하고 정보를 수집하고, 수집된 정보를 네트워크를 통해 다른 기기, 인터넷 등으로 전송한다. IoT기기에 네트워크 기능이 없다면 기능이 제한적일 것이며 이 네트워크 기술이 IoT 시대의 중요한 특징이다. 따라서 수많은 IoT 기기에 연결되고 이기기와 정보를 효과적으로 처리하기 위해서는 새로운 형태의 응용프로그램 개발 모델이 필요하다.
n  전통적으로 이러한 요구사항 처리를 위해 멀티 쓰레드 프로그래밍을 했으며 이러한 경우많은 기기들을 상대한다면 시스템 자원을 많이 소모할 것이다. 버텍스는 이러한 단점을 극복하고 싱글 쓰레드처럼개발하지만 다수의 클라이언트를 처리할 수 있는 강력한 방법(Multireactor)을 제공한다. 최소의 OS 쓰레드를 이용하여 수십 ~ 수백만 이상의 동시 사용자 접속을 처리할 수 있는 비동기, 이벤트중심의 프로그래밍 모델이다.
n  Vert.x는 다양한 언어를 지원하는 폴리글랏(Polyglot)애플리케이션 플랫폼이다. 자바(Java), 자바스크립트(JavaScript), 루비(Ruby), 파이썬(Python), 그루비(Groovy), 클로저(Clojure), 그레일스(Grails), 스칼라(Scala)등 다양한 언어를 지원하며 2개 언어 이상으로도 개발 가능하다. 자바 기반이므로 Node.js와 비교되지 않을 정도의 자바 레퍼런스및 서드파티 라이브러리를 그대로 이용할 수 있으므로 자바 개발자에게 상당히 매력적이다. 자세한 사항은버텍스 공식 홈페이지에서 확인하자. (http://www.vertx.io/docs.html)
n  충분히 검증된 JVM(Java VirtualMachine) 기반 위에서 작동하므로 JVM의 안정성과 성능을  담고 있지만 기존 자바라이브러리를 가지고와서 사용할 때 주의할 점은 JDBC API 처럼 쓰레드를 블로킹 하는 API를 이벤트 루프 쓰레드 내에서 사용하면 안된다는 것이다. 이러한 API는 Worker Verticle 이라는 이벤트 루트 쓰레드와는별도로 관리되는 Worker 쓰레드 풀을 이용해야 한다.
n  Vert.x는 웹프레임워크가 아니며 어떤 종류의 확장성 있는 네트워크 애플리케이션이라도 쉡게구축할 수 있게 해주는 플랫폼으로 Node.js와 비슷하다.Vert.x를 이용하여 웹애플리케이션 뿐아니라 비트토렌트(BitTorrent) 클라이언트부터실시간 응용프로그램, 전자상거래 시스템까지 어떠한 종류의 응용프로그램도 만들 수 있다.
n  근래에 주목받는 기술중 웹소켓(WebSocket)이있는데 HTML5에 포함된 웹소켓은 웹브라우저와 웹서버 사이의 양방향 통신을 지원하는 차세대 표준이며웹응용프로그램의 반응성을 개선하여 기존 Ajax에 기반을 둔 대화형 웹응용프로그램을 훨씬 뛰어 넘는역동적인 웹프로그램을 개발가능 하도록 한다. Vert.x는WebSocket을 지원하고 있으며 더해서 에뮬레이터중 하나인 SockJS로좀 더 편하게웹응용프로그램을 개발할 수 있도록 API를 제공한다.
n  간단한 설정만으로 서버 클러스터링을 구형할 수 있으며 실시간 웹 응용프로그램에서 가장많이 사용하는 웹소켓을 지원해 간단히 서버 푸시 애플리케이션을 만들 수 있다.
n  네트웍상의 다른 JVM에서 동작하는 Vert.x를 클러스터로 간단히 구성가능하며 동일한 클러스터에 묵인 Vert.x끼리이벤트 버스를 통해 String, JSON, Byte Buffer 형태의 메시지를 주고 받을 수 있다.SockJS Event Bus Bridge를 사용한다면 클라이언트의 웹브라우저가지 대규모 클러스터에 참여 시킬수 있다.
n  실시간 웹 애플리케이션을 개발하기 위한 기술은 다양하다. Node.js, 미티어(Meteor), 루비의 이벤트 머신, 자바 EE 7 부터 지원하는 웹 소켓 등 많지만 Vert.x의 기능 역시 매력적이다.
n  Vert.x는 단순하다. 버텍스 응용프로그램은 느슨하게연결된 하나 이상의 컴포넌트로 만들어 지며 이들 애플리케이션은 병렬로 실행된다. 개발자는 마치 싱글쓰레드인 것 처럼 코드를 작성하고 시스템의 다른 부분과 비동기적으로 통신만 하면 된다. 이러한 관점에서 Vert.x는 액터 기반 시스템과 유사하다. Node.js에서는 JavaScript 실행 엔진이 멀티 스레드를 지원하지 않으므로 모든 CPU를사용하려면 JavaScript 프로그램을 여러 개 실행해야 했었다.
n  보통 네트워크 서버를 만들때는 멀티쓰레드로 만들어야 하고 자원의 공유, 락 문제를 고려해야 했는데 버텍스를 이용한다면 이벤트 기반으로 서버 프로그래밍을 할 수 있어 개발이 편하고싱글 쓰레드로 동작하는 프로그램처럼 작성해도 강력한 성능의 서버를 구성할 수 있게 해준다.
n vert.x는 하나의 서버 프로세스 데몬을 만드는 것에 한정되지 않으며 여러 서버 프로그램이 서로 원활하게 통신하게 하는 것까지 가능하도록 이벤트 버스(Event Bus)를 제공한다. 즉 Point to Point나 Pub/Sub 같은 MQ 기능을 사용할 수 있다. 이러한 이벤트 버스 때문에 에 서로 다른 언어로 작성된 서버 애플리케이션들이 쉽게 통신할 수 있다.
n  Vert.x는 웹응용프로그램은 물론 P2P, 로드밸런서, 프록시 서버등 이벤트 기반이 필요한 어떠한 상황에도 적용될 수 있으며 심지어 임베디드 방식을사용한다면 기본 자바 응용프로그램에서도 Vert.x 기능을 활용할 수 있다.


반응형