'R&D/최신기술동향'에 해당되는 글 2건

 

 

 

오픈소스 미들웨어 제이보스(JBoss)

제이보스(JBoss)는 자바를 기반으로 하는 오픈 소스 미들웨어의 총칭으로, 대표적으로는 Java EE 스펙을 지원하는 제이보스 애플리케이션 서버가 있다.

Java EE 서버란 Java Enterprise Edition(EE) 표준에 따라 구현된 서버를 의미하며 흔히 Java EE 서버를 WAS(Web Application Server)라고 부르는데 이러한 서버에는 Oracle WebLogic, IBM WebSphere, Adobe JRUN, JBoss, Apache Geronimo, Tmax JEUS등이 있다.

JBoss는 현재 40개 이상의 다양한 프로젝트가 있으며, Jboss.org 커뮤니티에 의해 개발 및 운영되고 있다.

원래 JBossEJB오픈소스로 개발하기 위해 Mark FleuryEJBOSS(Enterprise Java Beans Open Source Software)라는 이름으로 시작한 프로젝트였지만 SUN과의 상표권 문제 때문에 앞의 E를 빼고 현재 JBoss라는 이름이 되었다.

JBoss는 각 프로젝트의 핵심 개발자를 JBossInc.의 직원으로 고용하고 있으므로 오픈 소스의 프로젝트이면서 직원으로 고용하면서 제품 개발을 계속하는 독특한 형태를 취하고 있다. JBossInc.는 소프트웨어를 프리라이선스로 제공하면서 지원 서비스를 판매하여 수익을 올리고 있다.

2006년에는 상용 리눅스 벤더인 레드헷에서 인수하여 JBoss프로젝트를 운영하고 있다. 2007년부터 레드햇은 각종 컴포넌트의 제공 및 보증 및 통합 품질 테스트를 완료한 JBoss소프트웨어를 JBoss엔터프라이즈 미들웨어로 제공하고 있다.

 

주요 JBoss 프로젝트는 다음과 같다.

 

JBoss Application Server

JBoss Web
JBoss ESB
JBoss Messaging
JBoss jBPM
JBoss Transactions
JBoss Web Services
JBoss Tools
JBoss Cache
JGroups
Mobicents
Hibernate
JBoss RichFaces
JBoss Ajax4jsf
JBoss Portal
JBoss Seam
JBoss EJB3
JBoss AOP
•JAAS

Apache Tomcat과 JBossAS

Apache Tomcat은 Java EE 표준에 포함되어 있는 JSP, Servlet, JSTL 등과 같은 웹 애플리케이션 개발을 위한 표준을 구현한 웹 컨테이너이다. Java EE 표준에는 다양한 컨테이너가 정의되어 있는데 대표적인 컨테이너가 웹 컨테이너와 EJB 컨테이너이다. 웹 애플리케이션을 개발하기 위해서 필요한 웹 컨테이너를 구현한 것이 바로 Apache Tomcat이며, JBossAS는 Java EE 표준에 포함되어 있는 모든 표준을 구현한 완전한 Java EE 서버라고 할 수 있다. 예를 들면 EJB나 JMS를 사용한 애플리케이션을 개발하고자 하는 경우에는 반드시 JBossAS와 같은 Java EE 표준을 모두 구현한 서버를 사용해야 한다. 그러나 단순한 웹 애플리케이션을 구현하는 경우에는 Apache Tomcat을 사용할 수 있다. JBossAS에는 기본적으로 Tomcat이 내장되어 있으므로 Tomcat을 사용했었던 사용자는 손쉽게 JBossAS로 웹 애플리케이션을 이전할 수 있다.

 

 

<JBoss 주요 기술>

 

 

 

JBoss의 커널 : MicroContainer

