Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

Java vs. .NET 성능 비교 (2010.07)

Java vs. .NET 성능 비교 (2010.07)

  • Comments 3

약 한달 전 쯤인 2010년 7월 2일 마이크로소프트가 닷넷과 자바에 관한 웹 애플리케이션 및 웹 서비스에 관한 성능 비교 자료를 내놓았다. 이름하여 "Microsoft .NET Framework 4.0 vs. IBM WebSphere 7 StockTrader Benchmark Report”로서 이는 작년 2009년 3월에 공개한 성능 비교 자료에 대한 업데이트이다.  작년 비교자료에 대해 올렸던 이전 포스트를 참고하면서 이 포스트와 함께 비교하며 읽으면 한층 재미가 있을 것으로 생각한다. 비교자료에 관한 상세한 정보는 http://msdn.microsoft.com/stocktrader 에서 찾을 수 있으며, 이 테스트에 사용된 모든 자바 및 닷넷 소스 코드 또한 이 싸이트에서 다운로드 받을 수 있다. 
예전 비교와 달라진 것은 .NET Framework 버전이 3.5에서 4.0으로 업그레이드 되었고, Windows Server 버전이 2008에서 2008 R2로 달라졌고 따라서 IIS 또한 7.0에서 7.5로 높아졌다. 아울러 모든 테스트 환경은 64 Bit인 것은 작년과 동일하다.

이 테스트는 IBM이 WebSphere 기반으로 J2EE의 베스트 프랙티스를 바탕으로 만든 애플리케이션인 Trader를 닷넷 버전으로 만들어 아키텍처나, 각종 WAS 세팅에 대한 정보를 공개하여 독자 검증을 거치고 있으며, 성능과 확장성을 검증하며 이에 드는 비용을 산정하여 가장 비용 합리적인 애플리케이션 구축 방안을 제시함을 목적으로 한다. (예전 PetStore 관련 비교시와는 전혀 다르며 아키텍처나 소스 코드를 모두 공개하여 자신있게 결과를 공표하고 있다.)

서버 사양
1. IBM Power 570 with IBM WebSphere 7 and AIX 5.3
2. Hewlett Packard BladeSystem C7000 with IBM WebSphere 7 and Microsoft Windows Server 2008 R2
3. Hewlett Packard BladeSystem C7000 with Microsoft .NET 4.0 and Windows Server 2008 R2
JavaEE의 경우 IBM Power 570에서 한번, HP BladeSystem에서 한번, 이렇게 두번 진행하고 .NET의 경우 HP BladeSystem에서 한번 진행했다. (아마도 오해의 소지를 없애기 위해 JavaEE의 경우 IBM H/W에서 한번, 동일한 조건의 HP H/W에서 한번 진행한 것으로 보인다.)

테스트 항목 (작년과 동일)
1. 일반적인 웹 애플리케이션 성능 비교 : 웹 페이지에서 비지니스 로직을 호출하고 데이터베이스에서 가져온 정보를 웹에 뿌리는 일반적인 웹 애플리케이션 성능 비교로서 자바의 경우 JSP + Servlet + JDBC direct 호출 방식으로 오해를 없애기 위해  EJB를 사용치 않았다. 닷넷의 경우 ASP.NET + BLL + ADO.NET의 일반적인 방식을 따른다.
2. 미들티어 웹 서비스 성능 비교 : 클라이언트 부분은 배제하고, 비지니스 로직에서 데이터베이스 접근 로직을 거쳐 가져온 데이터를 SOAP 기반의 표준 웹 서비스로 노출하는 것 까지를 포함한다. 즉, SOAP 메시지로 serialization하는 성능까지만 포함한다.
3. 웹 서비스 벤치마크 (WSTest) : 애초 Sun 만들어 배포한 WSTest를 수정하여 진행하는 것으로 비지니스 로직을 전혀 담지 않고 순수하게  자바와 닷넷의 웹 서비스 스택 성능만을 비교한다. 즉, IBM WebSphere의 웹 서비스 스택 즉 JAX-WS 구현체와 마이크로소프트의 웹 서비스 구현체인 WCF의 성능을 비교한 것이다.

위 세가지 경우에 있어서 공통적으로 적용한 규칙은 테스팅 툴을 사용하여 30분간 부하를 적용하고 유지가능한 최고 TPS (Transaction per second)를 선정하는 것이다. 또한 성능 테스트에서 인프라가 방해를 하지 않도록 데이터베이스 서버의 CPU는 항상 50% 미만을 유지하도록 하였고, 비지니스 로직이 올라가는 서버 (WAS)의 CPU는 96% 정도 유지하여 최상의 성능을 발휘하도록 설정하였다.

