세계적인 금융위기의 여파로 국내의 많은 기업도 경기 불황을 이유로 IT 인프라에 대한 예산을 줄이고 비용 절감 요구까지 거세지는 분위기이다. 그러나 이러한 경제적인 배경과 관계없이 IT 인프라는 현재의 서비스를 유지하거나 향상시켜야 하는 오래된 과제를 가지고 있고 이를 해결하기 위해 현재의 인프라에서 더 많은 ROI를 취할 수 있는 다양한 방안을 강구하고 있는 것이 현실이다.

IT 애플리케이션의 두 가지 과제, 성능과 안정

그러나 대부분의 시스템은 여전히 성능과 안정이라는 두 가지 과제가 핵심적인 이슈로 부각되어 있고, 이를 해결하기 위해 IT 관리자, 개발자 등 해당 주체들은 다양한 방법론을 통해 기술적인 접근을 진행하고 있다.

과연, 성능과 안정 이 두 가지 과제를 한꺼번에 해결할 수 있는 방법은 없을까?

먼저 기존의 애플리케이션을 살펴보자. 기존의 애플리케이션은 2-Tier 또는 3-Tier로 구성되어 있고 웹의 발전과 함께 분산 컴퓨팅 환경으로 옮겨 가는 추세이다. 이런 구조는 첫째 각각의 애플리케이션이 명확하게 정의된 스택 상에 구현된다는 점에서 간단 명료했고, 둘째 시스템 장애 발생 시 다른 애플리케이션에 영향을 끼치지 않는다는 면에서 안정적이었다. 하지만 기업의 업무에서 IT가 차지하는 비중이 지속적으로 커지고 애플리케이션의 규모가 방대해지면서 전체적인 IT 거버넌스 측면에서 비효율성과 유연성 등의 문제점을 초래했다.

먼저 비효율성의 문제이다. 기존의 방식에서 각 시스템은 애플리케이션이 수용해야 할 가장 열악한 상황(worst case), 즉 최대 부하치(peak load)에 맞추고 최소 3년~5년 이상의 사용자나 애플리케이션 증설을 감안하여 IT 리소스를 구성하게 된다. 그러나, 최대 부하치를 수용해야 하는 시점은 특정한 접속시간 예를 들어, 연중 입시 기간이나 학기 초, 기말 등 특정 시점에 부하가 몰리는 학사 관리 시스템, 혹은 휴일이나 명절 등에 부하가 몰리는 교통 등 각종 예매 시스템이 그 예이나, 이 외에도 많은 시스템이 특정 시점의 최대 부하를 맞추기 위해 설계되어 평상 시에는 이용률이 5~15%에 그치는 상황이 많다.

두 번째는 유연성의 문제이다. 애플리케이션의 사용량이 증가함에 따라 시스템을 확장할 필요가 발생하게 되고 이를 위해 동일한 용도의 서버 장비를 증설하는 수평적 확장(scale out)을 해야 한다. 약간의 수요 증가가 곧 물리적인 서버 증대를 의미하고 만약, 다른 병목 지점이 부각하기 시작하면 또다시 그 부분만을 위해 새로운 확장해야 하는 비효율의 악순환에 빠지게 되는 것이다.

지금 애플리케이션이 IT 리소스를 제대로 활용하고는 있는가?

이러한 기존의 구조적인 문제점에 기인하여 비용을 절감하고 IT 자원의 적절한 활용을 위해 오라클은 애플리케이션 그리드(Application Grid)라고 하는 새로운 접근 방식을 제시하고 있다.

Oracle의 애플리케이션 그리드 'Coherence'
그리드 컴퓨팅은 가상화의 개념을 확장함으로써 쉽게 이해될 수 있다. 즉 연산 능력(computing power), 스토리지, 네트워크 용량 등의 IT 자원(resource)들을 단일한 하나의 공유 풀 서비스로 모으고, 실제 서비스의 수요로부터 자원이 논리적으로 분리되어 통합 공유된 IT 자원을 다양한 수준의 수요에 대해 동적으로 할당할 수 있는 것을 말한다.

이제 최신 버전의 오라클 퓨젼 미들웨어(Fusion Middleware)에 구성된 웹로직(WebLogic)/턱시도(Tuxedo) 제품군에서는 차세대 그리드 컴퓨팅 기술을 제공하고 있으며, 이러한 미들웨어 영역과 함께 애플리케이션 영역의 그리드 제품으로 코히어런스(Coherence)를 제시하고 있다. 오라클의 애플리케이션 그리드는 미들웨어 제품군 전체의 근간을 이루는 계층 뿐 아니라, 전체 영역을 관리하는 측면을 포함한다.

오라클의 Coherence는 미들웨어 계층의 그리드 컴퓨팅을 구현함으로써 IT 자원(서버 장비, 네트워크 리소스 등)과 이들 자원의 소비자(개별 애플리케이션 - 패키지 소프트웨어, SOA 서비스, 레거시 등등)를 분리(decoupling)해, 자원을 공유(pooling)하고 이를 효율적으로 배분(sharing)하는 아키텍처를 제공한다. 이를 통해 처리 용량의 측면에서 전체 시스템의 반응 패턴을 예측 가능한 수준에서 제어할 수 있다.

