클라우드 환경서 엔터프라이즈 자바 플랫폼 ‘각광’
상태바
클라우드 환경서 엔터프라이즈 자바 플랫폼 ‘각광’
  • 데이터넷
  • 승인 2011.03.07 15:09
  • 댓글 0
이 기사를 공유합니다

단일 환경 구성으로 대규모 확장 가능

백창현 수석삼성SDS 프레임워크그룹ch.h.baek@samsung.com
자바(JAVA)가 엔터프라이즈 환경에 본격적으로 사용된지 10년이 채 되지 않았으나 상대적으로 짧은 기간에 확고한 사용자 기반을 확보하면서 영역을 넓혀가고 있다. 자바는 단일한 환경으로 구성해 대규모 확장이 가능하고, 간결한 형태의 객체지향, 인터페이스 구조로 프로젝트를 보다 쉽게 수행할 수 있도록 한다. 그러나 아직도 안정성 등을 이유로 대규모 환경에서는 자바를 활용하지 않으려는 경향이 남아있다. 삼성생명 차세대 프로젝트에 적용된 엔터프라이즈 자바 플랫폼의 사례를 통해 대규모 환경에서 자바의 활용방법을 알아본다.

1995년 ‘자바(JAVA) 1.0’이 최초 공표된 이래, 자바라는 혁명적인 언어는 많은 변화를 가져왔다. 자바는 더 이상 하드웨어나 특정 기술 구조에 의존적인 개발은 하지 않아도 되는 환경으로, 자바 가상 머신(JVM: JAVA Virtual Machine)이라는 새로운 우주에서 객체 지향과 컴포넌트로 무장된 새로운 시대가 도래했다. 자바를 엔터프라이즈 환경에 본격적으로 사용한지 10년이 채 되지 않았으나, 상대적으로 짧은 기간에 확고한 사용자 기반을 중심으로 엔터프라이즈 시장을 확보해 왔다.

C, C++에서는 볼 수 없는, 간결한 형태의 객체 지향과 인터페이스 중심 구조, 가비지 컬렉션(Garbage Collection), 멀티 쓰레드 처리 등의 새로운 사상과 철학으로 완전 무장한 자바 군단은 모든 영역을 넘나들며 파죽 지세로 엔터프라이즈 시장을 무너뜨려 왔고, 사실상 엔터프라이즈 환경의 표준으로 자리 잡아 모든 부분에서 필수 불가결한 소중한 존재로 그 위상을 확고히 해 왔다. 그러나 최근까지도 전인미답의 상태로 자바가 도전하지 못한 영역이 있었으니, 바로 대형 금융 차세대 코어 시스템이다. 금융 코어 시스템은 아직도 메인프레임과 CS 기반의 유닉스 환경이 주류를 이루고 있으며, 최근 들어서야 자바 환경으로 전환되고 있다.

자바는 JVM상에서 바이트 코드(Byte Code) 형태로 실행되는 일종의 인터프리터 언어이다. C, COBOL과 같이 완전히 실행 가능한 파일로 컴파일 되지 않기 때문에 JVM이라는 특수한 환경에서 실행된다. JVM은 이식성과 범용성이라는 뛰어난 장점을 지닌 반면, 고가용성과 처리 성능 이슈라는 단점을 동시에 가지고 있다. 차세대 시스템이 실행 중에 3~4초씩 멈춰버리면 어떻게 되겠는가? 몇 시간 수행돼야 하는 배치 작업이 기존보다 5배 이상 느려지면 어떻게 할 것인가? 등의 우려 사항이 전형적으로 제기되는 자바 환경의 이슈이다. 이러한 자바의 기술 이슈들과 해결책 및 성공 사례를 소개한다.

JVM 제약사항과 해결방안
자바는 JVM이라는 특수한 환경을 가지고 있기 때문에 여러 제약 사항이 발생한다. JVM의 구조는 다음의 3가지 제약 사항을 갖는다. 

- JVM 메모리가 부족할 경우, 가비지 컬렉션 과정 중에서 발생하는 2~10초 정도의 시스템 멈춤 현상
- VM 단일 프로세스에서 멀티 쓰레드 방식에 의한 구조적 제약과 쓰레드 간의 시스템 자원 공유로 유발되는 상호 간섭 문제
- 자바의 객체 지향 구조로 모든 데이터 타입이 객체로 변환돼야 처리 가능한 작업구조

