IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >   Open developerWorks  > developerworks

비즈니스 중심적인 트랜잭션 모니터링 및 관리, Part 1: 엔드투엔드 트랜잭션 트래킹 기술 소개



박용우박용우 yongwoopark@paran.com

건국대학교 전자계산학과와 동대학원 박사과정을 졸업하고 펜타시스템테크놀러지, XCE 등에서 XML 및 모바일 분야 개발에 전념해 왔다. 신한은행 차세대 프로젝트에서 통합운영관리 거래추적 시스템을 개발했으며 최근 현대해상 차세대 프로젝트에 참여해 ITSM 기반의 통합운영관리 시스템을 개발했다. JCO 초대 회장을 역임했고 현재 JCO 고문으로 활동하고 있으며 '이클립스 SWT: 리치 클라이언트 개발을 위한', '프로그래머 그들만의 이야기', 'BREW Mobile Programming', '모바일 자바 프로그래밍' 외 다수의 저서를 보유하고 있다


난이도 : 중급
2008년 1월 22일


[오픈 디벨로퍼웍스]는 여러분이 직접 필자로 참가하는 코너입니다 .이번 기사에서는 비즈니스 중심적인 트랜잭션 모니터링 및 관리 시스템을 제안하고, 이를 구현하기 위한 핵심 기술로서 종단간 구간별 거래 추적(End to End Transaction Tracking) 기술 및 구현 아키텍처에 대해 소개하고자 합니다.

요즈음 구축되고 있거나 준비중인 차세대 엔터프라이즈 환경에서는 기존의 SMS/NMS, APM, DB성능관리 툴 등이 제공하는 시스템 모니터링 및 관리 기능은 물론 하나의 정상 또는 장애 트랜잭션이 수행되는 시점에서의 각 시스템(CPU, 디스크, 네트워크 등 자원), 어플리케이션, 데이터베이스 등 관련 모든 시스템들의 상태를 연계하여 모니터링하고 관리하기를 요구하고 있다. 따라서 본고에서는 트랜잭션 기반의 비즈니스 중심적인(business-centric) 트랜잭션 모니터링 및 관리 시스템을 제안하고, 이를 구현하기 위한 핵심 기술로서 종단간 구간별 거래 추적(End to End Transaction Tracking, 이하 E2E) 기술을 소개하고자 한다.

   소셜 북마크

   mar.gar.in mar.gar.in
    digg Digg
    del.icio.us del.icio.us
    Slashdot Slashdot

비즈니스 중심적(business-centric) 트랜잭션 모니터링 및 관리