Coherence는 네트워크 상에서 Coherence 인스턴스를 생성하는 것 자체로 특별한 설정없이 자동으로 클러스터링이 구성되며 여러 개의 장비에 장착된 메모리를 마치 로컬 장비에 있는 것처럼 사용할 수 있을 뿐 아니라, 개별 노드를 동적으로 클러스터에 추가하거나 제거할 수 있다. 이때 개별 노드의 증가에 따라 성능은 거의 선형적으로, 수천 개에 달하는 노드가 클러스터링 될 때까지 증가하게 된다.

많은 대규모 애플리케이션들은 CPU나 저장 장치보다는 메모리의 성능에 종속되는 경우가 많기 때문에, 보다 많은 데이터가 메모리 레벨에서 처리되도록 함으로써 디스크 I/O를 줄이는 Coherence의 In-Memory Data Grid 기술을 통해 성능을 획기적으로 향상시킬 수 있다. 그러면서도 중복(redundancy) 구조에 의한 안정성과 병렬처리(parallelization)를 통한 성능 향상까지 얻을 수 있다.

구체적으로 애플리케이션 그리드 제품인 Coherence의 관리측면에 대해 살펴보자.

Coherence는 선형적으로 JVM을 증가시키시면서 애플리케이션이 미리 필요로 하는 데이터를 메모리 상에 여러가지 방법으로 보관할 수 있다. 또한, 이러한 캐시 내에서 Local, Replicated, Distributed, Near 방식의 Schema 및 인터페이스를 제공한다.

추가로 이러한 자동화된 클러스터링 기능은 하나의 인스턴스가 셧다운이 되더라도 이미 각 Coherence 내 멤버간의 데이터 동기화가 항상 이뤄지므로 사용자는 장애를 느끼지 못하게 된다. 이러한 기능을 이용하게 되면 일시적으로 DB나 WAS(Web Application Server)의 장애가 발생하더라도 실제 클라이언트는 장애를 느끼지 못하게 되며 Coherence 내에서 다른 인스턴스에서 유지되는 정보를 전달하게 된다.

또한 JVM(Java Virtual Machine)을 기반으로 서비스 되는 애플리케이션의 경우 특정 시간대나 이슈에 의해서 급격하게 애플리케이션에 의한 객체의 사용이 집중되는 경우 Full-GC 즉 'Stop the World' 상태에 빠지거나 메모리 부족 현상 등이 발생하지만 –클라이언트는 서버로부터 무응답 상태에 빠지게 됨 - Coherence의 그리드 기능을 이용한다면 시스템의 다른 가용 메모리를 확보하게 된다. 즉, 32비트의 JVM이 취할 수 있는 한계와 물리적 서버를 증설해야 하는 부담이 없어지게 되는 강력한 장점이 있다.

여러 가지의 Coherence의 세부적인 기능 중 Coherence-Web 모듈은 이것을 적용하는 것이 동시에 'Http Session' 관리를 자동으로 할 수 있도록 구성되어 있으며, WAS의 세션 관리를 완전하게 분리할 수 있으므로 사용자가 많고 동시에 접속하는 경우나 이를 계속 유지하는 경우에 상당한 관리적인 부담을 덜게 해준다.

특히 국내의 많은 IT 애플리케이션이 세션에 많은 정보를 유지하는 경우가 많은데 이렇게 사용되는 경우나 사용자가 몰리는 특정한 시간대의 쏠림 현상에도 Coherence Web을 적용하면 상당한 장애 문제에서 벗어날 수 있을 뿐만 아니라 별도의 메모리 관리자로서 역할을 하게 되므로 애플리케이션 서버의 재 시작이나 변경 적용에도 독립적으로 운영된다.

이러한 강력한 그리드 기능을 기반으로 구성된 Coherence는 설치파일이 10MB 내외이며 100% Pure Java로 되어 있다. 특히, 현재의 애플리케이션 서버의 구성에 배포를 별도로 하지 않고 기존 미들웨어에 대해 독립적으로 운영 및 관리되는 획기적인 제품이다.

최적화된 애플리케이션 보장 : 튜닝
지금까지, IT 자원의 재활용 측면, 효율측면에서 애플리케이션 그리드 활용을 통해 이에 대한 선형적인 확장성을 확보할 수 있다는 것을 확인했다. 그러나, 성능 측면에서는 실제 해당 애플리케이션에 대해 기본적이고 구체적인 자원 사용과 반납, 수행시간에 대한 정확한 측정이 이뤄져야만 애플리케이션 그리드와 같은 논리적 개념으로 자원을 동시 확장하는데 의미가 있다.