이러한 제약 사항은 대형 차세대 시스템 구축 시 다음 <표>와 같은 이슈를 야기한다. 이와 같은 이슈 중 ‘매우 높음’에 해당되는 항목은 대형 차세대 시스템 구축 시 반드시 풀어야 하는 숙제다. 이들 문제가 풀리지 않으면 차세대 시스템의 오픈 자체가 불투명해 지거나, 비용이 기하급수적으로 증가할 것이다. 가장 이슈가 되는 3가지 항목을 중심으로 자바 환경의 기술적인 이슈와 해결방안을 구체적으로 살펴 보도록 하자.


배치 성능 문제의 원인 및 해결 방안
배치 성능 이슈는 DB 중심의 배치 처리 시에는 상대적으로 성능 차이가 거의 나지 않으나, 파일 처리 중심의 배치 작업이 다수인 대형 금융 차세대에서 두드러지게 나타난다. <그림 1>에 나타나 있듯 메모리에서 자바 객체로 변환하는 부분에서 성능 저하 문제가 발생하는데, 이는 매우 심각하다. 자바의 IO 성능은 상당히 빠른 반면, 객체 변환 과정에서 발생하는 부하는 배치 처리 성능을 1/5 ~ 1/10 수준으로 떨어뜨린다.


COBOL의 경우 1억건을 가진 파일도 10분 내에 처리 가능하다. 그러나 자바의 경우는 JVM을 이용해 직접 코딩하면 동일 건수 기준으로 1시간 이상이 필요하다. 모든 데이터를 객체로 변환해 처리하는 자바 언어의 특성상, 이러한 성능 이슈는 반드시 해결해야 할 문제이다. 특히 기존 CS 환경이나 COBOL 환경에서 자바 환경으로 전환할 때 많은 성능 차이를 가져오는 경우는 더욱 그러하다.

단순히 병렬처리를 통해 극복하면 될 것으로 생각할 수도 있으나, 전체적인 시스템 자원이 부족해지는 것도 문제이며, 병렬처리가 불가능한 경우도 많다. 대안으로는 시스템 자원을 대폭 증설해 운영하는 방법도 있으나, 하드웨어 비용문제와 시스템 운영상의 어려움이 발생한다. 이 경우 고성능의 전문적인 자바 배치 처리 엔진으로 해결할 수 있다.


고성능 자바 배치 엔진은 <그림 2>처럼 병렬처리를 기본적으로 지원해야 한다. 통상적인 수평적 병렬처리(Horizontal Parallel Processing) 뿐만 아니라, 수직적 병렬처리(Vertical Parallel Processing)도 함께 지원해야 한다. 수평적 병렬처리는 IO를 별도의 쓰레드로 분리시켜 비동기식으로 처리하는 구조로, 분할 처리가 불가능한 집계 작업이나 머지(Merge) 작업 등에 매우 유용하다. 이와 더불어 성능 저하를 야기하는 객체 인코딩/디코딩을 최소화하기 위한 프록시(Proxy) 구조 기반의 온디멘드 인코딩(On-Demand Encoding) 방식은 반드시 지원돼야 한다. 이러한 다양한 처리 향상기법이 적용된 고성능 자바 배치 처리 엔진에서는 C, COBOL과 동등한 성능을 낼 수 있다.

센터컷 성능 최적화
대량의 작업을 온라인으로 기동할 때, 필연적으로 발생하는 문제는 바로 성능이다. 계좌이체 1건에 0.2초가 필요하다고 가정하자. 월급 날에 은행에서 50만건의 급여 이체를 수행해야 하는 상황에서 필요한 시간은 30시간 정도다.

50만 × 0.2초 = 10만초 = 약 30시간

한두 시간 이내에 작업해야 월급쟁이 통장에 급여가 제때 지급될 수 있는데, 30시간이 필요하다면 답이 나오지 않는다. 전형적인 센터 컷 작업인 급여 일괄 이체를 최단 시간 내에 끝내기 위해서는 병렬처리를 해야 한다. 이러한 센터컷 성능 이슈 또한 자바 환경이 가져오는 제약 사항이다. 자바의 병렬처리는 쓰레드 단위로 실행되며, 멀티 쓰레드 처리가 용이하다. 문제는 별도의 분산 환경을 구축하지 않으면 단일 WAS 내에서만 쓰레드로 처리된다는 것이다.


