vert.x를 소개할때 가장 많이 하는 말이 자바버전의 node.js 라고 하는 말입니다.
요즘 추세인 Event기반 Non Blocking IO 를 손쉽게 구현하게 해주는 jvm기반 프레임웍입니다.
vertx어플리케이션은 jvm상에서 동작할 수 있는 자바, 그루비, 자바스크립트, 파이썬등에서 자기가 익숙한 언어를 가지고 개발할 수 있습니다.
이 책은 자바를 이용하여 vertx의 특징을 잘 살릴 수 있는 채팅프로그램을 만들면서 간단한 버전부터 클러스트링 및 다양한 클라이언트를 지원하는 버전까지 확장해가며 설명해줍니다.
1장에서는 개발환경세팅과 hello world를 찍는 verticle(vertx어플리케이션)을 만듭니다.
eclipse기반에서 maven기반으로 환경을 구축하는 설명이 자세히 나와있고, 따라하는 과정중 발생할 수 있는 jdk버전문제, pom.xml의 warning 처리방법등에 대해서도 언급해주고 있습니다.
2장부터 채팅어플리케이션을 만들기 시작한다.
서버를 만들던 클라이언트를 만들던 우선 verticle을 상속한 후 필요한 메소드들을 오버라이드해서 구현하면 되는데, java를 사용했기에 IDE의 도움으로 대부분의 코드얼개를 자동완성시킬 수 있으므로, 필요한 로직들만 코드안에 추가하고, 오타등이 났을때 IDE가 미리 체크해 준다든지, 로그를 남기고 확인하는 과정등이 nodejs 같은 언어로 하는것에 비해 확실히 코드는 길어질 수 있어도 괜찮은거 같습니다.
첫번째 채팅프로그램을 만든 후 서버를 여러개 띄었을때의 문제점을 보여주고, 이를 확인하기 위해 로그를 추가하고, 스레드간 공유를 위한 코드를 추가하여 문제를 해결하는 형태로 진행되며,
TCP통신의 특성을 설명하며 연속된 메시지를 고정폭으로 잘라서 파싱하는법, delimeter를 기준으로 파싱하는법등을 알려줍니다.
그리고 스레드를 블락시키거나 오래걸리는 작업이 필요한 경우 workerverticle로 분리하는 방법소개등이 나옵니다.
3장에선 SocketJS 서버를 만드는 방법에 대해 다루고
단일 혹은 클러스터로 묶인 vert.x 인스턴스내의 verticle들이 서로 메시지를 주고 받을 수 있게 하는 이벤트버스에 대해 설명하고 채팅프로그램을 확장한다.
나머지 장에서도 이런식으로 새로운 기능혹은 모듈을 설명하고 그것을 통합해 사용할 수 있도록
하는 형태로 구성되어 있다.
느낌: 250여 페이지의 부담없는 분량으로 새로운 기술인 vert.x 를 배우고, 이벤트기반의 서버 클라이언트 프로그램을 만들며 publish/subscribe등의 메시지 전송에 대해 배울 수 있는 좋은 책이었습니다.
중간중간에 그림설명이 많아 이해하는데 도움이 많이 되었으며,
컴파일없이 바로 실행가능하므로 개발 및 테스트가 쉬었고,
클러스트링과 멀티 인스턴스 지원이 쉽다는 점에서 실무에서 한번 꼭 사용해보고 싶다는 생각이 들었습니다.
- 24p 예제코드는 github에서 확인할 수 있다. 라고 되어있는데 바로 링크가 적혀있었으면 함.
- TCPServer를 실행하는 방법은 나와있는데 텔넷 클라이언트로 확인하는 방법도 나와있었으면 한다 . (telnet localhost 8090 식으로)
- vert.x3 버전에 클러스트링환경에서의 데이타공유기능이 추가된다고 하니 그 후 개정판이 나왔으면 좋겠다.