시스템 아키텍처
웹 애플리케이션 성능 비교의 경우 Mercury의 LoadRunner를 사용하였으며, 32대의 물리적 클라이언트가 사용되었고, 각 클라이언트는 수백명의 서로 다른 사용자로 부하를 생성했으며, 각 사용자는 매 요청마다 1초의 Think time을 갖는 방식으로 진행되었으며 30분간 진행되었다. 에러 발생 빈도는 측정 기간동안 0.01%이내에 위치하도록 모니터링되었다.

image

미들티어 웹 서비스 성능 비교 및 WSTest 웹 서비스 벤치마크의 경우에는, .NET Capacity Planner 웹 서비스 테스트기를 이용하였고, 0.1초의 Think Time을 갖는 10개의 서로 다른 클라이언트에서 부하를 생성하였다.

image

공정한 벤치마크 테스팅을 위한 고려사항
1. 자바의 경우, Java EE 5 기반의 WebSphere 7에서 최적화되고 가장 빠른 Trader 애플리케이션 적용하였으며, EJB사용하지 않고 직접 JDBC를 호출하여 데이터베이스 작업하는 방식으로 JSP 와 Servlet 만을 이용하여 개발되었다. 또한 최적의 성능을 위해 WebSphere의 경우 쓰레드 풀, 커넥션 풀, queue connection factory, Heap size 등등에 대한 튜닝이 진행되었으며 결과적으로 최고 TPS 측정시 CPU 사용량이 96~100%이 될 수 있도록 하였다.
2. 캐쉬의 경우 양쪽 모두 적용하였다. 자바의 경우 WebSphere Servlet Caching을 적용하였고 닷넷의 경우 .NET Cache API를 적용하였다.
3. 데이터베이스의 부하 측면에서는 StockTrader를 만든 IBM의 기본 부하보다 더 현실적으로 하기 위해 500,000계정으로 각 계정마다 5개의 주문, 100,000 quote를 기본으로 가져가도록 했다.
4. 데이터베이스 구성은 IBM WebSphere 7의 경우 All-IBM 구성을 따랐으며 IBM DB2 v9.5 (Enterprise Edition), 최신의 IBM DB2 v9.5 JDBC 드라이버가 사용되었다. .NET의 경우 SQL Server 2008 (Enterprise Edition)을 사용하였다. 이 벤치마크는 데이터베이스 성능 비교가 아니기 때문에 데이터베이스때문에 결과가 왜곡되지 않도록 충분한 성능을 발휘하는 H/W를 제공되었다. (자세한 H/W 사양은 결과 리포트를 참고하시길...)
5. 총 36페이지 보고서에 공정한 테스트를 위한 고려사항 무려 6페이지를 차지할 정도로 닷넷과 자바 양 진영에서 모두 수긍할 수 있는 수준을 유지하려 했다.
6. 뒷 부분 부록에는 6페이지에 걸쳐 이 테스트에 사용된 각종 하드웨어, 소프트웨어에 대한 목록과 가격표를 제공한다. 또한 부록 B에는 3장에 걸쳐 WebSphere와 IIS에 대해 설정한 각종 설정값 및 튜닝한 정보를 상세히 제공하여 오해의 소지를 없앴다.

벤치마크 결과
1. 일반 웹 애플리케이션 성능 비교
앞서 기술한 대로 IBM WebSphere 7의 경우 EJB 없이 JSP/Servlet만으로 직접 JDBC 호출한 것이며, .NET의 경우 ASP.NET/Web Forms에서 ADO.NET을 통해 데이터베이스 호출한 경우이다.  작년 결과와 비교하면, 약간 의외의 사실도 발견할 수 있다. 전반적인 결과는 작년과 비슷하나 TPS 측면에서 Windows Server 2008 기반의 WebSphere의 성능은 향상되었고, IIS의 성능은 약간 내려가서 오히려 Windows Server 2008 R2 기반에서 WebSphere가 IIS보다 TPS숫자는 아주 약간 높게 나왔다. 물론 Power 570 보다는 Windows Server 2008 R2기반일 때 성능이 훨씬 좋다.

image

위와 같은 TPS를 달성하기 위해 지출된 비용을 산정하여, 역으로 하나의 TPS를 달성하기 위한 지불된 비용을 계산하면 아래와 같다.

image