전통적인 시스템 관리 툴들은 서버, 서비스, 자원 등에 대한 개별적인 모니터링 및 관리에 초점을 맞추고 있다. 이러한 기존의 툴들은 하나의 트랜잭션이 어떤 흐름으로 수행되는지에 관계없이 시스템 또는 어플리케이션 중심적으로 특정 시간대의 CPU, 메모리, 디스크 등 시스템 자원의 상태 모니터링, 네트워크 트래픽 모니터링, 웹서버 또는 어플리케이션 서버의 정상 동작 여부 모니터링, 데이터베이스 부하 모니터링 등 개별적인 모니터링 정보만을 제공한다.
그러나 요즈음 구축되고 있는 차세대 엔터프라이즈 시스템 환경에서는 비즈니스 중심적인 모니터링 및 관리를 요구한다. 즉, 하나의 트랜잭션이 실행될 때의 시스템 자원들의 상태, 네트워크 트래픽 부하, 웹서버 또는 어플리케이션 서버의 동작 상태, 데이터베이스의 상태 등을 종합적으로 연계하여 모니터링하고 관리하기를 원한다. 또한 하나의 트랜잭션의 수행시간에 대해 클라이언트, 웹서버, 어플리케이션 서버, 프레임워크 내에서의 각 레이어, 데이터베이스, 대내 및 대외 연계 구간 등 각 구간에서의 소요시간은 물론 하나의 트랜잭션이 어떤 시스템 또는 어플리케이션들을 거쳐 수행되었는지에 대해 보다 상세하게 트래킹 하기를 원하고 있다.
비즈니스 중심적 트랜잭션 모니터링 및 관리 시스템은 이러한 상황에서 장애가 발생했거나 비정상 종료된 트랜잭션의 경우, 이 트랜잭션이 어느 구간에서 문제가 됐고 그 문제가 된 구간에서의 관련 시스템, 네트워크, 어플리케이션 서버, 데이터베이스 등의 상태가 어떠했는지를 확인할 수 있다면 장애와 관련된 원인 구간을 분리(isolate)하여 그 구간만 집중적으로 보다 세밀하게 분석함으로써 장애발생부터 문제해결(troubleshoot)까지 걸리는 시간을 최소화 시킬 수 있고 그 과정을 보다 단순화 시킬 수 있다. 이러한 비즈니스 중심적 트랜잭션 모니터링 및 관리 시스템은 기존의 SMS/NMS, APM 등의 성능 관리 시스템에 대한 대체 시스템이 아니라 기존 시스템들에 대한 아교(glue) 역할을 한다. 이를 위한 가장 핵심적인 기술로서 E2E 기술을 소개하고자 하며, 제공하는 기능은 다음과 같다.

  • 시스템 및 어플리케이션을 통해 수행되는 기존의 서비스들에 대해 트랜잭션 단위의 모니터링 및 관리 기능을 제공한다.
  • 하나의 트랜잭션에 대해 정상/비정상 여부 및 구간별 수행시간을 분석해준다.
  • 하나의 트랜잭션이 어떤 시스템 및 어플리케이션을 통해서 실행되었는지 수행 흐름을 분석해준다.
  • 트랜잭션의 초당 처리 건수와 소요 시간은 물론 업무별, 채널별, 정상/비정상 등 분류 기준에 따른 실시간 모니터링 기능을 제공한다.
  • 정상, 장애, 또는 장시간 트랜잭션에 대해 사후 언제든지 분석 가능해야 한다.
  • 하나의 트랜잭션이 수행될 때의 관련 시스템, 어플리케이션, 데이터베이스 등의 상태를 연계해서 볼 수 있다.



위로



종단간 구간별 거래 추적

E2E 시스템은 하나의 트랜잭션이 클라이언트에서 시작해서 서버, WAS, 어플리케이션, DBIO, 룰, EAI 등 관련 모든 시스템에 걸쳐 수행된 후, 다시 클라이언트에 도달할 때까지 수행 흐름을 구간별로 추적하는 것이다.
이러한 E2E 시스템을 구현하기 위한 방법은 의외로 단순한다. 단지, 하나의 트랜잭션을 수행하는 모든 시스템 또는 어플리케이션에 대해 구간을 설정하고 각 구간의 서비스가 시작하고 종료할 때 각각 정해진 포맷의 시작/종료 로그 데이터를 남기는 것이다. 또한 에러가 발생하여 비정상 종료시에는 종료 로그 대신 에러 로그가 남거나 서비스를 실행하면서 디버깅 정보에 대해 정보성 로그를 남길 수도 있다. 하나의 트랜잭션 관련 구간에 걸쳐 수행되면서 각 서비스의 시작 및 종료 시에 시작/종료 로그 데이터를 남기는 흐름도를 살펴보면 다음과 같다.

하나의 트랜잭션을 수행하는 구간별 서비스에서의 시작/종료 로그 데이터 로깅
그림 1. 하나의 트랜잭션을 수행하는 구간별 서비스에서의 시작/종료 로그 데이터 로깅

  

S(X-Internet), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
S(Base Action Controller), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
S(Session Façade), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
S(Main Service), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
S(Sub Service), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
S(DBIO Adapter), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(DBIO Adapter), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(Sub Service), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(Main Service), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(Session Façade), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(Base Action Controller), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …
F(X-Internet), GID, LDATE, LTIME, TRANCODE, SYSTEM, SERVICE, …

