오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

JBoss EAP 8 주요 변경사항 가이드

6 more properties

들어가며

Red Hat에서 JBoss EAP(Enterprise Application Platform) 7.0을 release한 지 무려 8년이 지난 2024년 2월 5일, 드디어 JBoss EAP 8.0이 출시되었어요!
JBoss EAP는 On-Premise, Cloud와 같은 다양한 환경에서 Java EE, Jakarta EE 애플리케이션을 배포하고 관리하는 미들웨어 플랫폼인데요.
Clustering, Messaging 등의 기능을 필요한 경우에만 활성화할 수 있는 모듈식 구조와 Standalone Mode를 하나의 프로세스로도 서비스할 수 있어서 Cloud Native한 특성을 가지고 있답니다.
JBoss EAP 8.0은 Jakarta EE 10 스팩과 향상된 보안 기능을 지원하기 위해 출시되었으며, UpStream Project인 오픈소스 Wildfly 27 이상과 대응돼요.
흥미로운 점은 Wildfly 오픈소스 프로젝트에서 최신 사양을 선적용하고 검증한 후 JBoss EAP에 반영하기 때문에, 다른 WAS(Web Application Server)보다 빠르게 최신 사양을 지원하면서도 더 높은 안정성을 보장한다는 거예요!
JBoss EAP 7.0과 8.0은 많은 차이점이 있지만, 7.x 버전의 꾸준한 업데이트 덕분에 최신 버전인 JBoss EAP 7.4.16과 8.0은 상당히 유사한 편이에요.
따라서 현재 JBoss EAP 8.0 Documentation은 현대화 작업이 진행 중이기 때문에 JBoss EAP 8.0을 사용하기 위해서는 JBoss EAP 7.4.x 버전의 Documentation을 참고하면 도움이 될 거예요!
이번 글에서는 JBoss 7.0 버전과의 차이점을 중심으로 신규 버전에 대한 정보를 제공해서, JBoss EAP 8.0으로 서비스를 개발·운영하고자 하는 분들에게 도움이 되고자 해요.

버전 별 주요 특징

WAS 운용에서 가장 중요하게 고려해야 할 건 바로 지원하는 JAVA 버전을 체크하는 거예요!
따라서 JBoss EAP 8.0을 설치하고 활용하려면 사전에 Application의 JDK 버전을 확인하고, Application이 javax 패키지가 아닌 jakarta 패키지를 사용했는지 확인하는 과정이 필요해요.
상용 WAS 중에서 아직 JDK 11까지만 지원하는 제품이 많은데, JBoss EAP 8.0은 JDK 11과 17을 지원해요!
만약 JDK 17로 개발을 진행했거나 진행할 계획이라면 정말 좋은 선택지가 될 수 있답니다.
하지만 주의하세요!
JBoss EAP 8.1 버전부터는 JDK 17만 호환될 계획이라고 RedHat에서 공지했어요.
이 내용을 참고해서 버전 별 지원 스팩에 유의하여 적합한 WAS를 운용하는 것이 중요해요.

Life Cycle Duration

JBoss EAP 8.x 버전은 Long-life Product로 분류되어 RedHat의 Long-life Product Life Cycle 정책에 따라 다음과 같은 지원을 받아요:
정식 Release 이후 4년간의 Full Support
3년간의 Maintenance Support
3년에서 6년간의 Extended Life Support

추가 및 변경 된 기능

1. Domain 모드 Naming 규칙 변경

Domain 모드에서 사용하는 주요 명칭이 변경되었어요.
공학 분야에서 주로 사용하던 master와 slave 명칭이 최근 서양 사회를 중심으로 논란이 되면서, 여러 제품에서 primary와 secondary 같은 중립적인 명칭으로 바뀌고 있는 추세예요.
RedHat도 이런 흐름을 반영한 것 같아요!
또한 blacklist와 whitelist 명칭도 blocklist, allowlist로 바뀌어서 더 직관적으로 사용할 수 있게 되었답니다.
기존 JBoss EAP 6.x, 7.x 버전에서 Domain 모드를 사용하고 있다면 업그레이드할 때 이 부분을 꼭 확인해 주세요!

2. Patch 방법 변경 및 추가