이를 통해 다음과 같은 사실을 알 수 있다.
1. .NET / Windows Server 2008 R2 / HP BladeSystem C7000 조합이 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 기반의 Java EE에 비해 37% 성능이 우수함을 알 수 있으며, 서버를 구성하기 위해 들어간 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우가 .NET / Windows Server 2008 / HP BladeSystem C7000 에 비해 419% 더 지출된 것을 알 수 있다.
2. IBM WebSphere 7 / Windows Server 2008 R2 / HP BladeSystem C7000 의 성능이 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 에 비해 성능이 39% 더 나은 것을 알 수 있으며, 서버 구성에 들어간 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 조합이 IBM WebSphere 7 / Windows Server 2008 / HP BladeSystem C7000조합보다 198% 더 비싼 것을 알 수 있다.
3. 전반적으로 Windows Server 2008 R2 기반의 닷넷이 비용 성능 측면에서 훨씬 우수함을 알 수 있다. IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 조합은 .NET / Windows Server 2008 R2 / HP BladeSystem C7000 조합보다 성능 대비 비용이 8배 높은 것으로 나타났다. 이는 결국, 같은 부하를 감당하는 시스템을 구축할 경우 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 조합이 .NET / Windows Server 2008 R2 / HP BladeSystem C7000 조합에 비해  비용을 8배나 더 지출해야함을 의미한다.

2. 미들티어 웹 서비스 테스트
이 테스트는 StockTrader의 비지니스 서비스 앞단에 웹 서비스를 위한 Facade를 만들고 이 Facade부터 데이터베이스 단까지의 성능을 비교한 것이다. 앞의 웹 애플리케이션 성능 비교와 다른 점은 전체 페이지가 아닌 개별 SOAP 요청이 처리되는 것을 기준으로 TPS가 산출된다는 것이다.
IBM WebSphere의 경우 웹 서비스 Facade는 JAX-WS로 구현되었고 표준 SOAP/WSDL 기반의 서비스를 노출하며, 사용자의 요청을 IBM HTTP Server가 WebSphere상의 웹 서비스 티어로 전달하는 구조로 되어 있다. .NET의 경우 WCF를 사용하여 웹 서비스 Facade를 구현하였고 SOAP/WSDL 기반의 표준 웹서비스를 노출하며, IIS 7.5가 사용자의 요청을 WCF 기반의 서비스에 전달한다.
.NET Capacity Planner 웹 서비스 테스트 툴을 이용하여 SOAP 요청을 생성하여 테스트를 진행하였다.

image

비용 대비 성능비 (Price Performance Ratio) 는 아래와 같다.

image

결과를 통해 다음과 같은 사실을 알 수 있다.
1. .NET / Windows Server 2008 R2 / HP BladeSystem C7000 조합이 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 조합에 비해 웹 서비스 성능이 111% 더 우수함을 알 수 있다. 반면, 서버 구성에 지출된 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 서버의 경우가 .NET / Windows Server 2008 / HP BladeSystem C7000 의 경우보다 419% 더 지출된 것을 알 수 있다.
2. IBM WebSphere 7 / Windows Server 2008 R2 / HP BladeSystem C7000 조합의 경우가 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우보다  성능이 37% 더 우수함을 알 수 있다.  반면 서버 구성에 지출된 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우가 IBM WebSphere 7 / Windows Server 2008 / HP BladeSystem C7000의 경우보다 198% 더 지출된 것을 알 수 있다.
3.전반적으로 비용 대비 성능 측면에서 Windows Server 2008 R2 기반의 닷넷 시스템이 훨씬 나은 결과를 보여주고 있다. .NET / Windows Server 2008 R2 / HP BladeSystem C7000 의 경우가 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우에 비해 비용 대비 성능 측면에서 10배 우수함을 보여준다. 이는 결국 같은 웹 서비스 성능을 내는 시스템을 구축할 경우, IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 을 사용할 경우 .NET / Windows Server 2008 R2 / HP BladeSystem C7000 을 사용할 때보다 10배 비싼 구축 비용을 지불해야 함을 의미한다.

3. WSTest 벤치마크
WSTest는 뒷단 비지니스 로직이나 데이터베이스 엑세스 없이 순수하게 구현 플랫폼의 웹 서비스 스택 성능 (즉, XML Serialization/Deserialization, http 네트웍 접근 등) 을 비교하는 것이다. WSTest는 원래 썬마이크로시스템즈에서 고안한 것으로 마이크로소프트가 보완하여 적용하였다.
IBM WebSphere 7의 경우, 앞의 미들티어 웹 서비스 성능 벤치마크에서와 마찬가지로 JAX-WS 기반의 웹 서비스 스택에서  SOAP/WSDL 기반의 표준 웹 서비스로 노출시켜 진행하였으며, 전달된 요청은 IBM Http Server가 IBM WebSphere 7 서버내의 웹 서비스 구현체에 전달하는 구조로 되어있다.
.NET의 경우, WCF를 이용하여 SOAP/WSDL 기반의 표준 웹 서비스를 노출시켰고, 전달된 요청은 IIS 7.5이 WCF 기반의 웹 서비스 구현체에 전달하는 형태로 되어 있다. 표준 기반의 웹 서비스이기 때문에 IBM WebSphere 7기반의 자바 구현체와 .NET 기반의 구현체 사이에 상호 운용이 가능하다.