위의 예에서와 같이, E2E 로그 데이터에는 E2E 시스템의 기본 기능을 제공하기 위해 몇 가지 데이터 항목을 포함하게 된다. 모든 E2E 로그 데이터들에 대해 트랜잭션 단위로 구별하기 이해 각 트랜잭션마다 유일한 아이디(Global ID)를 생성하고, 현재 수행되고 있는 구간의 순번(SEQ), 로그 일시(LDATE, LTIME), 거래 코드, 현재 수행중인 시스템과 서비스명 등 필수 항목과 추가적인 옵션 항목을 정의할 수 있다. 하나의 트랜잭션을 수행하는 각 구간의 서비스가 실행될 때 시작과 종료시에 남기는 모든 로그 데이터를 수집하여, 위의 예에서의 같이 동일 GID를 갖는 로그 데이터들에 대해 로그 일시 순으로 정렬하면 하나의 트랜잭션이 어떤 거래를 수행하고, 각 구간에서 수행된 시간과 소요시간, 서비스들간의 호출 관계를 알 수 있으며, 어떤 시스템과 서비스를 통해 수행되었는지에 대해서도 알 수 있다. 심지어 E2E 로그 데이터의 GID, 로그 일시, 시스템, 서비스 등의 데이터 항목을 기준으로 SMS/NMS, APM, DB성능관리툴 등에서 수집한 모니터링 데이터와 연계한다면 정상 또는 장애 트랜잭션이 수행될 때의 관련 시스템, 네트워크, 어플리케이션, 데이터베이스 등의 상태 역시 알 수 있다.
이렇게 하나의 트랜잭션을 수행하면서 각 서비스에서 남긴 시작/종료 로그 데이터들을 E2E 관리 서버에 취합하여, E2E 시스템에서 정의하고 있는 실시간 모니터링 및 관리 기능을 제공해야 한다. 지금부터 이를 위한 E2E 아키텍처에 대해 살펴보자.



위로



E2E 아키텍처

E2E 모니터링 및 관리 대상이 되는 시스템들은 하나의 트랜잭션을 수행하기 위해 E2E 시스템과는 별도로 구동되며, 각 구간의 서비스들에서 남기는 시작과 종료, 에러, 정보성 로그들에 대해서는 E2E 로그 파일에 로깅한다. 이렇게 각 E2E 대상 시스템에서 E2E 로그 파일 내에 로깅한 모든 로그 데이터들을 한 곳으로 모아서 관리하고 필요한 경우 클라이언트를 통해 실시간 모니터링 또는 사후분석을 할 수 있도록 기능을 제공해야 한다. 이를 위해 각 E2E 대상 시스템에서 E2E 로그 데이터를 수집하여 서버에 전송하는 작업을 하는 E2E 에이전트, 각 E2E 에이전트에서 전송한 데이터를 받아서 취합하기 위한 E2E 서버, 모든 E2E 로그 데이터를 저장하여 가지고 있기 위한 E2E 데이터베이스, 트랜잭션 처리 상태를 실시간으로 모니터링 하기 위한 E2E 클라이언트, E2E 데이터베이스 내에 저장된 E2E 로그 데이터들을 다양한 형태로 분석하고 레포팅 하기 위한 E2E 사후분석 등으로 구성된다.

E2E 아키텍처
그림 2. E2E 아키텍처

위의 그림에서 보여주고 있는 것과 같이 E2E 시스템을 구성하고 있는 각각의 서브 시스템에 대해 살펴보면 다음과 같다.

  • E2E 에이전트: E2E 에이전트는 E2E 대상이 되는 각 시스템에서 발생하는 E2E 로그 파일 내의 모든 E2E 로그 데이터를 읽어 E2E 서버에 전송하는 역할을 한다.
  • E2E 서버: E2E 서버는 각 E2E 에이전트로부터 수신한 모든 E2E 로그 데이터를 E2E 데이터베이스에 저장하고, 업무별, 채널별 등의 초당처리건수 및 소요시간 등의 성능 데이터를 E2E 성능 파일에 저장하고, 연결된 모든 E2E 클라이언트에게 전송한다.
  • E2E 클라이언트: E2E 클라이언트는 E2E 시스템의 동작 상황을 사용자가 실시간으로 모니터링 할 수 있도록, E2E 서버와 TCP/IP 네트워크로 연결하여 E2E 로그 데이터를 실시간으로 가져와 보여주거나, E2E 성능 파일의 내용을 기반으로 실시간 모니터링 하는 기능을 제공한다.
  • E2E 사후분석: E2E 사후분석은 웹 기반의 툴로서, E2E 데이터베이스 내의 로그들에 대해 정상/비정상 거래 분석, 장시간 거래(Long Transaction) 분석, 구간별 거래 분석, 업무별 거래 분석 등 다양한 거래 분석 기능을 제공한다. 또한, 다양한 통계 처리를 통해 일일 보고서 등의 제공이 가능하다.

