인메모리 컴퓨팅 및 데이터 그리드 솔루션

[컴퓨터월드] 대용량 빅데이터 시대에 접어들면서 서비스를 제공하는 기업들은 급증하는 데이터 프로세스 비용과 예측 불가능한 시스템 확장이라는 당면 과제를 안고 있다. 전통적인 N-티어 아키텍처에서 제공되는 IT 서비스는 사용자 급증에 대응하거나 대용량 처리에 어려움을 보여주고 있다. 사용자가 감내하기 힘든 느린 서비스 등의 질적인 저하는 물론, 심지어 시스템 중단으로 이어지기도 한다.

서비스를 제공하는 기업은 이런 문제를 해결하기 위해 많은 비용을 지불할 수밖에 없다. 대용량 빅데이터를 담기 위해 하둡 기반의 플랫폼이 개발됐으나, 필요 기능을 추가할 때마다 복잡해지는 아키텍처를 마주하게 된다. 이런 문제를 해결하고자 대용량 데이터 트랜잭션이 필요한 글로벌 금융권, 이동통신사, 이커머스 업계서는 인메모리 데이터 그리드(IMDG) 아키텍처에 관심을 보이고 있다.

인메모리 데이터 그리드 솔루션 ‘헤이즐캐스트’

▲ 헤이즐캐스트 아키텍처

‘헤이즐캐스트’는 인메모리 컴퓨팅 및 데이터 그리드 솔루션이다. 인메모리 데이터 그리드(IMDG)는 분산저장 및 분산컴퓨팅을 제공함으로써 자주 사용되는 대규모 데이터를 I/O단에서 프로세스해 빠른 접속을 제공, RDMBS(관계형데이터베이스시스템) 구간 병목현상을 원천적으로 해결하는 솔루션이다.

IoT(사물인터넷), 소셜, 모바일, 클라우드 등 항상 접속돼있는 기기에 데이터를 실시간 제공하고, 특정 구간에 집중된 데이터를 분산처리함으로써 빅데이터를 기존 N-티어 아키텍처보다 수천 배 빠르게 처리할 수 있다. 보통 인메모리DB와 비교되는데, 인메모리 DB는 I/O단 밖에서 프로세스되기 때문에 기존 레거시 시스템보다는 속도가 빠르나, 휘발성 메모리로 데이터 복원력이 없고 I/O단 메모리에서 데이터를 처리하는 IMDG보다는 처리속도가 느리며, 비용 대비 효율성이 낮다.

헤이즐캐스트는 오픈소스(아파치 라이선스)로, 다른 라이브러리에 대한 의존성이 없고 작은 사이즈(약 5MB jar 파일)로 가볍고 편리하다. 또한 JVM 기반으로 동작해 하드웨어 종속성에서 자유롭고, 레거시 장비를 사용해도 전체 시스템의 고도화를 이룰 수 있다. 또한 가상화된 기반에서 운영되는 헤이즐캐스트는 OS(운영체제) 시스템의 제약을 받지 않는다.

리눅스, 오라클 솔라리스, 유닉스, IBM AIX, 윈도우 등에서 작동하며, 대용량 트래픽이 필요하거나 시스템 증설 시에도 WAS(웹애플리케이션서버), DB(데이터베이스), 서버 등 전체 시스템을 확장할 필요가 없다. SPI 플러그인, TCP/IP 또는 멀티캐스트를 사용해 필요에 따라 추가 메모리나 컴퓨팅이 필요한 경우에도 초나 분 단위로 쉽게 동적으로 클러스터에 새로운 노드를 탄력적으로 추가할 수 있다.

특히 헤이즐캐스트는 JVM의 치명적인 단점으로 꼽히는 GC를 최소화하고 하드웨어에서 제공하는 메모리 가용 자원을 최대한 사용할 수 있다. 하드웨어 측면에서 기존 레거시 N-티어 방식이 수십에서 수백 대의 서버를 사용했다면, 헤이즐캐스트는 최소 72팩트(72-1 서버)에 기반 해 불과 몇 대의 물리적 서버로 아키텍처를 구축할 수 있는 환경을 제공한다.

