개발관련/자바2009. 6. 12. 13:36

에너지 효율적 데이터센터 구축을 위한 팁 10가지

애플리케이션의 성능, 사용 용이성, 민첩성을 자세히 비교해 수 있는 방법을 알려 드립니다.



항시 CEO는 IT 관리에 대해 단순한 의문을 품곤 합니다. 왜 고객들은 새로운 온라인 주문 시스템에 불만을 표하는 것일까? 신규 웹 서비스를 출시하는 데 8개월이나 걸리는 이유는 무엇인가? 내가 즐겨 사용하는 재무 보고 애플리케이션이 오늘 아침에 문제를 일으킨 원인은 무엇인가?

하지만 IT 관리 측면에서 '회사가 어떤 애플리케이션 서버 기술을 사용하고 있는가' 에 대해 의문을 던지는 CEO는 거의 찾아보기 힘듭니다. 이는 상당히 중요한 사안이라고 볼 수 있는데, 왜냐하면 개발팀이 사용하는 애플리케이션 서버와 기업의 애플리케이션 성능/민첩성 간에는 직접적인 연관성이 있기 때문입니다.

좀 더 구체적으로 설명하자면, 애플리케이션 서버에서 사용되는 웹 컨테이너 기술은 애플리케이션의 품질과 개발자의 생산성을 결정짓는 중요한 요소입니다. 결국 웹 컨테이너 기술을 올바로 도입한다면 개발팀의 업무 효율이 향상되고 고성능 애플리케이션을 신속하게 개발할 수 있는 효과가 있겠지만, 선택을 잘못 할 경우에는 이 자체가 애물단지로 전락할 공산이 커집니다.

따라서 여러분의 비즈니스에서 애플리케이션이 중추적 역할을 담당하고 있다면 애플리케이션 서버, 웹 컨테이너 기술은 물론, 이들이 개발팀에 어떠한 영향을 미치는지 세심하게 조사해봐야 합니다. 이에 본 기사에서는 현재 널리 애용되고 있는 오픈 소스 옵션인 GlassFish와 Tomcat를 비교해 보는 시간을 마련했습니다.

많은 차이점을 보이는 두 가지 인기 옵션

GlassFish 커뮤니티가 제공하는 오픈 소스 애플리케이션 서버 GlassFish는 2005년 썬을 통해 선보인 이래로 개발자들 사이에서 큰 인기를 끌고 있습니다. GlassFish는 현재 두 가지 버전의 보급판(GlassFish v2와 새로 발표된 Glassfish v3 Prelude)이 시중에 나와 있으며, 그 중 GlassFish v2는 현재까지 다운로드 횟수가 약 9백만 카피에 달하며 2009년 한 해에만 이미 30만 개의 제품이 등록되었습니다. 여기에 신기능을 추가하고 기존 기능을 더욱 강화한 Glassfish v3 Prelude는 Java나 동적 언어(jRuby 등) 기반의 리치 인터넷 애플리케이션 개발에 더할 나위 없는 최고의 플랫폼으로 평가 받고 있습니다.

GlassFish는 웹 컨테이너의 일종인 Java EE 컨테이너에 속해 있는 반면, Tomcat은 그 자체로 웹 컨테이너를 구성하고 있습니다. 그리고 이러한 두드러진 차이점은 GlassFish에 여러 이점을 가져다 줍니다.

Tomcat 애플리케이션 서버는 Apache 소프트웨어 재단에 의해 개발되었으며, Sun과 JServ 개발자들도 이 프로젝트에 참여한 바 있습니다(초기 코드 드롭을 썬에서 제공). 오픈 소스 러이선스가 적용된 Tomcat은 초기 서버측 Java 도입 단계에서 핵심적인 역할을 담당했으며, 대기업들 간에 오픈 소스 소프트웨어의 붐을 일으키는 데 기여하기도 했습니다.

일반적으로, Tomcat 상에서 구동되는 애플리케이션은 GlassFish에서도 그대로 사용이 가능하나, 두 제품 간에는 애플리케이션의 성능, 확장성, 사용성 및 개발자 생산성에 영향을 미칠 수 있는 중요한 차이점이 있습니다.

이러한 차이점을 이해하기 위해서는 먼저 웹 컨테이너 기술에 대해 살펴보는 것이 중요합니다. 애플리케이션 서버에 속하는 웹 컨테이너는 서블릿, JSP(JavaServer Pages), 기타 웹 티어 컴포넌트의 관리를 담당합니다.

