글래스피시
1. 개요
1. 개요
글래스피시는 이클립스 재단이 개발하고 배급하는 오픈 소스 애플리케이션 서버이자 웹 서버이다. 자바 엔터프라이즈 에디션 스펙을 구현하여 자바 가상 머신 상에서 동작하는 자바 EE 및 자카르타 EE 애플리케이션을 배포하고 실행하는 플랫폼을 제공한다. 2006년 6월 8일에 첫 출시된 이후 지속적으로 발전해 왔다.
이 서버는 자바 커뮤니티 프로세스의 참여를 통해 표준을 준수하는 동시에, 경량화된 모듈형 컨테이너 아키텍처를 특징으로 한다. 이클립스 재단의 관리 하에 공개적으로 개발되며, 아파치 라이선스 2.0과 같은 오픈 소스 라이선스로 배포되어 자유롭게 사용, 수정, 배포할 수 있다.
글래스피시는 웹 애플리케이션, 엔터프라이즈 자바빈즈, 자바 퍼시스턴스 API, 자바 메시지 서비스 등 다양한 자바 EE 기술 스택을 지원한다. 또한, 마이크로서비스 아키텍처와 클라우드 네이티브 환경에 적합한 마이크로프로파일 구현체도 제공한다.
주요 경쟁 제품으로는 레드햇의 와일드플라이, 오라클의 웹로직 서버, IBM의 웹스피어, 그리고 아파치 톰캣 등이 있다. 상용 제품 대비 무료로 사용 가능한 오픈 소스 솔루션으로서, 개발 및 테스트 환경부터 상용 프로덕션 시스템까지 폭넓게 활용된다.
2. 주요 기능
2. 주요 기능
글래스피시는 자바 EE 및 자카르타 EE 플랫폼을 위한 오픈 소스 애플리케이션 서버이다. 이클립스 재단이 주도하는 이 프로젝트는 자바 기반의 엔터프라이즈급 웹 애플리케이션과 서비스를 배포하고 실행하기 위한 핵심 런타임 환경을 제공한다.
주요 기능으로는 자카르타 서블릿, 자카르타 서버 페이지, 자카르타 엔터프라이즈 빈을 포함한 자카르타 EE 스펙의 완전한 구현을 들 수 있다. 이를 통해 개발자는 표준화된 API를 사용하여 확장성과 유지보수성이 뛰어난 웹 애플리케이션을 구축할 수 있다. 또한, 경량화된 컨테이너 아키텍처를 채택하여 빠른 시작 시간과 낮은 메모리 점유율을 특징으로 한다.
글래스피시는 관리와 운영을 위한 직관적인 웹 콘솔과 명령줄 도구를 제공한다. 이를 통해 서버 인스턴스의 구성, 애플리케이션 배포, 자원 모니터링, 로그 확인 등을 효율적으로 수행할 수 있다. 클러스터링과 로드 밸런싱 기능을 지원하여 고가용성과 확장성을 보장하는 것도 중요한 기능이다.
또한, OSGi 기반의 모듈식 아키텍처를 통해 필요한 기능만을 동적으로 로드하고 업데이트할 수 있어 유연성을 높였다. 다양한 데이터베이스와의 연결을 관리하는 JDBC 풀링, 트랜잭션 관리, 보안 인증 및 권한 부여와 같은 엔터프라이즈 애플리케이션에 필수적인 서비스도 제공한다.
3. 아키텍처
3. 아키텍처
글래스피시의 아키텍처는 자바 EE 플랫폼의 표준 사양을 구현하는 애플리케이션 서버로서, 모듈화된 설계를 핵심으로 한다. 이 서버는 이클립스 재단이 관리하는 오픈 소스 프로젝트로, 자바 가상 머신 위에서 동작하며 웹 서버 기능을 포함한 통합 실행 환경을 제공한다. 이러한 설계는 컴포넌트 기반의 엔터프라이즈 애플리케이션을 효율적으로 배포하고 실행하는 데 중점을 둔다.
글래스피시의 내부 구조는 커널과 모듈 시스템으로 구성된다. 핵심 커널은 서버의 기본적인 생명주기 관리와 모듈 로딩을 담당하며, 모든 주요 기능은 OSGi 프레임워크를 기반으로 한 모듈 형태로 구현되어 있다. 이는 웹 컨테이너, EJB 컨테이너, JPA 구현체, JMS 서비스 등 자바 EE의 다양한 기술 스택이 필요에 따라 동적으로 로드되고 관리될 수 있음을 의미한다.
이러한 모듈화된 아키텍처는 높은 유연성과 확장성을 제공한다. 관리자는 애플리케이션의 요구 사항에 따라 불필요한 모듈을 제외하고 최소한의 서버 프로필을 구성할 수 있으며, 이는 메모리 사용량 감소와 시스템 성능 향상으로 이어진다. 또한, 새로운 기능이나 사용자 정의 모듈을 기존 시스템에 손쉽게 통합할 수 있어, 마이크로서비스와 같은 현대적인 애플리케이션 개발 패러다임에도 대응이 용이하다.
서버의 구성 요소들은 관리 콘솔이나 명령행 도구를 통해 중앙에서 관리된다. 도메인 관리 모델을 지원하여 여러 서버 인스턴스를 하나의 논리적 단위로 묶어 구성, 배포, 모니터링을 단일화할 수 있으며, 이는 클러스터링 및 고가용성 구성을 위한 기반이 된다.
4. 버전 역사
4. 버전 역사
글래스피시의 첫 번째 안정 버전은 2006년 6월 8일에 출시되었다. 초기 버전은 썬 마이크로시스템즈의 애플리케이션 서버인 썬 자바 시스템 애플리케이션 서버 9.0의 오픈 소스 버전을 기반으로 하여 개발되었으며, 이후 이클립스 재단의 주도로 독자적인 발전 경로를 걸어왔다.
주요 버전 업그레이드는 자바 플랫폼, 엔터프라이즈 에디션의 새로운 스펙을 지원하기 위해 이루어졌다. 예를 들어, 글래스피시 3.x 버전은 Java EE 6을 완벽하게 구현했으며, 4.x 버전은 Java EE 7을 지원했다. 이후 자카르타 EE로의 전환에 따라, 글래스피시 5.x 버전은 자카르타 EE 8을, 최신 버전들은 자카르타 EE 9 및 자카르타 EE 10 플랫폼을 지원한다.
각 주요 버전은 핵심 컨테이너 성능 향상, 관리 도구 개선, 새로운 프로토콜 지원(예: HTTP/2) 등의 기능을 도입했다. 또한, 마이크로서비스 아키텍처와 클라우드 네이티브 환경에의 적응을 위해 경량화된 배포 옵션과 도커 이미지 제공이 지속적으로 강화되었다.
버전 관리와 배포는 이클립스 재단의 공개 개발 모델을 따르며, 소스 코드는 깃허브를 통해 공개되고 있다. 새로운 버전의 로드맵과 개발 진행 상황은 이클립스 재단의 공식 프로젝트 페이지를 통해 투명하게 공개된다.
5. 설치 및 구성
5. 설치 및 구성
글래스피시는 자바 가상 머신이 설치된 다양한 운영 체제 환경에서 설치할 수 있다. 공식 웹사이트에서 이클립스 재단이 배포하는 설치 파일을 내려받아 사용하는 것이 일반적이다. 설치 방식은 사용자의 운영 체제와 편의성에 따라 선택할 수 있으며, ZIP 파일을 압축 해제하는 간단한 방법부터, 패키지 관리자를 이용한 설치, 또는 도커 컨테이너 이미지를 활용하는 방법 등이 있다.
설치 후에는 asadmin이라는 명령줄 도구나 웹 기반의 관리 콘솔을 통해 서버를 구성한다. 주요 구성 작업으로는 JDBC 연결 풀과 JNDI 데이터 소스 생성, JMS 메시징 리소스 설정, 보안 영역 및 사용자 계정 관리, 가상 호스트 및 네트워크 리스너 구성 등이 포함된다. 서버의 핵심 설정은 domain.xml 파일에 저장되며, 이 파일을 직접 편집하거나 관리 도구를 통해 수정할 수 있다.
개발 및 테스트 환경을 빠르게 구성하기 위해 이클립스, 인텔리J IDEA, 넷빈즈 등의 통합 개발 환경에 글래스피시 플러그인을 연동할 수 있다. 또한, Maven이나 Gradle 같은 빌드 도구를 사용하여 애플리케이션을 패키징하고 자동으로 배포하는 워크플로우를 구성하는 것도 가능하다.
6. 관리 및 운영
6. 관리 및 운영
글래스피시의 관리 및 운영은 주로 웹 기반의 관리 콘솔과 명령줄 인터페이스를 통해 이루어진다. 관리 콘솔은 이클립스 재단이 제공하는 표준 애플리케이션 서버 관리 도구로, HTTP 또는 HTTPS 프로토콜을 통해 접근할 수 있다. 이를 통해 관리자는 도메인 설정, 애플리케이션 배포 및 제거, 자바 가상 머신 설정 조정, 데이터베이스 연결 풀 구성, 보안 정책 관리 등 서버의 전반적인 상태를 모니터링하고 제어할 수 있다.
운영 중인 서버의 로그 파일 관리도 중요한 운영 요소이다. 글래스피시는 서버 로그와 액세스 로그를 포함한 다양한 로그를 생성하며, 이들은 관리 콘솔에서 실시간으로 확인하거나 파일 시스템에서 직접 검토할 수 있다. 로그 레벨 설정을 통해 필요한 정보의 상세도를 조절하여 문제 해결과 시스템 모니터링을 효율적으로 수행할 수 있다. 또한, JMX 기술을 활용한 원격 모니터링과 관리를 지원하여 대규모 인프라 환경에서의 통합 운영을 용이하게 한다.
애플리케이션의 라이프사이클 관리도 운영의 핵심이다. 관리자는 관리 콘솔이나 asadmin이라는 명령줄 도구를 사용하여 WAR 파일이나 EAR 파일 형태의 애플리케이션을 배포, 활성화, 비활성화, 제거할 수 있다. 특히 롤링 업그레이드와 같은 무중단 배포 전략을 지원하여 서비스의 가용성을 유지하면서 애플리케이션을 업데이트할 수 있는 기능을 제공한다. 이러한 운영 도구들은 글래스피시가 안정적인 웹 서버 및 애플리케이션 플랫폼으로서의 역할을 수행하는 데 기여한다.
7. 보안
7. 보안
글래스피시는 자체적인 보안 아키텍처를 제공하여 자바 EE 애플리케이션의 안전한 실행 환경을 보장한다. 이는 자바 가상 머신 수준의 보안과 자바 EE 플랫폼이 규정하는 인증, 권한 부여, 데이터 무결성, 기밀성 등의 보안 서비스를 통합적으로 구현한다. 서버는 보안 영역을 통해 다양한 사용자 저장소(LDAP, JDBC, 파일 시스템 등)와 연동한 사용자 인증을 지원하며, 역할 기반 접근 제어를 통해 애플리케이션 자원에 대한 세밀한 접근 통제가 가능하다.
SSL/TLS를 통한 통신 암호화는 물론, 관리 콘솔 및 원격 관리 접근에 대한 보안 설정을 구성할 수 있다. 또한, 자바 보안 관리자 정책 파일을 활용하여 코드 출처나 서명에 기반한 세부적인 권한 제어를 적용할 수 있어, 신뢰할 수 없는 코드의 실행을 제한하는 데 유용하다. 이러한 보안 설정은 대부분 도메인 구성 파일이나 관리 콘솔을 통해 중앙에서 관리된다.
8. 성능 튜닝
8. 성능 튜닝
글래스피시의 성능을 최적화하기 위해서는 자바 가상 머신 튜닝, 스레드 풀 구성, 캐싱 정책 설정, 데이터베이스 연결 관리 등 여러 측면을 고려해야 한다. 성능 튜닝의 핵심은 애플리케이션의 실제 부하 패턴을 분석하여 병목 현상을 찾고, 글래스피시의 다양한 구성 요소를 조정하여 자원을 효율적으로 활용하는 데 있다.
주요 튜닝 요소로는 JVM의 힙 메모리 크기(Xms, Xmx)와 가비지 컬렉터 종류 선택이 있다. 적절한 힙 크기 설정은 빈번한 가비지 컬렉션으로 인한 성능 저하를 방지한다. 또한, HTTP 리스너나 EJB 컨테이너와 관련된 스레드 풀의 최소/최대 크기, 작업 큐 크기를 조정하여 동시 요청 처리 능력을 향상시킬 수 있다.
JDBC 연결 풀 설정도 중요한 부분이다. 최대 연결 수, 유휴 연결 타임아웃, 연결 유효성 검사 주기 등을 애플리케이션의 데이터베이스 사용량에 맞게 최적화해야 한다. 이와 함께, 정적 자원이나 JSP 페이지에 대한 캐싱을 활성화하고 캐시 크기를 조절하면 디스크 I/O 및 컴파일 오버헤드를 줄일 수 있다.
성능 모니터링은 튜닝 과정의 필수 단계이다. 글래스피시 관리 콘솔이나 asadmin 명령줄 도구를 통해 JVM 메모리 사용량, 스레드 상태, JDBC 연결 풀 통계 등을 실시간으로 확인할 수 있다. 이러한 모니터링 데이터를 바탕으로 구성 값을 지속적으로 조정하여 시스템의 안정성과 처리량을 극대화한다.
9. 클러스터링 및 고가용성
9. 클러스터링 및 고가용성
글래스피시는 단일 서버 구성뿐만 아니라 여러 서버 인스턴스를 하나의 논리적 단위로 묶어 운영할 수 있는 클러스터링 기능을 제공한다. 이를 통해 고가용성과 확장성을 확보할 수 있으며, 부하 분산과 장애 조치를 구현하는 데 핵심적인 역할을 한다. 클러스터는 동일한 도메인 내에서 구성되며, 각 인스턴스는 HTTP 세션 복제, EJB 및 JMS 메시지의 상태 공유를 통해 협력한다.
클러스터링 구성은 주로 관리 콘솔이나 명령줄 인터페이스를 통해 이루어진다. 클러스터에 속한 인스턴스들은 DAS를 통해 중앙에서 관리되며, 애플리케이션 배포나 구성 변경 사항이 클러스터 전체에 자동으로 전파된다. 세션 지속성을 위해 메모리 기반 복제나 데이터베이스를 이용한 공유 저장소 방식을 선택할 수 있어, 한 인스턴스에 장애가 발생하더라도 사용자 세션 데이터를 유지할 수 있다.
고가용성을 위한 장애 조치 메커니즘은 HTTP 로드 밸런서와 긴밀하게 연동되어 작동한다. 일반적으로 아파치 HTTP 서버와 mod_jk 또는 mod_proxy 모듈을 조합하여 사용하며, 하트비트 신호를 통해 인스턴스의 상태를 모니터링한다. 활성 인스턴스에 문제가 감지되면, 로드 밸런서가 자동으로 트래픽을 클러스터 내 다른 정상 인스턴스로 전환한다.
이러한 클러스터링 및 고가용성 구조는 웹 애플리케이션의 무중단 서비스를 보장하는 데 필수적이다. 특히 전자상거래나 금융 거래와 같이 지속적인 가용성이 요구되는 엔터프라이즈 애플리케이션 환경에서 중요한 역할을 한다.
10. 확장성 및 모듈
10. 확장성 및 모듈
글래스피시는 모듈식 구조를 기반으로 하여 높은 확장성을 제공한다. 핵심 서버는 경량화된 커널로 구성되며, 필요한 기능은 모듈 형태로 동적으로 추가하거나 제거할 수 있다. 이러한 설계는 애플리케이션의 요구사항에 맞춰 서버의 기능과 리소스 사용량을 최적화할 수 있게 해준다. 사용자는 불필요한 서비스를 배제한 최소한의 런타임 환경을 구성할 수 있어, 클라우드 및 컨테이너 기반 배포에 특히 유리하다.
확장성은 주로 OSGi 프레임워크를 활용한 모듈 시스템을 통해 구현된다. 각 기능은 독립적인 번들로 패키징되어 관리되며, 런타임 시에 의존성을 해결하고 로드된다. 이는 마이크로서비스 아키텍처와 유사한 유연성을 제공한다. 또한, 이클립스 재단의 생태계와 호환되는 다양한 서드파티 모듈을 활용할 수 있어, 보안, 모니터링, 데이터베이스 연결 등 특정 기능을 쉽게 확장할 수 있다.
주요 확장 모듈로는 웹 서버 기능을 강화하는 HTTP 및 HTTPS 커넥터, 자바 EE 및 자카르타 EE 스펙을 구현하는 서블릿 컨테이너, EJB 컨테이너, JPA 지원, 메시징 시스템(JMS) 연동 모듈 등이 있다. 또한, 관리 콘솔, 로깅 프레임워크 통합, 클러스터링 지원 모듈 등을 추가하여 운영 및 관리 기능을 보강할 수 있다. 사용자는 공식 저장소 또는 커뮤니티에서 제공하는 모듈을 탐색하고 설치하여 서버의 기능을 필요에 맞게 자유롭게 조립할 수 있다.
11. 호환성
11. 호환성
글래스피시는 자바 플랫폼, 엔터프라이즈 에디션의 공식 참조 구현체로서, 다양한 자바 EE 및 자카르타 EE 스펙션을 지원한다. 이는 자바 EE 애플리케이션을 표준에 따라 개발하고 실행할 수 있는 호환성 있는 환경을 제공하는 것을 핵심 목표로 한다. 이클립스 재단의 관리 하에 지속적으로 업데이트되며, 각 버전은 특정 자카르타 EE 플랫폼 버전에 대한 호환성을 인증받는다.
주요 호환성은 사용하는 자바 가상 머신 버전, 자바 EE 또는 자카르타 EE API 스펙션, 그리고 데이터베이스 및 외부 웹 서버와의 연동 측면에서 확인된다. 글래스피시는 아파치 톰캣과 같은 서블릿 컨테이너를 내장하고 있어 독립 실행형 웹 서버로 작동할 수 있으며, 아파치 HTTP 서버나 마이크로소프트 IIS와 같은 외부 웹 서버와의 연동을 위한 커넥터 모듈도 제공한다.
또한, 다양한 JDBC 드라이버를 통해 오라클 데이터베이스, MySQL, PostgreSQL 등 주요 상용 및 오픈소스 데이터베이스와의 연결을 지원한다. 통합 개발 환경 측면에서는 이클립스 IDE, 넷빈즈, 인텔리J IDEA 등 대부분의 주요 IDE에서 글래스피시 서버를 통합하고 애플리케이션을 배포하는 기능을 제공한다.
글래스피시의 모듈형 OSGi 기반 아키텍처는 필요에 따라 특정 자카르타 EE 기술 스택만을 포함한 경량화된 프로필을 생성할 수 있게 하여, 특정 환경에 맞는 유연한 호환성을 보장한다. 이는 마이크로서비스 아키텍처와 같은 현대적인 애플리케이션 개발 트렌드에 부응하는 호환성의 한 형태이다.
