20장. JBoss EAP 튜닝
이번 장에서는 JBoss EAP 6 튜닝과 그 배경 지식에 대해 설명한다. JBoss EAP 6 는 기본 설정으로도 충분한 성능을 발휘할 수 있지만, 튜닝을 하여 더 높은 성능을 얻을 수 있다.
성능 튜닝은 애플리케이션 개발, 운영, 유지 보수에서 중요한 작업 중 하나이다. 커스텀 애플리케이션을 개발하거나 패키지 애플리케이션을 도입하는 경우에도 시스템을 구성하는 각각의 계층들인 애플리케이션, 데이터베이스, 미들웨어 부분에 튜닝이 필요하다.
이 문서는 JBoss EAP 6를 처음 사용하거나 성능 튜닝의 경험이 없는 운영자들이 시스템을 운영하기 전에 알아야 하는 웹 시스템 성능에 관한 배경 지식과 베스트 프랙티스를 설명한다. 이미 시스템 성능에 관한 문제들이나 튜닝에 대해서 익숙한 운영자도 미들웨어 기술들은 항상 변화하고 있기 때문에 지속적인 관심이 필요한 부분이다.
덧붙여 이번 장에서 소개하는 설정 값은 어디까지나 참조용이며, 최적의 값은 시스템 환경에 따라 달라서 테스트를 통한 튜닝 값을 얻어야 한다.
1.왜 성능 튜닝을 해야 하는가?
응답속도가 느린 웹 사이트는 고객들의 불만이 쌓이고 결국에는 다른 웹 사이트로 이동해 버리게 된다. 수익을 목적으로 하는 웹 사이트를 운영하는 기업이라면 고객의 관심뿐만 아니라, 비즈니스 기회도 잃어버릴 수 있다. 고객이 어쩔 수 없이 성능이 낮은 애플리케이션을 계속 사용해야 한다면 결국에는 비즈니스 트랜잭션이 줄어 버리거나, 서비스 사용을 포기하고 떠나가 버릴지도 모른다.
기업에서 임직원이 사용하는 애플리케이션이라도 예기치 못한 대기 시간이 발생하거나, 낮은 성능은 기업의 생산성에 영향을 미치게 된다. 이러한 상황에서 사용자는 시스템에 대한 불만이 생기고, 업무시간을 낭비하게 되어 IT부서에 대해서 부정적인 인식이 생기게 된다.
성능이 높은 애플리케이션의 특징은 하드웨어나 소프트웨어 자원을 보다 효율적으로 사용하는 것이다. 튜닝을 통해 최적화된 애플리케이션은 노후화된 시스템을 더욱 오랫동안 사용할 수 있게 되며, 신규 시스템 경우에는 도입 규모를 축소하더라도 기대한 성능을 제공하여 더 적은 투자비용으로 운영할 수 있다.
기업은 튜닝을 통하여 하드웨어 투자를 최적화할 수 있다. 소프트웨어 측면에서 보더라도 애플리케이션이 잘 튜닝되어 성능이 좋으면 더 작은 수의CPU를 사용하게 되고, 이에 따라 소프트웨어 라이선스 비용도 절감할 수 있다. 튜닝의 효과로 인해 기업은 시스템을 구축/운영/유지보수 하는 전 단계를 거쳐 비용을 절감하게 된다.
성능 튜닝 목표
성능에 대한 튜닝을 어느 수준까지 할지를 결정하는 것은 어려운 문제이다. 시스템 운영 초기의 성능은 주로 애플리케이션의 성능 최적화에 크게 의존하며, 이후에는 하드웨어, 데이터베이스, 애플리케이션 서버의 성능에 의해 결정된다. 많은 경험을 가진 엔지니어라 하더라도 하드웨어 사양이나 애플리케이션 서버의 종류에 따라 예상되는 성능을 추측하는 것은 불가능하다. 시스템 성능을 예측하기 위한 가장 현실적인 방법은 부하테스트를 진행하여 주어진 애플리케이션, 하드웨어, 소프트웨어에서 최적화된 성능 기준을 확인하고 이를 바탕으로 추론하는 것이다.
튜닝된 시스템을 대상으로 부하를 발생시키면 애플리케이션 서버의 부하가 가장 높아진다. 만약 애플리케이션 서버의 CPU 사용률이 80%가 넘을 경우, 미들웨어 측면에서 리소스에 의한 병목이 없어서 해당 하드웨어와 애플리케이션 서버에서 성능의 한계 값에 가깝다고 할 수 있다.
성능 튜닝은 병목 구간을 발견하고 이에 대해 대처해야 하는 수준 높은 기술을 요구한다. 튜닝 작업은 애플리케이션 서버 공급 업체 컨설팅 또는 경험이 풍부한 엔지니어를 찾는 등 외부와 내부의 지식을 효율적으로 사용하여 수행하는 것을 권장한다.