비동기 네트워크 서버 프레임워크 Vert.x - 개요, 실습

2016. 3. 18. 18:43Java/Vert.x

조대협님의 블로그에 정리가 참 잘되어 있다. :  http://bcho.tistory.com/860
솔까말, 정리 참 이해하기 쉽게 잘 해놨다.
전체적으로 읽어 본 후에, 다시 http://d2.naver.com/helloworld/163784 에 정리해 놓은 것도 읽구요
마지막으로 http://vertx.io/docs/ 에 문서를 찬찬히 읽어 봤습니다.

블로그에는 아래 내용은 올리지 않을 예정임 --> 전체적인 정리는 Evernote에만 정리했음... 제목만 올려 놓겠습니다. 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 서문
2. Vert.x 특징 들여다 보기
2-1. 내부 컴포넌트 구성
2-2 다양한 언어 지원
2-3 클러스터링 지원
2-4. 멀티 인스턴스 지원을 통해 Node.js 보다 빠른 성능
2-5 Embedded Vert.x
2-6. Super Simple Concurrency model
2-7. Event Bus 제공
2-8 Module System & Public Module Repository
3. vert.x 개념 잡기
3-1 Verticle
3-2. Vert.x instance
3-3. Verticle Instance
3-4. Worker Verticle
3-5 Worker Verticle Instance & Thread Pooling
3-6 Event Bus
3-7 Shared data 처리
3-8 Module
3-9 Pumping
3-10 HA (High Availibitity)
3-11. Clustering
Message Passing
vert.x Core
Vert.x 아키텍처 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vert.x is a tool-kit for building reactive application on the JVM 



Vert.x is a tool-kit for building reactive application on the JVM 


Vert.x examples

이 저장소는 예제들을 나열하고 있습니다. 그래서 여러분은 Vert.x를 쉽게 일으키고 동작하게 할 수 있습니다.


Maven users

Maven을 사용하는 간단한 Vert.x 프로젝트를 어떻게 세팅하는지를 보여주는 최고로 간단한 Maven 예제를 시작하겠습니다.
여러분은 Java 8 이 설치 되어 있어야 하구요, JAVA_HOME 환경 변수에 Java 8  설치된 곳을 지정해주시면 됩니다.

Vert.x를 포함한 Maven Project를 셋업한 템플릿을 사용하요.

Maven 프로젝트에서 verticle로써 여러분의 코드가 어떻게 배포되는 지를 보여주는 간단 Maven verticle 예제를 진행하세요 

또한 Groovy,Ruby 그리고 JavaScript verticles과 함께 메이븐을 어떻게 사용할수 있는지를 보여주는 Maven verticle 예제를 체크하세요.

Gradle users

Gradle을 사용하는 간단한 simple Vert.x 를 어떻게 셋업하는지를 보여주는 예제

Vert.x을 가지고 Gradle Project를 셋팅하기 위한 템플릿으로 사용하세요.
Gradle 프로젝트상에서 verticle로써 여러분을 코드를 배포하는 방법에 대해서 보여주는 아래 예제를 통해 전진하시래요.


Neither Maven nor Gradle User

Maven 이나 Gradle 을 사용하지 않는 사용자들에게도 역시 제공합니다.
Vert.x가 설치된  상황에서는 vertx run 이라는 컴앤드 라인에 대부분의 예제를 구동 시킬 수 있습니다.

Some examples need example-utils

examples-utils가 필요한 예제들을 찾을지도 모르겠네요.
여러분은 아래 링크로 부터 빌드할 필요가 있답니다.

cd vertx-example
cd examples-utils
mvn clean install

The examples


이 예제들은 Vert.x core, Vert.x-Web 그리고 다양한 다른 서비스들과 기능들이 포함된 Vert.x 의 모든 다른 부분들을 어떻게 사용하는지에 대한 방법을 설명합니다.
대부분의 예제는 Vertices로써 작성되어졌습니다.
verticles상에 대한 보다 많은 정보는 Vert.x core 메뉴얼에서 참고하세요.

verticle들을 사용하는것은 여러분들에게 컴앤드 라인상에서 보다 쉽게 여러분의 코드를 확장하고 가동하도록 하는데, 만약 여러분이 내장한 것을 더 좋아하면,
verticles 안에 있는 정확하게 같은 코드는 여러분이 좋아하는 내장된 것에서 가동되어 질수 있습니다.
이건 정말 여러분에 달려 있습니다.
Verticle들은 완전하게 Vert.x안에서 선택적입니다.  

Different languages


Vert.x 가 지원하는 모든 언어들안에서 대부분의 예제가 이용가능합니다.
여러분은 src/main/${lang} 디렉토리안에서 상대적인 어어를 윈한 예제를 찾을수 있을 것 입니다. 
lang은 java,js,ruby 등등의 언어들을 위한 구분자 입니다.

예를 들어, 여러분은 Vert.x core Java 예제들을 core-example/src/main/java 에서 찾을 수 있고, 여러분은 Vert.x core JavaScript 예제를 core-examples/src/main/js안에서 찾을수 있습니다.

NOTE
Java가 아닌 모든 예제는 자동으로 우리 마법 코드 변환기를 사용하여 Java 예제들로 부터 생성되어집니다.

Running the examples


Running in your IDE

대부분의 Java 예제들은 직접적으로 여러분의 IDE(if you have one!) 에서 가동되어 질수 있습니다.
우리는 대부분의 예제 클래스들상에서  여러분의 IDE 에서 직접 그것들을 편리하게 구동시키기 하는  main() 메소드를 제공합니다.
메인 메소드를 그냥 우측 클릭 하거나, IDE 에서 run as ... application 하면 됩니다.( 모든 주요 IDE에서 지원됩니다.)