JBoss EAP 8.0부터 jboss-eap-installation-manager.sh 파일이 새로 추가되었어요!
RedHat 공식 다운로드 페이지에서 이 파일을 다운받아서 JBoss EAP를 설치할 수 있답니다.
기존 JBoss EAP 7.x 이하에서 사용하던 CLI 명령어 patch applyinstaller update로 변경되었어요.
또한 ${JBOSS_HOME}/bin/jboss-eap-installation-manager.sh를 사용해서도 패치를 진행할 수 있답니다.
JBoss EAP 8.x 버전의 가장 큰 변화는 패치 방식이 Online 방식Offline 방식으로 나뉘었다는 점이에요!

2.1 jboss-eap-installation-manager.sh 를 활용한 패치

2.1.1 Online 방식
패치 파일을 직접 다운로드하지 않고 온라인으로 업데이트 리스트를 확인해서 적용할 수 있어요!
물론 인터넷 접속이 가능한 환경이어야 해요.
2.1.2 Offline 방식
로컬 서버에 repository를 구축한 후, 해당 repository의 패치 파일을 활용해서 업데이트하는 방식이에요.
이 방식으로 패치하려면 JBoss EAP가 종료된 상태여야 해요.
2.1.3 복원 방법 (rollback)
패치 히스토리를 검색해서 원하는 시점의 Version으로 복원할 수 있어요!
복원을 진행하려면 JBoss EAP가 종료된 상태여야 합니다.

2.2 CLI 명령어를 활용한 패치

2.2.1 Online 방식
JBoss EAP 7.x 버전에서 하던 방식과 동일하게 CLI 명령어로도 패치가 가능해요.
다만 7.x 버전에서 사용했던 patch 명령어가 deprecated 되어서 installer 명령어를 사용해야 해요.
인터넷이 가능한 환경이라면 패치 파일 없이도 적용할 수 있답니다!
2.2.2 Offline 방식
기존처럼 패치 파일을 다운로드해서 적용하는 방법이에요.
patch apply 대신 installer update 명령어를 사용하면 돼요.
2.2.3 복원 방법 (rollback)
CLI 명령어로도 패치 롤백을 할 수 있어요.

3. Picketbox, Elytron 으로 Migration

인증, 권한 부여, 암호화 기능을 담당하던 Picketbox가 JBoss EAP 8.0부터 deprecated 되어서 Elytron으로 Migration을 진행해야 해요.
RedHat에서는 JBoss EAP 7.1부터 이런 Migration을 권장해 왔답니다.
JBoss EAP 8.0에서 보안 설정 관련 Migration을 지원하는 elytron-tool.sh 스크립트는 ${JBOSS_HOME}/bin/ 경로에 있어요.
보안 설정에 대한 자세한 Migration 가이드는 RedHat 공식 Documentation을 참고해 주세요!
Elytron 보안 사용의 큰 장점 중 하나는 서버와 애플리케이션 전반에 걸쳐 일관된 보안 솔루션을 제공한다는 점이에요!

4. TLSv1.3 Protocol 지원

JBoss EAP 8.0부터 Protocol TLSv1.3을 지원해요!
7.x 버전에서 지원했던 보안 규칙 설정(picketbox)이 8.x 버전으로 업그레이드되면서 Elytron으로 Migration되었답니다.
SSL 인증서를 적용하려면 바뀐 설정 방법으로 SSL 설정을 진행해야 하고, TLS 1.3 버전을 사용하려면 Linux 8 이상, JDK 11 이상 버전 환경에 JBoss EAP가 설치되어야 해요.
TLSv1.3 Protocol은 cipher-suite-names 옵션을 설정해서 활성화할 수 있으며, 기본적으로는 비활성화되어 있어요.
Elytron Subsystem에서 다음과 같이 설정할 수 있답니다:
cipher-suite-names="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
주의사항: JDK 11 환경에서 TLS 1.3 요청 수가 매우 많은 경우 TLS 1.2에 비해 성능(처리량 및 응답 시간) 저하가 발생할 수 있어요.
최신 JDK 버전으로 업그레이드하면 성능이 향상될 수 있답니다!

5. JGroups 버전 업그레이드

jgroups 버전이 3.6.12.Final에서 5.2.18.Final로 대폭 업그레이드되었어요!
이는 JBoss EAP에서 jgroups subsystem 버전이 4.0에서 9.0으로 업그레이드되었음을 의미해요.
주요 변경점은 프로토콜 버전 업그레이드예요:
FD_SOCKFD_SOCK2
FD_ALLFD_ALL3
VERIFY_SUSPECTVERIFY_SUSPECT2
FRAG3FRAG4
새로운 RED 프로토콜 추가!
FD_SOCK2는 한 개의 Thread를 사용하게 로직이 변경되어서, 세 개의 Thread를 사용하는 FD_SOCK에 비해 더 적은 오버헤드를 가져요.
VERIFY_SUSPECT2 프로토콜은 충돌하는 두 개의 SUSPECT 이벤트를 한 번에 전송하게 변경되어서 기존 방식보다 빠른 처리 속도를 보여줘요!
이런 업그레이드들로 클러스터링 기능의 신뢰성과 성능 향상을 기대할 수 있답니다.