WAS 1대로는 시스템 자원을 충분히 사용할 수 없으며, 특히 여러 대의 시스템을 사용해야 하는 경우는 치명적이다. 때문에 다수의 WAS에서 실행/운용할 수 있는 분산 처리 및 관제 환경을 구축해야 한다. WAS 1대만으로는 서버 자원을 충분히 활용할 수 없다. 이는 자바가 지니는 멀티 쓰레드 구조의 한계 때문이다. 이는 병렬 처리가 용이하기는 하지만, 시스템 자원이 프로세스 단위로 할당되기 때문에 시스템 자원을 충분히 활용하지 못한다. 따라서 멀티 프로세스, 멀티 쓰레드 기반이 모두 적용되는 병렬처리 형태가 제공돼야 한다. 이는 그리드 기반의 처리 환경으로 건 별로 대상 서버에 요청을 보내어 처리할 수 있는 기반을 제공해야 한다.

WAS 기반의 그리드 환경을 제공하는 센터컷 엔진으로 전체 시스템을 충분히 사용해 고성능을 달성할 수 있다. 반면 분산 환경에서는 작업 실패의 위험요소가 매우 증가하기 때문에 센터컷 엔진의 고가용성 문제와 분산 환경의 모니터링 문제도 함께 해결해야 한다. 센터컷 전용으로 개발된 그리드 엔진이 있어야 이와 같은 어려움을 모두 해결할 수 있다.

온라인 프로그램 장애 파급 효과 최소화
<그림 4>에서 보듯 개별 쓰레드는 JVM 상에서 메모리 영역을 공유한다. 하나의 WAS에서 여러 쓰레드가 동시에 수행되면서 상호간의 데이터를 공유하고 참조할 수 있는 환경을 제공한다. 시스템 자원 사용측면과 동시 처리성 향상 측면에서는 매우 효율적이나, 하나의 쓰레드 문제가 타 쓰레드로 파급되는 단점이 있다. 특히 업무 로직 상의 오류 등으로 특정 쓰레드가 무한 루프에 빠지거나 메모리를 지나치게 사용하면 타 쓰레드에 영향을 준다.


때문에 해당 업무 서비스는 사용하지 않도록 실시간 제어해야 한다. 무한 루프에 빠지는 업무는 해당 업무 서비스를 중지시키고, WAS를 재가동 해야 하는데 이 경우 다른 쓰레드까지 모두 죽어 버린다. 이를 극복하기 위한 최소한의 방어장치로 실시간 서비스 제어 구조와 서비스 사용량 통제 구조가 구현돼야 한다.

차세대 자바 이슈 및 기술 동향
이상과 같은 3가지 이외의 자바 중심의 대형 금융 차세대 시스템 중심의 이슈와 기술 동향을 정리해 보면 다음과 같다. 자바 환경에 초점을 둔 내용으로 CS, COBOL 기반의 차세대에는 적용되지 않는다.

원격 트랜잭션 동기화(EJB 기반 2 Phase Commit) 퇴조
EJB는 개발과 운영 관리의 어려움으로 자리를 잃고 있다. JP모건과 같은 유명한 금융 기업들은 이미 EJB를 기술 표준 목록에서 삭제한지 오래다. EJB를 도입한 기존 기업들도 가장 큰 장점인 2 Phase Commit을 포기하고 있다. 

배포 & 이관 관리 시스템 도입
개발된 업무 모듈을 다수의 서버에 배포하는 작업도 쉬운 일이 아니다. 이를 통제하고 관리하기 위한 배포 & 이관 관리 환경이 차세대 시스템에는 필수다.

CBD와 UML 도입 정체
CBD와 UML이 한때 각광 받던 시기가 있었으나, 현재는 더 이상 적극적으로 확산되고 있지 않고 있다. 객체 지향으로 개발은 바람직하나, 복잡한 데이터 구조 중심의 차세대 시스템에서 UML로 정교한 설계를 하는 것은 쉽지 않은 일이다.

대내외 채널 지원을 위한 단일 인프라 구축
단일 비즈니스 로직으로 내부 시스템과 외부 시스템을 동시에 지원한다. 대내/대외의 구분은 더 이상 의미가 없으며, 모든 업무 기능은 서비스 형태로 제공된다. 업무 시스템은 서비스 단위로 정비되며, 다양한 클라이언트 들에게 서비스 형태로 제공된다.

BPM 프로세스와 업무 처리 프로세스의 일체화
비즈니스 프로세스와 업무 서비스 처리를 단일 트랜잭션으로 묶어 일원화 한다. 기존 BPM의 고질적인 문제였던 프로세스와 업무 서비스간의 괴리는 더 이상 존재하지 않는다. 이를 위해서는 BPM과 프레임워크 간의 밀접한 상호 연계를 위한 아키텍처 구조를 지원해야 한다.