E2E 클라이언트 또는 E2E 사후분석에서는 각 트랜잭션의 로그 데이터에 포함된 GID, 로그일시, 거래코드, 시스템, 서비스 등의 데이터를 이용하여 SMS/NMS, APM, DB성능관리툴 등의 로그 데이터와 연계함으로써, 정상 또는 장애 트랜잭션이 수행될 때의 시스템, 네트워크, WAS, 데이터베이스 등의 상태에 대해서도 함께 분석할 수 있다.


E2E 아키텍처

모든 E2E 대상 시스템에서는 하나의 트랜잭션을 수행할 때 각 구간별로 실행되는 서비스의 시작 종료 시에 약속된 포맷의 E2E 로그 데이터를 생성하여 E2E 로그 파일에 저장한다. 또한 XInternet, Rule 엔진, DB IO, EAI, AnyLink 등 트랜잭션에 참여하는 모든 시스템에서는 서비스를 수행할 때 약속된 E2E 로그 데이터를 파일 또는 다른 방식으로 남기게 된다. 이렇게 생성된 E2E 로그 데이터를 수집하는 작업을 수행하는 것이 바로 E2E 에이전트이다. E2E 에이전트는 모든 E2E 대상 시스템 각각에 설치되어 자신의 역할을 수행해야 한다.
E2E 에이전트의 작업을 효율적으로 수행하기 위해, E2E 에이전트를 크게 로그 파서(Log Parser), 타임아웃 관리자(Timeout Manager), 로그 전송자(Log Sender) 등으로 나누어 작업별로 구현하였다. 먼저, 로그 파서를 이용하여 E2E 로그 파일을 읽어 모든 로그에 대해 에이전트 시간을 추가하고, 동일 서비스에 대해서는 타임아웃 관리자를 이용하여 시작/종료 로그의 시간차를 계산하여 종료 로그 데이터에 소요 시간을 추가한다. 이렇게 수정된 E2E 로그 데이터는 로그 전송자를 이용하여 E2E 서버에 전송된다. 지금까지 설명한 E2E 에이전트의 구성도를 살펴보면 다음과 같다.

E2E 에이전트 구성도
그림 3. E2E 에이전트 구성도


E2E 서버

E2E 서버는 각 E2E 에이전트로부터 수신한 모든 E2E 로그 데이터를 E2E 데이터베이스에 저장하고, 업무별, 채널별 등의 초당 처리건수 및 소요시간 등의 성능 데이터를 산출하여 E2E 성능 파일에 저장하고, 연결된 모든 E2E 클라이언트에게 전송하는 작업을 한다. 이러한 E2E 서버의 작업을 보다 효율적으로 수행하기 위해 E2E 에이전트로부터 전달된 E2E 로그 데이터를 수신하는 로그 수신자(Log Receiver), 수신한 모든 E2E 로그 데이터를 E2E 데이터베이스에 업로드 하기 위한 DB 로더(DB Loader), 업무별, 채널별 트랜잭션의 초당 처리건수 및 소요 시간을 분석해서 E2E 성능 파일에 저장하는 작업을 수행하는 로그 분석기(Log Analyzer), 연결된 모든 E2E 클라이언트에 필요한 E2E 로그 데이터를 전송하기 위한 클라이언트 전송자(Client Sender) 등으로 구성된다. 이러한 E2E 서버의 구성도를 살펴보면 다음과 같다.

E2E 서버 구성도
그림 4. E2E 서버 구성도


E2E 클라이언트

E2E 클라이언트는 E2E 시스템의 동작 상황을 사용자가 실시간으로 모니터링 할 수 있도록 E2E 서버와 TCP/IP 네트워크로 연결하여 E2E 로그 데이터를 실시간으로 가져와 보여주거나 E2E 성능 파일의 내용을 기반으로 실시간 모니터링 하는 기능을 제공한다. 또한 E2E 클라이언트는 하나의 트랜잭션에 해당하는 모든 E2E 로그 데이터를 시간순으로 정렬하여 구간별 수행 시간 분석 기능(챠트뷰), 서비스들간의 수행 흐름 및 소요 시간 분석 기능(플로우뷰) 등을 제공해 준다. 다음의 실행화면은 E2E 클라이언트의 기본 실행 화면으로서 E2E 서버에서 전달받은 모든 E2E 로그 데이터에 대해 GID를 기준으로 트랜잭션 별로 묶어서 보여주고 있다.