IT 애플리케이션은 필연적으로 시스템 구축 후 시간이 경과함에 따라 데이터량, 사용자 수, 애플리케이션이 증가되어 초기의 원활한 온라인성 애플리케이션의 응답 시간이 현저하게 저하되고, 배치성 작업 처리의 성능이 감소하게 된다. 이러한 경우 필수적으로 시스템 진단과 튜닝을 통해서 해결할 것인가 아니면 시스템 자원의 물리적 추가구입으로 해결할 것인가의 선택을 해야 한다. 만약, 애플리케이션 및 관련 자원의 문제를 안고 계속해서 하드웨어적인 증설에 투자를 한다면 투자는 투자대로 하고 시간이 지나면 또 그 문제로 같은 문제를 되풀이 해야만 한다. 따라서, 먼저 시스템의 진단 및 튜닝을 통해 시스템의 근본적인 병목현상을 제거하는 것이 바람직하다고 볼 수 있다.

애플리케이션의 튜닝 부문은 크게 미들웨어 영역 튜닝과 데이터베이스 영역 튜닝을 종합하여 진행하고 1회에 그치는 것보다 주기적으로 실행하여 안정화 하는 것이 더 효과적이다.

미들웨어 및 DB 튜닝 시 주요 필요한 항목은 다음과 같다.
- DB/미들웨어 서버의 리소스(CPU, 메모리) 자원의 적정성
- DB/미들웨어 서버의 물리적 메모리와 데이터베이스 메모리 파라미터의 효율성
- DB/미들웨어 서버의 대기시간(Wait Event) 분석으로 Application 병목 현상 분석
- 비 효율적인 애플리케이션 로직 분석 및 튜닝(반복스캔 및 Looping 통합)
- SQL 액세스 패턴 분석에 따른 전략적 인덱스 설계
- 비 효율적인 스캔(풀스캔 및 비효율적인 인덱스 스캔) 분석
- DB/미들웨어 성능 추이 분석 및 튜닝 전후 성능 통계 비교 분석
- JVM을 사용하는 경우 해당 OS와 미들웨어에 최적화된 버전 및 사용 패턴 분석

이와 같이 최적화된 애플리케이션 보장을 위하여 튜닝은 미들웨어 영역 튜닝과 데이터베이스 영역 튜닝을 종합하여 진행하고 1회에 그치는 것보다 주기적으로 실행하여 안정화하는 것이 더 효과적이다. 또한 이러한 애플리케이션 튜닝 시에는 반드시 실제 상황과 똑같은 시나리오를 구성할 수 있도록 BTO(Business Technical Optimization ) 서비스를 병행하여 진행하도록 한다.

그러나, 대부분의 서비스 장애나 애플리케이션 성능 문제로 미들웨어 Tier와 DB Tier 영역을 나눠서 관리해야 하고, 각각 다른 관점으로 지원을 받거나 해당 영역에 대해서만 한정적인 검토를 하고 그 결과를 상호 영역에 반영해야 하는 등 복잡하고 이해하기 어려운 프로세스를 장시간에 거친 후에 만 애플리케이션 성능에 대한 결과를 얻을 수 있는 것이 현실이다.

DB/미들웨어 튜닝, BTO 서비스, 애플리케이션 그리드 등 종합적인 서비스를 제공할 수 있는 위즈베이스와 같은 업체를 통해 성능과 안정에 대해 좀더 효율적이며 통합적인 관점에서 제공받을 수 있다. 위즈베이스는 2003년에 설립되어 오라클의 파트너사로 DB 관련 특허기술을 보유하는 등 DB 튜닝, 오라클 미들웨어 튜닝, BTO 서비스와 오라클 애플리케이션 그리드에 대한 기술을 제공할 수 있는 전문 IT 컨설팅 업체이다. 실제로 성능을 기반으로 한 주요 고객사로 SKT, 삼성, KTF, 대한항공, 하이닉스, 포스코 등 주요 대량의 데이터와 애플리케이션의 고성능이 필요로 하는 기업에 우수한 기술을 제공하는 등 이 분야에 강점을 가지고 있다.

맺음말
지금까지의 내용을 요약하면 애플리케이션 그리드는 현재의 IT 자원을 최대한 재활용하여 안정성과 확장성의 문제를 해결하고, 애플리케이션 튜닝은 지속적인 성능관리를 통해 계속 증가하는 데이터, 사용자 요청에 대한 성능을 보장하는 등 IT 애플리케이션의 두 가지 어려운 과제를 모두 해결할 수 있는 답안이라는 점이다.

이 두 가지의 기술적인 가치는 무엇보다도 현재의 IT자원을 그대로 이용하면서 효율성을 높일 수 있다는 것이 핵심이다. 실제 많은 IT 관리자는 지금도 성능과 안정의 두 가지 과제에 직면에 있고 앞으로도 그럴 수 있다는 것을 충분히 예상할 수 있다. 애플리케이션 그리드와 튜닝은 특히, 현재와 같이 IT자원의 증설이나 투자가 쉽지 않는 기업 환경에서 현재의 IT 서비스를 극대화하고 안정화하기 위해 필연적으로 반드시 고려해야 하는 기술이다.

 

■ 자료출처 - IT DAILY