JBoss MicroContainer(http://www.jboss.org/jbossmc) 프로젝트는 JBoss 하부 커널을 담당하는 프로젝트로 WAS를 구성하기 위해 필요한 Servlet/JSP 컨테이너, EJB 컨테이너, Deployer, 트랜잭션 관리 등 다양한 기능을 처리하는 JBoss.org 내의 프로젝트들의 결과물을 결합하여 애플리케이션 서버를 보다 수월하게 생성할 수 있도록 한다

 

대표적인 OR Mapper : Hibernate

Hibernate(http://www.hibernate.org/)는 대표적인 오픈소스 ORM(Object Relational Mapping) 프레임워크이다. 객체 모델링을 통해 도출된 데이터 구조를 저장소(데이터베이스)로 손쉽게 매핑할 수 있다.

 

사용자 인터페이스 기술 : JSP, JSF, AJAX

데이터 모형을 사용자 인터페이스에 효과적으로 연결하기 위한 방법론 설계 방식이자 MVC(Model-

View-Controller) 방식으로 웹 페이지를 개발하기 위하여 만들어진 Struts는 웹 개발에 널리 사용되어 왔지만, 몇 가지의 취약점을 보완하기 위해 Struts를 만든 Craig R. McClanahan은 본격적으로 사용자 인터페이스를 컴포넌트화할 수 있는 JSF(Java Server Faces)라는 JCP(Java Community Process) 표준을 만들어 냈다. JSF는 기본적으로 JSP를 화면 표시용 기술로 사용하지만 XUL(XML User Interface Language)과 같은 다른 사용자 인터페이스 기술을 활용할 수 있다. 또한 자바의 AWT나 Swing과 마찬가지로 완벽한 MVC 모델 기반으로 사용자 인터페이스를 만들 수 있고 컴포넌트화가 가능한 것이 특징이다.

 

Java EE IoC 프레임워크 : Seam Framework(JSR-299)

EJB 3.0과 JSF를 사용하여 개발하면 이전의 작업과 비교하여 많은 단순 반복 작업이 줄어 들지만 영속성 계층(Persistence Layer)과 사용자 인터페이스(JSF)의 연결을 위해서는 여전히 Backing Bean, Controller, DAO 등 단순 반복 작업이 필요하다. 이를 해결하기 위하여 IoC(Inversion of Control) 프레임워크인 Seam(http://seamframework.org/)을 고안하게 되었고 Google의 Guice와 함께 표준화 작업을 진행하여 Java EE 플랫폼을 위한 Java Context와 Dependency Injection(CDI)가 프레임워크 표준(JSR-299)인 Java EE 6 표준으로 채택되었다.

 

 

Seam 프레임워크는 Dependency Bijection이라는 양방향 Injection 기술을 사용하여 EJBJSF를 연결한다. 또한 컨버세이션(Converstaion)이라는 HTTP 세션보다 상세하게 상태를 관리하는 컨텍스트를 제공해 웹 애플리케이션 개발을 쉽게 한다. XML의 사용을 최소화하여 어노테이션 기반의 편리한 프로그래밍이 될 수 있도록 한다. SeamRule 엔진인 Drools, jBPM, JMS, Mail, PDF, AJAX 등 다양한 기술들을 통합하고 있다.

 

대용량 고가용성 서비스 : 분산 캐시

WAS에서는 대용량 서비스 지원 시 여러 WAS 인스턴스, 여러 대의 머신에 부하를 분산하여 서비스한다. 이런 서비스를 위해서는 부하를 분산하기 위한 Load Balancing 기술과 장애 발생 시 타 인스턴스에서 이전 작업을 계속할 수 있도록 상태정보를 복제해 놓는 작업이 필수다. TCP/IP 중 여러 대의 머신에 데이터를 전송하기 위한 기술로 멀티캐스트(Multicast)가 있다. 멀티캐스트 프로토콜은 그룹에 속한 모든 멤버(인스턴스)들에게 동시에 메시지를 전달할 수 있지만 메시지가 유실될 수 있다는 게 단점이다. 이에 대처하기 위해 메시지 유실 시 기본 멀티캐스트 프로토콜에 메시지의 재전송을 명령하고 큰 메시지는 작게 나누어 전송하며, 메시지 순서를 보장하는 등 통신의 신뢰성을 제공하기 위한 프로젝트(Reliable Multicast)JGroups(http://www.jgroups. org/)이다.

 

고성능 네트워크 애플리케이션 개발 : Netty

Netty는 고성능 고확장성 프로토콜 서버와 클라이언트를 신속하게 개발할 수 있도록 해주는 비동기, 이벤트 드리븐 네트워크 애플리케이션 프레임워크이다. 프로토콜 코덱(Codec)에 대한 처리, SSL/TLS 지원, HTTP 프로토콜 지원, Google Protocol Buffers(http://code.google.com/apis/protocolbuffers/) 통합 등 네트워크 애플리케이션 개발을 위한 다양한 기능을 제공하고 있다. Netty 프로젝트는 SMS 서버, 게임서버, 채팅서버, 포스 단말기 서버, RFID 서버 등 다양한 분야에서 활용되고 있다.

 
비동기 메시지 전송 : HornetQ(JMS)

MOM(Message Oriented Middleware)이란 메시지를 비동기적으로 전달하여 처리할 수 있는 특징을 가진 시스템이다. 이런 종류의 제품에는 IBMMQSeries, SonicMQ 등이 있다. 자바에서 이러한 메시징을 처리하기 위한 공통적인 APIJMS (Java Messaging Service)이며, 이는 Queue를 이용, 메시지를 PTP(Peer-to-Peer) 방식으로 전달하거나, 발행/구독(Publish-Subscribe)과 같이 여러 구독자에게 메시지를 동시에 전달하는 방식을 제공한다. 비동기 메시지 전송기능은 Java EE 표준에 포함되어 있어 Jboss 역시 HornetQ라는 프로젝트를 통해 JMS기능을 제공하고 있다. HornetQPOJO기반으로 설계되어 있어 별도의 메시징 서버로 동작할 수 있을 뿐 아니라 JBoss MicroContainer, Spring, Google Guice등 다른 프레임워크나 제품에 Embedded되어서 사용될 수 있다.

 

•엔터프라이즈 서비스 버스 : ESB

ESB(Enterprise Service Bus)는 SOA의 기반이라 할 수 있는 개방형 표준을 기반으로 한 비즈니스 시스템을 연결하기 위한 기술이다. 이 기술은 중앙의 서비스 레지스트리(UDDI)에 서비스 정보를 보관하고 서비스를 활용하여 새로운 서비스를 쉽게 만들어 낼 수 있게 하는데 JBoss ESB는 JMS를 기반으로 메시지 채널을 구성하여 메시지를 처리한다. SOAP, JMS, HTTP, FTP 등의 표준 메시지를 처리할 수 있으며 메시지의 변환이 필요한 경우 Smooks 변환엔진(http://www.smooks.org/)이나 XSLT를 사용한다. 또한 메시지의 라우팅을 위하여 Drools 룰 엔진이나 XPath를 사용할 수 있고 jBPM이나 BPEL을 사용하여 서비스를 오케스트레이션할 수 있다. 웹서비스, JMS 메시지뿐만 아니라 다양한 메시지 포맷을 받아 처리할 수 있도록 최신 버전에서는 Apache Camel(http://camel.apache.org/)을 게이트웨이로 사용할 수 있다.

 

복잡한 규칙 처리를 위한 Rule 엔진 : Drools

Rule 엔진이란 최소한의 지식(Knowledge)만으로 결론을 추론(inferencing)해 낼 수 있는 도구이다. 지식과 추론은 규칙(Rule)으로 정의되며 생성 규칙은 주어진 조건들이 True일 때 실행되는 Action으로 구성된다. 조금 복잡한 이야기인 것 같지만 간단히 말해 프로그램상에 존재하는 if-then-else와 같은 조건문들을 하나의 규칙(Rule)으로 분리하여 처리할 수 있도록 하는 엔진이다. 많은 수학적 기술들이 필요한 엔진이라고 할 수 있다. JBoss Drools는 이런 추론 엔진, 즉 Rule 엔진이며 RETE라는 패턴 매칭 알고리즘을 사용한다. JBoss Drools 프로젝트는 자바로 구현된 룰 엔진으로 이클립스 기반의 룰 개발/디버깅 환경과 웹 기반 률 관리 UI를 제공하며, 이는 규칙이 자주 변경되어 하드 코딩할 경우 유지보수 및 변경이 어려운 보험 업무, 제어 처리 등 다양한 분야에 활용되고 있다. 

 

경량 BPM 엔진 : jBPM

BPM(Business Process Management)은 기업의 비즈니스 프로세스를 체계적이고 효율적으로 관리할 수 있도록 하는 방법이며 이를 지원하기 위한 BPM 소프트웨어들이 있다. JBossjBPM 엔진은 비즈니스 분석가와 개발자 간의 협업을 쉽게 할 수 있도록 하며 오랫동안 실행되는 프로세스들을 비주얼하게 표시하는 데 사용된다. 또한 사람과 애플리케이션/서버 간을 중계하는 역할도 한다. jBPM은 일종의 State Machine이라고 할 수 있으며 언어중립적인 Process Virtual Machine이라는 프로세스 실행 엔진을 가지고 있다. 또한 다양한 프로세스 언어를 지원할 수 있도록 설계되었기 때문에 jPDL, BPEL, BPNM 등을 실행할 수 있다. 또 프로세스의 설계를 위해 이클립스 기반의 프로세스 디자이너를 제공하며 실행 상태를 모니터링하기 위한 웹 기반 콘솔을 제공한다.

 

데이터 통합 : Teiid

EII(Enterprise Information Integration)이란 조직 내의 모든 데이터를 단일한 인터페이스로 사용할 수 있도록 하는 데이터 통합 프로세스이다. 간단히 말해 여러 데이터 소스를 통합하여 마치 가상의 데이터베이스처럼 사용할 수 있도록 하며 JDBC, Web Services와 같은 인터페이스로 사용할 수 있도록 하는 기술이다.

 

 사용자 포털 : GateIn Portal

기업의 애플리케이션들이 개수 및 복잡도가 증가함에 따라 다양한 정보를 사용자에게 통합하여 제공하기 위한 방법이 필요해졌다. 이런 요구에 의해서 포틀릿(JSR 168)이라는 표준이 생겨났고 이 표준을 제공하는 것이 JBoss의 GateIn Portal (http://www.jboss.org/gatein)이다. 통합되는 대상에 따라 EIP(Enterprise Information Portal), KEP(Knowledge based Enterprise Portal), EAP(Enterprise Application Portal)로 구분될 수 있다. 포털은 포틀릿을 이용한 애플리케이션 통합 및 사용자별 개인화 기능을 제공하며 한 번 로그인하여 연결된 사이트를 이용할 수 있도록 하는 SSO(Single Sign ON), 콘텐츠 관리(JCR) 등의 기능을 제공한다.

 

 

 

정리

언급한 프로젝트 외에도 다양한 프로젝트들이 있지만 JBoss.org의 몇 가지 주요 프로젝트들을 살펴보았다. WAS를 구성하는 데 필요한 주요 핵심 컴포넌트들뿐만 아니라 WAS를 기반으로 한 다양한 서비스 프레임워크들도 개발되고 있다는 사실을 알게 되었을 것이다. 이외에도 OSGi, Ruby 언어를 JVM에서 실행할 수 있도록 하는 TorqueBox, VOIP 기술을 위한 Mobicent, Tuxedo같은 TP 모니터링 기능을 하는 BlackTie, 관리 및 모니터링을 위한 RHQ, 클라우드 컴퓨팅을 위한 StormGrind, Byte code 조작을 위한 Byteman, 테스트를 위한 여러 프로젝트들 등등 관심을 가질만한 다양한 프로젝트가 진행 중이다.

JBoss의 프로젝트들은 모두 독립적으로 활용될 수 있으며, JBoss WAS뿐 아니라 타 회사 제품의 WAS에서도 사용될 수 있도록 설계되고 있다. 따라서 각각의 핵심적인 프로젝트 모듈들이 독립적으로 동작할 수 있을 뿐 아니라 이 결과물들을 Seamless하게 묶어 WAS로 만들어 내고 있다.

참조. 위키피디아, 마이크로소프트웨어(2011.06)

 

 

블로그 이미지

(주)싸이크로스

(주)싸이크로스 www.sycros.com

댓글을 달아 주세요

빅 데이터의 시대 - 하둡(Hadoop)

 

500기가를 59초만에, 100테라바이트를 173분만에 정렬하는 하둡은 상상을 초월하는 데이터 분석 성능을

제공한다. 클라우드 컴퓨팅의 역사를 바꾸는 하둡!


 

최첨단 IT기술이 세상을 지배하고 있는 현재는 데이터 폭증의 시대이다.  

전 세계의 인터넷 사용자 수는 20억명 가량 되며 사용 중인 모바일 디바이스는 이미 46억대를 넘어서고 있다.

또한 전문가들은 현재의 데이터가 2015년까지 약 500% 성장할 것으로 전망하고 있고, 이렇게 매일 2.5퀸틸리언(100, 100만의 6제곱)바이트의 데이터가 생성되고 있는 상황에서 IT업체들은 이토록 엄청난 양의 데이터를 분석해야 하는 과제에 직면하고 있으며 이를 해결하기 위한 방법의 하나로 '하둡(Hadoop)'이 고안되었다.

하둡은 구글파일시스템(GFS)에서 비롯되어 구글이 자사의 서비스 플랫폼을 공개한 후 YAHOO의 개발자 더그 커팅이 만들어낸 빅데이터 처리 기술이다.

구글이 자신들의 검색 서비스를 위해 사용하고 있던 분산 파일 시스템인 GFS와 분산 처리 시스템 MapReduce에 대한 논문을 발표하면서 구글의 분산 시스템 방식이 널리 알려지게 되었다.

당시 오픈 소스 검색 엔진인 넛치(Nutch)를 개발 중이던 더그 커팅(Doug Cutting)은 넛치에서 웹 검색 수준의 대용량 데이터 처리를 위해 여러 대의 컴퓨터를 연결해서 작업을 수행하는 기능을 구현하는데 있어 많은 어려움을 느끼고 있었는데 마침 구글의 논문을 접한 더그 커팅은 여기에 나온 내용을 참고하여 구현한 소프트웨어가 바로 하둡이다.

이렇듯 하둡은 분산처리 시스템인 구글 파일 시스템(GFS)을 대체할 수 있는 하둡 분산 파일 시스템(HDFS)과 데이터를 분산시켜 처리한 뒤 하나로 합치는 기술인 맵리듀스를 구현한 오픈소스 프레임워크다. 아파치 소프트웨어 재단 소속으로 HDFS외 피그, H베이스 같은 프로그래밍 언어를 포함하고 있다.

하둡은 페이스북과 야후, 국내의 네이버 등 인터넷 서비스업체에서 활발히 사용되고 있으며 최근 KT가 유클라우드 서비스를 위해 하둡 전문업체 넥스알 인수를 발표하면서 더욱 인기가도를 달리고 있다.

가상화시스템을 주도하고 있는 클라우드 컴퓨팅은 한 인프라에 존재하는 이용자 정보량도 셀 수 없을 정도로 많으며 이 막대한 데이터를 안정적으로 관리하지 못하면 클라우드 컴퓨팅을 도입한 이유마저 사라져 버리게 된다.

또한 클라우드를 도입하는 기업들은 비용대비 최대 효과를 노리기 때문에 인프라비용을 최대한 줄이게 되고, 클라우드 사업자는 저가 하드웨어로 인프라를 채우면서 오픈소스 SW로 안정성을 높이는 게 일반적이기 때문에 안정성을 높이는 한편 이러한 대용량 정보를 저장, 분석하기 위한 수단으로 하둡을 선호하게 되었다.

2007 11월 마이크로소프트의 CEO인 스티브 발머는 "10년 후에는 사내에서 운용되는 서버는 클라우드로 이행되어 사라진다."라고 말했다. 썬마이크로시스템즈의 CTO인 그렉 파파도폴라스는 "세상에는 단 5대의 컴퓨터만 있으면 된다. 구글, 마이크로소프트, 야후, 아마존, 이베이, 세일즈포스닷컴이다." 라고 말했다. 이는 왜 클라우드 컴퓨팅 시대가 올 수 밖에 없는지를 단적으로 말하고 있는 것이며 앞으로 클라우드 컴퓨팅과 하둡과의 관계가 더욱 긴밀해 질 수밖에 없음 말하고 있는 것이다.

 이렇게 급격한 성장가도를 달리고 있는 하둡에 대해 IDC하둡과 맵리듀스 생태계 소프트웨어 풍경 2012′라는 보고서를 통해 2011 7700만달러 수준인 하둡과 맵리듀스과 관련 시장이 2016년이 되면 81280만달러에 이를 것으로 보인다고 분석했다. 매년 60% 넘게 성장하는 셈이다. 또한 IDC 애널리스트는 보고서를 통해 이번 기회에 말로만 무성했던 하둡과 맵리듀스 시장의 실체와 가능성을 파악하고, 이들이 비구조화된 데이터로부터 기존에는 발견하지 못했던 새로운 가치를 만들어내고 있다는 사실을 깨닫게 됐다라며 지금까지는 하둡에 대한 개념 정리가 주를 이뤘다면, 2013년부터는 하둡을 통해 실제로 가치를 만들어 내는 방향으로 관련 시장이 발전할 것으로 보인다라고 설명했다.

허나 “하둡이 급속도로 성장한 것과 달리 하둡을 다룰 수 있는 개발자 수는 현저히 부족하다라며 이는 앞으로 2~3년 동안은 하둡이 성장하는 데 한계로 작용할 것으로 보인다라는 지적을 받은 것은 하둡의 장미빛 미래 이면에 반드시 풀고 나가야만 하는 여러 가지 과제를 품고 있다는 사실 또한 알려주고 있는 것이다.

 


하둡 기술 요소

 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)분산 처리 시스템인 MapReduce로 구성되어 있다. HDFS MapReduce는 둘 다 Master/Slave 구조인데 HDFS에서 Master Name node, Slave Data node라고 부르며 MapReduce에서는 각각 JobTracker TaskTracker라고 부른다.

HDFS에서는 Master Name node가 파일의 메타(meta) 정보를 관리하고 실제 데이터는 여러 대의 Data node에 분산해서 저장한다. 이 때, 데이터는 일정 크기(default 64MB)의 블록단위로 나뉘어 관리되며 이 블록들을 여러 대의 Data node에 분산 및 복제해서 저장한다. 이렇게 하는 이유는 일부 Data node에 장애가 발생하더라도 전체 시스템에서 데이터를 읽고 쓰는데 문제가 없도록 하기 위함이다.

MapReduce는 이렇게 HDFS에 분산 저장된 데이터를 여러 대의 TaskTracker에서 병렬로 처리함으로써 대용량의 데이터를 빠르게 처리하고자 만들어진 시스템이다. 특히 MapReduce JobTracker에서 TaskTracker의 상태 및 전체 작업의 진행 상황 등을 지속적으로 감시하며 일시적인 장애에 대해서 자동으로 복구하는 기능을 제공하기 때문에 일부 TaskTracker 장비에 문제가 발생하더라도 전체 작업이 진행되는데 문제가 없도록 설계되어 있다. 또한 JobTracker가 여러 대의 TaskTracker에게 자동으로 작업을 할당하고 결과를 통합해 주기 때문에 사용자는 전체 작업 흐름 및 세부 사항에 크게 신경쓰지 않고 데이터 처리 로직에만 집중할 수 있다.

 

참조.

gimmesilver's blog Hadoop_Guide_ext.pdf  (URL  http://Agbird.egloos.com)

 

※ 빅데이터 관련 기사

핫이슈-분석엔진 `R` 분석시장 판도 바꾼다 - 전자신문 <2012.05.06 일자>

배포 제한없는 오픈소스...하둡과 만나 분석시장 '큰 일 낸다' - 전자신문 <2012.05.07 일자>

 

 

블로그 이미지

(주)싸이크로스

(주)싸이크로스 www.sycros.com

댓글을 달아 주세요