6. Infinispan 웹 세션 선호도 옵션 및 affinity-cookie 설정

JBoss EAP 8.0에서 웹 세션 선호도 및 affinity-cookie 추가 옵션을 통해 더욱 효과적으로 로드 밸런싱을 할 수 있게 되었어요!
웹 세션 선호도 옵션은:
JBoss EAP 7.0: Primary-owner로만 고정 (설정 불가)
JBoss EAP 7.3 이상: 적용 가능하지만 수동 설정 필요
JBoss EAP 8.0: WebConsole, CLI 두 가지 방법 모두 지원!
설정하지 않을 시 Default는 Primary-owner이며, 네 가지 선호도 옵션 중에서 현재 운영 환경에 맞는 옵션을 선택할 수 있어요.

7. PROTOSTREAM Mashaller 추가

default cache container의 marshaller가 JBOSS에서 PROTOSTREAM으로 변경되었어요!
PROTOSTREAM은 Google Protocol Buffer인 Protobuf을 마샬링하기 위한 Java API예요.
PROTOSTREAM이 JBOSS Marshalling보다 가지는 장점들:
컴파일 동안 마샬링 스키마를 구축해서 더 적은 메모리 공간 사용
reflection(반사)에 의존하지 않아서 더 빠른 속도
임의 코드 실행 문제 해결 및 향상된 보안 성능
Protobuf 스키마가 존재하는 메시지만 읽기 가능
이전 JBoss EAP 7.x 버전에서는 JBOSS marshaller만 사용해서 설정 및 검색 방법이 없었지만, 8.0부터는 설정 및 검색이 가능해졌어요!
PROTOSTREAM marshaller가 기본 설정값이자 RedHat 권장 설정값이라서, 변경이 필요한 경우는 신중한 검토가 필요해요.
해당 marshaller 옵션을 제거하면 marshaller=LEGACY로 설정되는데, 이는 JBoss EAP 7.3 이전 버전의 동작을 하므로 엔진 동작이 달라질 수 있어요!

8. WebConsole non-heap memory 모니터링 기능 추가

JBoss EAP 8.0은 Heap Memory와 마찬가지로 Non-Heap Memory도 모니터링할 수 있도록 WebConsole에 Non-Heap Memory 그래프가 추가되었어요!
WebConsole을 사용하는 운영 환경이라면 더욱 많은 정보를 얻을 수 있답니다.

마치며

IT 산업은 클라우드 기술의 발전으로 인해 기존의 3-Tier 인프라 구조에서 클라우드로 많은 서비스가 마이그레이션되면서 큰 변화를 겪고 있어요.
이에 따라 MSA(Microservices Architecture)와 Serverless 같은 기술들이 주목받고 있으며, 유연성과 확장성을 제공해서 현대적인 애플리케이션 개발의 핵심 요소로 자리 잡았답니다.
그럼에도 불구하고 WEB/WAS(Web Application Server)는 3-Tier 인프라뿐만 아니라 클라우드 환경에서도 여전히 중요한 역할을 하고 있어요!
WEB/WAS는 안정성, 성능, 보안 측면에서 오랜 기간 검증된 솔루션으로 서비스 및 애플리케이션을 안정적으로 지원해요.
JBoss EAP는 하이브리드 클라우드 및 멀티 클라우드 전략을 통해 기존 인프라와의 원활한 통합을 가능하게 해서, 클라우드 전환을 고려하는 기업들에게 중요한 이점을 제공한답니다!
JBoss EAP의 다양한 기능과 이점을 이해하면, 이를 바탕으로 효과적인 인프라 설계 및 운영 전략을 수립할 수 있어요.
이 글이 신규, 차세대 프로젝트에서 WAS 도입 및 전환을 계획하는 Infra 담당자들에게 유용한 지침이 되길 바라요!
앞으로도 WEB/WAS의 미래 발전 방향과 최신 기술 트렌드에 대한 정보를 제공하는 데 노력하겠습니다!

References

https://access.redhat.com/support/policy/updates/jboss_notes