헤이즐캐스트는 데이터의 복원력이 뛰어나며, 데이터는 클러스터에 분산 저장된다. 만약, 클러스터 노드에 장애가 발생할 경우 자동복원으로 데이터 유실을 막을 수 있다. 또한 전체적인 시스템 이중화가 필요 없으며, 충분한 용량의 IMDG 구간에서 24시간 365일 무중단 서비스를 제공한다. 구조적으로 SPOF(Sing Point of Failure)가 원천 차단되도록 아키텍처를 구현, 특히 일부 앱서버나 데이터 서버가 작동하지 않더라도 전체 시스템은 정상적으로 작동한다.

이외에 애플리케이션을 업데이트하거나 데이터 서버를 정기적으로 점검할 때 전체 시스템을 중단시키지 않고 업그레이드를 진행할 수 있다. 초 단위로 변하는 동적 데이터(Dynamic Data)도 캡처해 실시간 응용 프로그램에 반영할 수 있는 추가적인 기능도 제공한다. 다른 제품에 비해서 접근성이 좋고 간결한 아키텍처를 제공함으로써 유지보수 비용도 절감된다.

헤이즐캐스트의 주요 기능

◆ HD-메모리 스토어(HD-Memory Store) 기능으로 서버 메모리의 가용성을 극대화하고 스케일업을 지원하며, 자바의 GC로 인한 성능 저하 및 장애를 제거해 예측 가능한 성능을 보장한다.

◆ 핫 리스타트 스토어(Hot Restart Store) 기능으로 클러스터 노드 메모리에 저장된 데이터를 디스크에 백업해 장애 발생 시 빠르게 대처할 수 있다. (SSD 사용권장)

◆ 웹GUI로 제공되는 매니지먼트 센터 기능으로 클러스터를 실시간 모니터링하고 이벤트 발생 시 알람을 받을 수 있으며 쓰레드 덤프, 스크립트 실행, 쿼리 등 작업을 실행할 수 있다.

◆ WAN 복제(replication)로 액티브/액티브 또는 액티브/스탠바이로 사용할 수 있다. 물리적으로 떨어져있는 주전산센터와 백업센터 간 실시간 동기화나 초고속 배치 작업을 자동화할 수 있다.

◆ 시큐리트 스위트를 사용해 JAAS, SSL 등의 암호화가 가능하다.

헤이즐캐스트의 주요 특징

◆ 온디맨드로 메모리나 컴퓨팅이 필요한 시점에 클러스터를 추가하고 필요 없는 경우에는 제거해 효율성을 극대화 할 수 있다. 자동 백업, 장애 복구 등으로 고가용성도 보장한다.

◆ 하둡 기반 빅데이터에서 주로 쓰이는 맵, 큐, 세트, 리스트, 락 그리고 익스큐터 서비스 등의 분산 데이터 구조를 제공하며 트랜잭션(JCA 서포트) 및 메시징 기능도 제공된다(Pub/Sub). 특히 메시징 기능으로 많이 쓰이는 아파치 카프라(Kafka) 대비 수백 배 빠른 속도를 보장한다.

◆ 기존 RDBMS나 다른 DB들의 오프로딩(off-loading)에 범용적으로 사용된다.

◆ STRIIM 플러그인으로 CDC(변경데이터캡처) 기능을 구현할 수 있다.

◆ 기존 NoSQL과 같은 DB는 하드디스크에 저장되기 때문에 느리지만, 헤이즐캐스트는 인메모리 키밸류 스토어로 빠른 속도는 물론 가용성과 확장성이 뛰어나다.

◆ Executor Service 등 API를 제공해 복잡한 분산컴퓨팅을 인메모리에서 제공한다.

◆ 클라우드(IaaS) 또는 컨테이너(PaaS) 기반 환경에서 빠르고 편리한 배포가 필요할 때 사용된다.