image

비용 대비 성능비 (Price Performance Ratio)로 환산한 결과는 다음과 같다. 비용 산출에 대한 근거는 리포트의 Appendix에 상세히 설명되어 있다.

image

위 결과를 통해 다음과 같은 사실을 알 수 있다.
1. .NET / Windows Server 2008 R2 / HP BladeSystem C7000 조합이 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 조합의 경우에 비해 최소 120% 성능이 더 우수함을 알 수 있다. (WSTest의 각 Operation별로 조금씩 다르다.) 반면 서버 구성에 지출된 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 서버의 경우가 .NET / Windows Server 2008 R2 / HP BladeSystem C7000의 경우보다 419% 더 지출된 것을 알 수 있다.
2. IBM WebSphere 7 / Windows Server 2008 R2 / HP BladeSystem C7000 조합의 경우가 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우보다  성능이 51% 더 우수함을 알 수 있다.  반면 서버 구성에 지출된 절대 비용 측면에서는 오히려 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우가 IBM WebSphere 7 / Windows Server 2008 R2 / HP BladeSystem C7000의 경우보다 198% 더 지출된 것을 알 수 있다.
3. 전반적으로 비용 대비 성능 측면에서 Windows Server 2008 R2 기반의 닷넷 시스템이 훨씬 나은 결과를 보여주고 있다. .NET / Windows Server 2008 R2 / HP BladeSystem C7000 의 경우가 IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 의 경우에 비해 비용 대비 성능 측면에서 10배 우수함을 보여준다. 이는 결국 같은 웹 서비스 성능을 내는 시스템을 구축할 경우, IBM WebSphere 7 / IBM AIX 5.3 / IBM Power 570 을 사용할 경우 .NET / Windows Server 2008 R2 / HP BladeSystem C7000 을 사용할 때보다 10배 비싼 구축 비용을 지불해야 함을 의미한다. (최대 TPS 달성시 기준으로 단위 TPS당 드는 비용 산출)

결론
웹 애플리케이션을 구축할 경우, Windows Server 2008 R2 기반의 닷넷 시스템이 IBM Power 570 기반의 WebSphere 7 기반 Java EE 시스템에 비해 가격은 1/5 수준으로 성능은 37% 더 나은 시스템을 구축할 수 있음을 알 수 있다. 같은 WebSphere 7 기반의 웹 애플리케이션 시스템 구축의 경우에도 Windows Server 2008 R2 / HP BladeSystem C7000 위에서 구동하는 것이 IBM AIX 5.3 / IBM Power 570 위에서 구동하는 것에 비해 가격은 1/3 수준으로, 성능은 39%  더 나은 결과를 제공할 수 있음을 알 수 있다.
웹 서비스를 구축할 경우에도, Windows Server 2008 R2 기반의 닷넷 시스템이 IBM Power 570 기반의 WebSphere 7 기반 Java EE 시스템에 비해서 가격은 1/5 수준으로 성능은 111% 더 나은 웹 서비스를 구축할 수 있음을 알 수 있다. 같은 WebSphere 7 기반의 자바 웹 서비스 시스템 구축의 경우에도 Windows Server 2008 R2 / HP BladeSystem C7000 위에서 구동하는 것이 IBM AIX 5.3 / IBM Power 570 위에서 구동하는 것에 비해가격은 1/3 수준으로 성능은 37%  더 나은 결과를 제공할 수 있음을 알 수 있다.

image

Leave a Comment
  • Please add 1 and 5 and type the answer here:
  • Post
  • IBM이 아닌 Oracle(+SUN)과의 비교 자료는 없을까요?

  • WebLogic이 시장에서 인기를 끈 이유가  WebSphere보다 성능이나 확장성이 월등해서가 아니고 초기부터 시장을 선점한 효과가 크기 때문에 WebLogic 제품과 비교한다고 하더라도 결론은 다르지 않을 것 같습니다. WAS 중 그나마 성능이 빠르기로 한때 유명했던 Oracle OC4J라면 성능 격차는 좀 줄어 들겠지만, 전반적으로 가격이 만만치 않은 상용 WAS 들과의 가격 대비 성능은 Windows Server / NET을 따라오기 힘들 것으로 생각됩니다. 안타깝게도 Oracle 제품과의 비교자료는 없네요.

  • IBM이 Sun을 먹었어야 했는데...

    Java가 구동속도나 최적화 작동이 닷넷보다는 미려하지 못한것은 사실이죠.

    하지만 Java의 개방성과 수많은 오픈소스에 닷넷의 입지는 아직 초라해

    보이는 것은 사실이내요.

    이제 오라클하고도 벤치마킹을 하셔야 할듯 합니다.

Page 1 of 1 (3 items)