Running at the command line

vertx 가 설치되었다면, 어떤 verticle이든 직접 컴앤드 라인에서 실행 할 수 있습니다.
이 동작하는 방법은 maven 이나 gradle 또는 IDE를 사용하지 않는 다라면, 여러분에게 흥미있을수 있습니다.
또는 여러분이 컴앤드 라인만 사용하는 사람이라면 더더욱 좋아하겠죠

만약 다를 플랫폼을 사용하는 것으로 부터 왔다면, 예를들어 Node.js 같이, 이런 방법으로 작업하는 것을 원했을것입니다.
여러분은 vertx 명령어를 Node.js에서 사용하는 node 명령어와 같은 것으로 생각 할 수 있습니다.

Vert.x 설치 설명들은 다음 섹션에 있습니다.
한번 Vert.x가 설치되면, 예제 디렉토리를 복사하고, vertx run 와 다음에 verticle의 파일이름을 입력하게 되면 됩니다.


cd core-examples/src/main/java/io/vertx/example/core
vertx run EchoServer.java

cd core-examples/src/main/js/echo
vertx run echo_server.js

그렇습니다. 여러분은 Java source files들을 직접적으로 Vert.x (no compilation required)를 사용하여 가동할수 있습니다.

Installing Vert.x

이건 command line에서 Vert.x를 가동할 때만 필요로 합니다. Maven 이나 Gradle 프로젝트로 작업하시는 것을 좋아하신 다면 설치할 필요 없어요.
- 여러분의 프로젝트 안에서 필요로한 vert.x dependecy 를 넣도록 Maven/Gradle에게 시키는 것입니다.

(1) Vert.x 3 distribution 다운로드
(2) 압축 풀어서
(3) PATH 경로에 설치 경로를 포함시키고
(4) verx -version를 타입핑 하는 것에 의해 테스트 할 수 있습니다.
다운로드 페이지에서는 여러분은 몇몇의 배포분들을 찾을 수 있을 것입니다.
각각의 배포분은 다른 컴포넌트 셋을 가지고 있습니다.
min : 오로지 Vert.x Core, 다른 언어 지원 그리고 Hazel clustering만을 포함하고 있습니다. 
full : 모든 컴포넌트, Vert.x stack...Vert.x web 와 다른 데이터 접속 기술들을 포함 합니다. 

Vert.x core examples

Vert.x core만 사용한 넓은 범위의 예제를 포함하고 있습니다. 


Vert.x-Web examples

Vert.x-Web은 Vert.x를 사용하여 웹 어플리케이션을 구축하는 툴킷입니다.


Vert.x unit examples

Vertx-unit 은 비동기(asynchronous) 테스트들을 작성하기 위한 툴킷입니다.
여러분의 Vert.x(또는 다른 비동기) 어플리케이션에 이 툴을 어떻게 사용하는지에 대한 예제가 포함되어 있습니다.



Mail examples



메일 예제들은 mail 메세지를 생성하고 tls,ssl 등등을 통해 보내는 것 다른 방법을 보여줍니다.
예제에서는 localhost:25 를 사용해서 메일을 보내는 것을 사용하거나 혹은 host mail.example.com 를 사용하는 것입니다.
사실상 예제가 동작하기 위해서, 여러분은 maili 서버와  MailLogin 예제 상에 사용자 인증을 를 변경해야만 할것입니다. 

Maven Serivce Factory examples


요 예제는 Maven Service Factory를 사용해서 배포되어질수 있는 verticle을 패키징 하는 방법을 보여줍니다.
이런 배포는 또한 api 혹은 컴앤드라인 을 사용해서 설명합니다. 

Service Proxy Examples


service proxy 사용에 대한 예제를 포함하고 있습니다.
서비스 제공자가 구현할수 있고, 서비스 사용자들이 소비할수 있는 방법을 설명합니다.


===> 여기 부터는 필요할 때 만 ...

OSGi Examples


OSGi context 상에서 Vert.x를 사용한 몇가지 예제

Docker examples


Docker 컨테이너들에 Vert.x 어플리케이션을 배포하는 방법을 설명합니다.
또한 Fabric8 에 배포되어 질수 있는 어플리케이션 예제가 포함되어 있습니다. 

Openshift examples



두가지 제안된 접근방법을 따른 OpenShift 에 Vert.x 어플리케이션을 배포하는 방법을 보여줍니다. 
: DIY cartridege 를 사용하거나, Vert.x 3 cartridge 를 사용하거나

Spring examples


Spring echosystem 안에 통합되어질 수 있는 vert.x 어플리케이션에 대해서 보여줍니다.


Redis example


vert.x redis 클라이언트를 사용해서  Redis와 인터렉트 할수 있는 방법을 보여줍니다.

Mongo example


vert.x mongo 클라이언트를 사용해서 MongoDB 와 인터렉트 할 수 있는 방법을 보여줍니다. 


JDBC example


vert.x JDBC 클라이언트를 사용하여 JDBC Databases과 인터렉트 할 수 있는 방법을 보여줍니다.


JCA example

Vert.x JCA 예제 프로젝트는 여러분에게 [Wildfly] 어플리케이션 서버에 어플리케이션이 배포가능한 JEE compliant 어플리케이션을 제공합니다. 
구현은 단순한 반면에, JCA 예제는 여러분 자신의 개발을 위한 좋은 출발 포인트를 제공합니다.



정말 다양한 예제들이 가득한 신기한 Vert.x의 나라이군...
오케이!!!