데이터 그리드 도입 시작
데이터 처리 부분의 동향으로 주목할만한 것은 데이터 그리드의 부분적 도입이다. 지금까지는 성능보다 정합성의 문제로 데이터 그리드 도입이 어려웠으나 다수의 복잡한 연산이 필요한 분야를 중심으로 일부 도입을 시작하고 있다. 삼성생명 차세대 시스템은 오라클 코히어런스 데이터 그리드(Oracle Coherence Data Grid)를 부분적으로 도입했다.

애플리케이션 수준의 통합 관제 환경의 구축
개발 표준을 강제하고 자원의 변경과 반영을 전반적으로 통제할 수 있는 애플리케이션 영역으로 관제 범위를 확장한다. 이는 시스템 변경에 대한 분석 시간을 줄이고, 시스템간의 다양한 표준을 하나로 관리해 시스템 통합을 용이하게 지원한다. 개발 표준이나 관리 표준 수준의 표준이 아니라, 내용적인 비즈니스 언어의 표준까지 준수하도록 관제하는 환경으로 중앙 집중화된 관리를 수행하면서도 유연한 개발을 지원한다.


삼성생명 차세대 프로젝트 구축사례
삼성생명의 차세대 시스템은 자바 환경으로 2기 시스템을 완성해 성공적으로 오픈한 사례로 주목되고 있다. 국내 최대 규모로 진행된 차세대 자바 환경인 삼성생명 차세대 시스템은 2010년 12월 최종 오픈 했다. 이 프로젝트는 보험 코어, 경영분석, 고객통합, 채널, 콜센터, IFRS, 퇴직연금, BPM을 비롯, 대부분의 핵심 시스템들을 새롭게 개편하는 대규모 차세대 프로젝트였다. 대규모 배치와 셋터컷을 포함한 보험 코어, 경영 분석을 비롯한 보험 시스템의 핵심 업무 시스템이 완전한 자바 기반으로 새롭게 구축됐다.

여기에는 삼성SDS의 차세대 엔터프라이즈 자바 플랫폼인 ‘애니프레임 엔터프라이즈(Anyframe Enterprise)’가 적용됐다. 애니프레임 엔터프라이즈는 차세대 금융 시스템에 필요한 개발/실행/운영 관점에서 온라인과 배치, 센터컷 전체 환경을 자바로 구축했으며, 이를 통해 엔터프라이즈 환경을 위한 자바 플랫폼으로 완성됐다.

애니프레임 엔터프라이즈 제품은 이러한 차세대의 주요한 기술적인 문제점들을 해결하고 성능에 극대화하기 위한 독보적인 기술구조와 알고리즘을 기반으로 한 고성능의 자바 엔진을 제공한다. 수억 건을 가진 파일을 30분 이내에 처리하는 고성능 배치 엔진과 단일 업무를 수백개로 병렬 분산 처리하는 센터컷 엔진으로 완성된 차세대 엔터프라이즈 플랫폼 덕분으로 삼성 생명 차세대는 성공적으로 오픈 할 수 있었다.

애니프레임 엔터프라이즈는 성능 이외에도 개발 환경을 자바 중심으로 표준화시키고 자동화시켜, 다수의 개발자들이 표준을 정확히 준수해 개발 할 수 있는 기반을 제공하며, 검증된 다양한 오픈 소스를 활용하면서도 차세대 소프트웨어 아키텍처 구조의 정합성을 일관되게 유지하기 위해 개발 자동화 기술을 도입했고, 시스템의 안정적인 운용을 위한 관제 환경과 통합 관리 환경을 함께 제공한다.

클라우드 환경서 HW/SW 제약 없는 ‘자바’ 각광
자바의 열풍은 이제 막 시작되고 있다. 삼성생명 차세대를 필두로, 보험사 중심의 자바 환경 도입이 완성되고 있고, 카드, 증권, 은행 도메인까지 자바 도입에 적극적으로 나서고 있다. 앞으로 10년은 자바가 대세가 될 것이다.

특히 클라우드 컴퓨팅과 가상화 환경이 도입되면서 자바 가상머신에 기반한 하드웨어와 소프트웨어를가리지 않는 자바 환경이 더욱 각광을 받고 있다. 쉽게 말해 모든 플랫폼에 단일한 환경으로 설치되고, 이러한 단일 운영환경이 수백, 수천 대의 서버로 확장되면서 대규모로 운용될 수 있는 환경을 기다리고 있다.
이러한 차세대 환경을 완성하고, 성공적인 대형 시스템 구축을 위해서는 자바라는 기술 플랫폼의 특성을 근본적으로 이해하고 어려움을 해결하기 위한 다각도의 노력이 수반돼야 할 것이다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.