◆ IoT 인프라에서 발생하는 대용량 데이터 수집 구간 및 배포 구간을 빠르게 처리하며, 초당 80~100Gbps MQ 라우터에 쉽게 연동하는 기능을 제공한다.

헤이즐캐스트 금융권 구축 사례

▲ 헤이즐캐스트를 통한 HAS 시스템 구축 방법론

밀리초 단위의 초고속 금융 플랫폼 구축을 우선시하고 있는 금융사들은 인메모리 데이터 그리드 시스템을 도입해 ▲알고리즘 트레이딩 ▲EOD & 인트레이디 리스크 ▲이자변동률(IRD) ▲마켓 데이터 프로그램 ▲금융거래 ▲글로벌 캐피털 마켓 ▲리테일 뱅킹 애플리케이션 ▲인터넷 모바일 뱅킹 시스템 ▲보험 거래 시스템 ▲ATM 서비스 등과 같은 업무에 초고속/고성능 인프라 시스템을 적용했다. 위와 같은 코어 뱅킹 시스템 외에도 금융사의 미션 크리티컬한 업무에 적용돼 운용되고 있다.

헤이즐캐스트는 ▲트레이드 허브를 통한 글로벌 WAN 복제 ▲C++, C# 그리고 자바 스마트 클라이언트 ▲Predicate 쿼리 가능한 SQL ▲JAAS, 케르베로스 등 보안 클라이언트 인증 ▲초고속 DR 솔루션 ▲최상위 보안 등급 솔루션 ▲지속적인 쿼리 ▲포스트 트레이드 시스템 ▲규격화된 시스템 ▲금융 거래 이상 탐지 및 감사 기능 등을 통해 클러스터 메모리 확장 기능을 통한 진정한 스케일아웃 인프라를 구축했다.

헤이즐캐스트는 OLAP, OLTP에 쉽게 적응할 수 있다. OLAP에서는 헤이즐캐스트의 강력한 맵리듀스 기능을 사용하며, OLTP에서는 고도화된 직접 기술과 분산처리 연산 기능으로 초당 수백만 데이터 트랜잭션을 수행하는 동시에 분산 이벤트와 연산에 반응할 수 있다.

인 스토어 캐시 사용해 최적화하기

헤이즐캐스트 엔지니어들은 IMDG 솔루션에서 제공하지 못하는 ‘타임아웃(Time-Outs)’ 기능을 테스트를 통해 선보였다. 시스템에서 데이터를 하나의 노드에서 불러올 때 간혹 쿼리한 데이터가 같은 노드 공간이 아닌 다른 곳에 있을 수도 있고, 패치 기능을 통해 노드 간에 데이터를 복제해서 제공하는 방식은 노드 사이에 네트워크, GC, 커널 다운 등의 문제로 인해 정상적인 작업을 수행하지 못할 경우가 발생하고 시스템 장애 요소가 된다. 하지만 타임아웃 기능은 100밀리초 이상 데이터를 불러오기 위해 대기하지 않게 만드는 기능으로, 헤이즐캐스트 노드는 그 작업을 수행하지 않고 정상적인 작업을 수행함으로써 시스템 장애현상을 방지하는 것이다.

또 한 가지 온라인 스토어에 적용된 기술은 캐시 무효화 작업을 통한 최적화 기술이다. 온라인상에서 특정 가격의 제품의 정보 요구에 집중되는 현상을 줄이기 위해 ‘니어캐시(Near Cache)’ 기능을 이용한 ‘분산 맵(Distributed Map)’을 사용한 것이다. 니어캐시는 분산환경에서 가장 많이 사용되고 있는 데이터를 메모리상에서 최상위에 두게 돼 데이터 요구와 처리를 즉각 반영하는 것이다. 로컬 캐시에서 완전 복제된 데이터 간의 적절한 밸런스를 유지하며 분산 페치와 분산 캐시를 완벽히 구현하는 것이다.