GlassFish는 웹 컨테이너의 일종인 Java EE 컨테이너에 속해 있는 반면, Tomcat은 그 자체로 웹 컨테이너를 구성하고 있습니다. 그리고 이러한 두드러진 차이점은 GlassFish에 여러 이점을 가져다 줍니다.

  • 간편한 마이그레이션. GlassFish v2를 이용하면 Enterprise Java Beans(EJBs), Java Persistence API(JPA), Java Message Service(JMS) 등의 이점을 확실하게 누릴 수 있습니다. 반면에 Tomcat의 경우 상기의 기술을 개별적으로 추가해 줘야 하는 번거로움이 있으며, 개발자는 그 기능을 일일이 구현해서 이들이 제대로 돌아가도록 해야 합니다.
  • 향상된 클러스터링 및 페일오버 지원. GlassFish v2가 제공하는 클러스터링과 정교한 고가용성 기능은 애플리케이션이 엄격한 엔터프라이즈급 SLA(Service Level Agreement)를 충족할 수 있도록 설계되었습니다. GlassFish v3 Prelude는 아직 클러스터링 프로파일이 적용되지 않은 관계로 로드 밸런서를 통해 클러스터링을 지원하고 있습니다.
  • 강력한 관리/모니터링 기능. GlassFish v2와 v3 Prelude 모두 관리 콘솔과 Command Line Interface(CLI)를 이용한 중앙식 관리 방식을 지원하고 있고, 특히 GlassFish v2에서 제공하는 Callflow Monitoring 기능은 애플리케이션 개발자 또는 서버 관리자가 애플리케이션이 가장 많이 사용되는 영역을 파악할 수 있도록 도와줍니다(이 기능은 GlassFish v3에서도 지원됨). 또한 여타 벤더들도 GlassFish Update Center를 통해 GlassFish를 간편하게 설치하고 각자의 소프트웨어를 활용할 수 있습니다. 반면에 Tomcat의 경우 새로운 소프트웨어 사용 시 이를 일일이 구성해주어야 하는 불편함이 있습니다. Update Center는 또한 EJB 3.1 같은 최신 기술을 손쉽게 액세스할 수 있게 해주므로 애플리케이션을 EAR 파일로 패키징하는 대신 EJB를 WAR로 번들링하는 것이 가능합니다.
  • 다양한 스크립팅 언어 지원. GlassFish는 Ruby/JRuby, Python/Jython, Groovy, PHP, JavaScript/Phobos, Scala 같은 다양한 언어들을 지원합니다(또는 지원 예정).

본격 비교: 웹 컨테이너와 관련한 또 다른 차이점

앞서 언급한 일반적인 이점 외에도 GlassFish이 Tomcat에 비해 두드러지는 점은 바로 웹 컨테이너 기능입니다. 몇 가지 예를 들면 다음과 같습니다.

  • v3 Prelude의 애플리케이션 재배치 시 세션 유지 능력은 개발자가 보다 단기간에 Java 웹 애플리케이션을 개발할 수 있도록 도와줍니다.
  • GlassFish v2/v3 Prelude는 서버를 재시작하지 않고 가상 서버와 HTTP Listener를 동적으로 재구성할 수 있게 해주는 반면, Tomcat에서는 리소스 풀을 변경할 경우 보통 애플리케이션 서버를 재시작해야 합니다.
  • v2와 v3 Prelude의 고성능·고확장 Grizzly Framework가 요청/응답 쓰루풋을 극대화합니다. 또한 GlassFish의 하위 웹 티어 레이어가 이 Grizzly Framework을 통해 구현되는데, Java로 제작된 이 프레임워크는 NIO API(확장 네트워크 및 파일 I/O)의 이점을 최대한 활용함으로써 높은 확장성 뿐 아니라 고도의 커스터마이징 능력까지 제공합니다.
  • GlassFish v2와 v3 Prelude는 다양한 성능 최적화 기능을 제공합니다. 그 중 하나로 각 밸브의 호출 방식을 간소화함으로써 Stack Depth를 제한하고 성능을 개선해 주는 밸브 아키텍처 수정판인 "Flattened Valve Invocation"을 들 수 있습니다. 또한 GlassFish v3 Prelude은 Tomcat 스타일의 밸브도 지원합니다.

그 밖에도 썬은 광범위한 확장성 테스트를 통해 Tomcat의 NIO 커넥터와 Glassfish를 비교해 보았습니다. 이 테스트에는 컨테이너에서의 시간 소모를 최소화하기 위해 단순한 서블릿이 이용되었고, 사용자 증가와 관련하여 각종 컨테이너가 지원할 수 있는 능력(작업/초)이 측정되었습니다. 가령 16,000명의 사용자를 기준으로 했을 때, 벤치마크 결과는 다음과 같습니다.

  GLASSFISH TOMCAT
작업/초 6988.9 6615.3
평균 응답 시간 0.242 0.358
최대 응답 시간 1.519 3.693
90% 응답 시간 0.6 0.75

올바른 제품 선택을 위해서는

애플리케이션 서버는 개발팀은 물론이고 기업 운영의 많은 부분에까지 영향을 미치는 중요한 요소입니다. 따라서 애플리케이션 서버 선택은 그 중요도 면에서 고도의 전략적 비즈니스 의사결정을 내리는 것과 맞먹는다고 할 수 있습니다. 이에 우리 썬은 GlassFish가 차세대 애플리케이션을 개발하는 개발자들에게 있어 최상의 옵션이 될 것이라고 자신 있게 주장하는 바이지만, 동시에 다른 대안에 대해서도 신중하게 검토해볼 것을 권하고 싶습니다. GlassFish와 Tomcat에 대한 추가 정보 및 비교 자료를 원하시면 썬 백서를 참조하십시오.

Posted by 자개비