JBoss EAP 와 Wildfly 차이점
JBoss의 의미는 무엇인가요?
JBoss는 1999년에 Mark Fleury가 EJB컨테이너를 오픈소스로 개발하기 위해 EJBOSS(Enterprise Java Beans Open Source Software)라는 이름으로 시작한 프로젝트였지만 SUN과의 상표권 문제 때문에 앞의 E를 빼고 현재의 JBoss라는 이름이 되었습니다.
JBoss의 의미는 무엇인가요?
JBoss는 1999년에 Mark Fleury가 EJB컨테이너를 오픈소스로 개발하기 위해 EJBOSS(Enterprise Java Beans Open Source Software)라는 이름으로 시작한 프로젝트였지만 SUN과의 상표권 문제 때문에 앞의 E를 빼고 현재의 JBoss라는 이름이 되었습니다.
Server Side Architect Group에서 진행한 In Memory Data Grid – Infinispan(JBoss Data Grid)에 대한 웨비나 동영상입니다.
“Horseless Carriage”는 “말이 없는 마차” 라는 의미입니다. 지금은 Car (자동차) 라는 단어로 쓰이고 있습니다.
NoSQL이 SQL이 없는 데이터베이스를 의미하는 것처럼 NoSQL를 잘 전달하기 위한 좋은 아이디어라고 생각됩니다.
기존의 RDBMS 는 데이터베이스 + SQL(인터페이스) 로 생각해보면 NoSQL (Not Only SQL) 은 SQL 인터페이스가 아닌 데이터베이스라고 할 수 있을 것입니다.
JBoss Datagrid (Infinispan) 에 저장된 데이터가 예기치 못한 장애나 서버 작업으로 인하여 유실되었을 경우를 대비해 File이나 DB 로 Persistence 하게 저장할 수 있도록 하는 Persistence 와 캐시스토어 설정과 사용방법에 대해 예제를 통하여 살펴봅니다. 이 예제는 Infinispan 6.0.1 버전을 기반으로 하였으며, JBoss Data Grid 버전으로는 6.2.0 버전에 해당합니다.
Drools 6.0 룰 엔진에서 선언적 프로그래밍 형태의 간단한 룰 애플리케이션을 작성해 봅니다.
선언적 프로그래밍은 ‘어떻게 해야 하는가’(How to do it) 아닌 무엇을 해야 하는가 ’What to do’에 집중하여 프로그래밍하는 방법입니다.
예를 들자면 “최댓값 구하기”를 절차적 프로그래밍 언어로 구현한다면 루프를 이용하여 값의 집합에서 각 값을 반복적으로 비교하고 최종적으로 최댓값을 구하는 코드로 작성할 것입니다.
만약 이 문제를 룰 시스템을 이용하여 해결한다면 최댓값은 값의 집합 중에 가장 큰 값이 될 것입니다. 즉 “값의 집합에서 그 값보다 큰 값이 존재하지 않는 값” 이라고 할 수 있습니다.
이 책에는 그동안 미들웨어 엔지니어로서 현장에서 직접 경험했던 컨설팅, 장애 지원, 기술지원, 튜닝, 벤치마크 테스트 등을 바탕으로 JBoss EAP6 (AS7) 과 관련된 시스템 (웹서버, 리눅스 등) 들을 운영하는 데 필요한 여러 지식과 경험을 담았다. JBoss EAP6 ( AS7 ) 에 관한 개발환경 구성과 운영 환경에 필요한 설치 ,구성 , 애플리케이션 배포, 보안, 관리, 모니터링 및 성능 튜닝을 소개하고 있다.
JBoss EAP7 또는 Wildfly 에서는 JBoss EAP6 (JBoss AS7) 이전 버전에서 사용하던 tomcat 기반의 JBossWeb 대신 Undertow를 사용합니다. Undertow는 웹서버와 서블릿 컨테이너 기능을 제공합니다. Java Servlet 3.1 표준과 WebSocket 을 구현하고 Http Upgrade를 지원합니다. 또한 서블릿 배포 환경에서 고성능 Non-Blocking 핸들러를 사용할 수 있습니다.
Infinispan (http://infinispan.org/)은 레드햇/JBoss의 오픈소스 분산 메모리 Key/Value 데이터 그리드 솔루션입니다. Hazelcast나 redis와 같은 솔루션에서는 Key/Value 방식이외에 Queue와 같은 자료 구조를 제공하기 때문에 편리하게 사용할 수 있습니다.
Infinispan에서 Queue와 같은 자료구조를 Key / Value 구조만으로 Linked-List를 만들어 샘플을 구현했습니다. Infinispan은 트랜잭션을 지원하기 때문에 포인터와 Queue Element의 입/출력시에는 트랜잭션을 사용했습니다.
JBoss EAP6에서 인스턴스 시작 시 참조되는 바인딩 주소와 각종 디렉터리를 지정하는 시작 파라미터들에 대해 설명한다.
도메인모드와 스탠드얼론 모드 각각 $JBOSS_HOME/bin/domain.sh 와 $JBOSS_HOME/bin/standalone.sh 를 파라미터 없이 실행하면 기본 설정으로 JBoss EAP6 인스턴스가 실행된다.
아래에서 설명한 내용들은 다음의 URL에서 참조할 수 있다.
l JBoss AS7 Command line parameters
(https://docs.jboss.org/author/display/AS7/Command+line+parameters )
Drools 6.0에서는 지금까지의 ReteOO 대신 Phreak ( Lazy Matching)라는 새로운 룰 엔진 알고리즘이 도입되었다. 하지만 기존의 RetoOO도 선택적으로 사용할 수 있으며 사용 방법 또한 이전과 동일하다. Phreak 의 가능 큰 차이점은 효율적으로 멀티코어를 사용하여 성능에 보다 최적화된것이다. 또한 Rete와 비교하였을때 룰의 복잡성이 증가하면 RETE는 성능이 떨어지지만 ,Phreak는 큰 영향을 받지 않는다.