니어캐시 기능을 사용할 때 가장 먼저 떠오른 주제는 ‘캐시 무효화(Cache Invalidation)’이고, 소스 데이터가 업데이트됐을 때 니어캐시가 어떻게 캐치하는가에 대한 방법론이었다. 특정 제품의 가격이 업데이트 되면 니어캐시에 있는 가격은 더 이상 유효하지 않고 가격 변동 정보가 시스템에 그대로 반영되는 것이다. 애플리케이션의 데이터 사용이 주로 읽기에 편중돼있고 쓰기 기능이 상대적으로 적을 경우 니어캐시가 유효적절하게 사용되는 것이다. 반대로 애플리케이션이 데이터 사용에 쓰기가 많을 경우 수백만에 달하는 경고 메시지가 발송됨으로써 네트워크 트래픽에 과부하 현상을 발생시킬 수 있기 때문이다.


헤이즐캐스트의 스태빌라이저 기능

대용량 데이터를 지속적으로 주입하는 극한 조건 속에서 헤이즐캐스트는 ‘스태빌라이저(Stabilizer)’ 기능을 제공하고 있다. 스태빌라이저 기능은 헤이즐캐스트로 구축된 시스템 환경에서 뛰어난 복원력과 제어를 제공함으로써 ▲네트워크 부하로 인한 네트워크 일부 장애 및 패킷 손실 ▲재앙적 수준의 네트워크 페일러 ▲일부 JVM 작동 중단 ▲OS 중단 ▲내부 버퍼 오버플로우 등과 같은 문제의 해결을 돕는다. 헤이즐캐스트는 스태빌라이저 기능을 통해, 가정할 수 있는 극한 조건에서 시스템이 정상 작동하도록 설계돼 있다.


헤이즐캐스트 아키텍처 구축 방법론

헤이즐캐스트는 환경 구축1단계에서 임베디드 모드로 애플리케이션 서버와 동일한 공간에 구축된 반면, 헤이즐캐스트 엔터프라이즈를 적용할 때는 ‘서비스형 캐시(Cache as a Service)’에 적합한 독립적인 서버와 함께 애플리케이션은 클라이언트/서버로 연동돼 운영하는 ‘클라이언트/서버’ 모드 토플로지가 고려된다. 이러한 구축방법론은 방대한 기업 데이터를 효율적으로 관리함과 동시에 클러스터를 추가적으로 확장하거나 시스템 아키텍처를 효과적으로 관리할 수 있다는 장점으로 도입된다.

▲ 헤이즐캐스트 플랫폼 3.8


헤이즐캐스트 통한 TCO 절감

헤이즐캐스트는 앞서 설명한 요구사항을 모두 만족시킬 뿐만 아니라, 절대적인 가격경쟁력과 벤더에 대한 의존성 탈피로 인한 보다 쉬운 오너십, 그리고 24/365 상시 고객지원과 도입에 따른 전체적인 비용이 타 제품의 라이선스 비용보다 더 저렴하게 공급될 수 있다는 장점을 내세우고 있다.

RAM 가격의 하락과 더불어 발전한 대용량 서버 RAM을 사용한 일례로, 분산 클러스터 메모리와 CPU를 최적화함으로써, 헤이즐캐스트 제품군은 기존 클러스터를 사용함에도 불구하고 최고의 성능을 구현할 수 있다. 디스크 액세스 시간이 RAM 액세스 시간보다 백만 배나 느리기 때문이다. 헤이즐캐스트 제품을 사용할 시에는 하드웨어 구축비용 절감과 더불어 기존 인프라를 보다 효율적으로 사용할 수 있다. 추가적인 인프라 구축 없이 탄력적으로 운영할 수 있게 한다.

또한 헤이즐캐스트는 맞춤형 SLA(서비스수준협약)을 제공한다. 고객사의 필요에 특화된 서비스를 제공함으로써 헤이즐캐스트 엔터프라이즈 사용 고객들은 시스템 애플리케이션 개발과 고도화 관련 최신 기술을 제공받고 로드맵을 공유하고 있다. 또한 미션 크리티컬한 시스템을 항상 최적화하고 운영하는 노하우를 제공하고 있다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지