E2E 클라이언트 실행 화면
그림 5. E2E 클라이언트 실행 화면

E2E 클라이언트에서는 모든 E2E 로그 데이터에 대해 위의 실행화면에서 왼쪽에 보여주는 것과 같이 서비스 단위로 실행된 트랜잭션(동일 GID)들을 구분하여 보여 주고 오른쪽 위에서는 동일 GID를 갖는 E2E 로그 데이터들을 묶어 트랜잭션 단위로 보여준다. 이 중 하나의 E2E 로그 데이터를 선택하면 하단에서 해당 E2E 로그 데이터의 모든 데이터 항목을 각각 보여준다. 이렇게 선택된 거래에 대해서는 상세 보기 창에서 ‘차트뷰’ 및 ‘플로우뷰’ 링크를 통해 동일 GID를 갖는 하나의 트랜잭션에 해당하는 모든 E2E 로그 데이터들을 분석하여 각각 구간별 수행 시간 분석 및 구간별 수행 흐름 분석 뷰를 제공한다. 따라서 사용자는 하나의 트랜잭션이 어느 구간에서 얼마만큼의 시간이 소요되었는지는 물론 어떤 서비스들을 통해 실행되었는지를 한눈에 파악할 수 있다.

하나의 트랜잭션에 대한 구간별 수행 시간 분석
그림 6. 하나의 트랜잭션에 대한 구간별 수행 시간 분석

위에서 보여주고 있는 구간별 수행 시간 분석(챠트뷰) 예제 화면을 살펴보면 파란색 부분에 해당하는 서비스가 시작되고 그 다음 남색 서비스가 시작될 때까지 많은 시간이 소요됐고 초록색 서비스의 시작에서 종료까지의 시간도 전체에 비해 상대적으로 많이 소요되었으며 마지막으로 남색 서비스가 종료된 후 파란색 서비스가 종료될 때까지의 시간도 많이 소요되었음을 알 수 있다. 구간별 수행 시간 분석 기능과 함께 다음과 같은 구간별 수행 흐름 분석 기능도 제공해 주는데 구간별 수행 시간 분석(플로우뷰) 화면은 다음과 같다.

하나의 트랜잭션에 대한 구간별 수행 흐름 분석
그림 7. 하나의 트랜잭션에 대한 구간별 수행 시간 분석

또한 웹 기반의 E2E 사후분석 툴에서는 E2E 데이터베이스 내의 로그들에 대해 정상/비정상 거래 분석, 장시간 거래(Long Transaction) 분석, 구간별 거래 분석, 업무별 거래 분석 등 다양한 거래 분석 기능을 제공하며, 다양한 형태의 보고서 기능도 제공해 준다.



위로



마치며…

이번 호에서는 비즈니스 중심적인 트랜잭션 모니터링 및 관리 시스템을 제안하고, 이를 구현하기 위한 핵심 기술로서 종단간 구간별 거래 추적 기술 및 구현 아키텍처에 대해 소개했다. 앞으로 E2E 에이전트/서버 및 E2E 클라이언트의 구현에 대해 살펴보고자 한다.



이제 전문가의 글을 단순히 ‘보는 것’에서, 직접 여러분이 developerWorks의 필자가 될 수 있습니다. IBM developerWorks를 통해 공유하고 싶은 지식이 있으신 분들은 원고 기획안을 접수해주세요. 채택되신 분께는 소정의 원고료를 드립니다.



[지난 Open dW 보기]

사이트 여행

dW 커뮤니티
포럼 | 블로그 | Spaces
dW Student Community

로컬 컨텐츠

행사 및 세미나

기획 기사

개발자 입문

튜토리얼 및 교육

TOP 10 인기자료

SW 다운로드

RSS 피드

뉴스레터
  
자바스크립트가 작동이 중지되었습니다. 이 기능을 수행하시려면 브라우저에서 자바스크립스트를 작동시켜 주시거나 이곳을 클릭해주세요.
Special offers
IBM SOA Sandbox 시험판
dW Student Community
로보코드
코드 트레이닝


    IBM 소개 개인정보 보호정책 문의