Vert.x 시작

ddengyi
2 min readJan 18, 2020

--

‘Rolancia’ 프로젝트를 시작하며 백엔드에 대해 고민하였다.
1. 서비스의 특성상 잦지만 다양한 유저의 간헐적 네트워크 요청
- HTTP(s) 적용 계기
2. 대부분의 기능이 외부 REST API 호출이 필요
- 비동기 IO 기반

기존 Node.js 기반으로 REST 백엔드를 주로 작성해왔으나, Node.js 의 비동기 IO라는 장점이 있음에도 자바스크립트 (V8)라는 태생적 성능의 문제에 대해 신경을 쓰고있었다. 언젠가 내 서비스가 폭발적인 인기를 끌 수도 있기 때문.

Go, Java의 비동기 프레임워크 사용과의 벤치마킹 자료에서도 그 성능 차이를 실감할 수 있었다.

물론 프레임워크라는 것이 성능만이 중요한 것은 아니지만, Node.js 단일/멀티 프로세스 (최근에는 스레드)를 어느정도 사용할 수 있게 된 상태에서 생산성보다는 성능이 좋은 백엔드의 필요성을 느꼈다.

C++를 사용하기엔 언어 숙련도와 생산성을 갖추는데 시간이 오래걸려 Java JVM 계열의 Vert.x를 적용하기로 결정하였다.

Vert.x는 Polyglot으로 여러 언어에서 사용할 수 있다.
지원하는 언어로는 현재
Java, JavaScript, Groovy, Ruby, Kotlin, Scala 로 다양하며,
Node.js를 사용했기에 자바스크립트로 빠르게 적용할 수 있었다.

하지만 Vert.x 개발자의 벤치마크 자료상 Java와 JavaScript의 성능차가 유의미하다고 느껴 Java로 개발하기로 결정하였다.

싱글 스레드를 사용함을 가정하고 만들어진 Node.js와는 달리, Vert.x는 같은 코드가 같은 스레드에서 수행됨을 보증한다. (Node.js 또한 워커 스레드/프로세스를 통해 멀티 스레드를 이용하긴 하지만, 공유 데이터 처리 등 워커간 통신이 까다롭다)

이런 Vert.x의 보증에 따라, 스레드간 공유 데이터, 통신, 클러스터링을 위한 기능이 지원된다.

--

--

No responses yet