WAS-netty 연동과 관련하여

314 views
Skip to first unread message

알프

unread,
Apr 11, 2018, 8:21:06 AM4/11/18
to Netty Korean User Group
회사 인프라의 구조적 제약으로 앞단에 WAS, 뒷단에 DB와 관련된 업무처리 서버로 구성되어야 합니다. 
그동안 뒷단은 C기반의 미들웨어 (티맥스, 턱시도 등)의 TP모니터를 주로 이용 하였었습니다.

신규 프로젝트가 발생하여 기존 앞단WAS와 뒷단 노드를 추가적으로 연결해야 할 상황이 발생하였습니다.
이번 신규 프로젝트부터는 java기반의 새로운 도전을 하고자 하여 뒷단에 netty/spring 기반의 DB업무처리 서버를 구성하려고 계획하고 있습니다.
이런 시도를 하려고 하니 앞단 WAS와 뒷단 netty와의 연결을 어떻게 해 주어야 할지 고민이 되기 시작하였습니다.
(** 앞단 WAS에서 DB와 연결된 업무처리는 불가한 상황이며, 기존 앞단 WAS와 연결된 기존 legacy 서버들로 인해 netty를 새롭게 앞단에 세울수도 없는 상황입니다.)

과거 앞단 WAS와 뒷단 legacy 서버 (티맥스, 턱시도)와 연결할 때는 해당 벤더사에서 WAS에 탑재할 연동 라이브러리를 제공해 주었었습니다.
이와 같이 앞단 WAS와 netty로 구성된 뒷단과의 연결을 쉽고 안정적으로 할 수 있는 방안이 있는지 찾아보고 있는 중이며, 다음과 같은 기본적인 생각을 하고 있습니다.

방법1) 단일 요청 마다 연결 및 해제 
  클라이언트 요청 > WAS 수신 > WAS 내 서블릿에서 netty서버로 tcp  연결 및 데이터 요청 > netty 서버에서 업무 처리 후 회신 > WAS 내 서블릿에서 netty 연결 해제 > 클라이언트 응답

방법2) tcp 커넥션 풀 이용
  위 방법1) 중 커넥션과 관련된 처리를 tcp pool로 구현하여 처리 (apache commons pool 또는 자체 구현)


현재 시스템에 상당히 많은 사용자의 요청이 있기 때문에 방법1)보다는 방법2)를 고민중에 있습니다.
netty서버와 타 시스템을 연동할 때는 보통 어떤 방법으로 하고 있나요?
연동되는 클라이언트 시스템이 java라면 netty와 연결할 때 java socket 코드로 개발하나요? 아니면 netty 클라이언트 라이브러리를 활용하나요?

더 나아가서 여러 netty 노드들을 효율적이고 빠르게 연결할 수 있는 방법도 고민하여 netty를 MicroServiceArchitecture의 Infraware로 사용 가능하지 않을까도 생각 중입니다.
현재 Legacy가 벤더가 제공한 C 기반의 SOA 구조로 되어 있기 때문에 이를 대체할 netty기반의 MSA 구성도 가능하지 않나 생각됩니다. (물론 2PC등의 어려운 고민은 남겠지만...)

플랫폼을 선정하고 시스템을 설계하는 일은 항상 고민이 많습니다.
netty가 legacy를 대체하여 상당한 비용절감이 되기를 기대하면서 글을 올립니다.

관련하여 경험자분들의 의견을 나누고자 합니다.
감사합니다.
Reply all
Reply to author
Forward
0 new messages