[The Power Of Event 요약] 3장 Viewing the Electronic Enterprise

3장의 핵심은 “어떻게 하면 무수한 이벤트로부터 각 사용자가 해결하고자 하는 문제에 적절한 정보들을 도출할 것인가”이다. 네트워크 상에서 흐르는 수 많은 이벤트 클라우드(Event Cloud)은 우리에게 필요한 형태의 이벤트 형태가 아니다. Open Enterprise 환경에서는 자사의 문제해결 방식에 맞도록 이벤트 정보를 이벤트 구름에서 도출해야 한다. 따라서 본 장에서는 엔터프라이즈 관점에서 유의미한 정보를 어떻게 이벤트로부터 적절하게 분석하여 도출할 수 있는지에 대한 개론적인 설몀을 한다. 구체적으로는 다음의 내용들에 대해서 다루다.

  • 이벤트 모니터링 – 표준 기술들
  • 엔터프라이즈 관점 – 모니터링을 넘어 어떻게 데이터를 분석할 것인가
  • 글로벌 이벤트 클라우드에서 유의미한 이벤트 묶음을 도출,분석하는 방법- 엔터프라이즈 환경과 맥락에 맞는 정보 제공 방법
  • 정보 격차
  • 엔터프라이즈의 구조와 이벤트 정보의 추상화 계층
  • 계층형 시스템 뷰를 통한 엔터프라이즈 시스템의 정보를 컨트롤하기

3.1 Today’s Event Monitoring Is Too Primitive

의사결정에 필요한 정보 획득이 어려운 근본적인 이유 중 하나는 모니터링 솔루션들의 대부분이 네트워크 계층에만 집중되어 있기 때문이다. 최근의 엔터프라이즈 시스템들의 요구사항들은 단순히 장애처리를 위한 과거 하위계층에서의 문제 모니터링 뿐 아니라 의사결정에 필요한 유의미한 정보 도출을 위한 상위계층의 모니터링들이 많다.

3.1.1 System Monitoring Focuses on the Network Layer

엔터프라이즈 시스템이 직면하는 가장 주요한 문제들을 네트워크 장애다. 특별히 네트워크 문제는 분산환경으로 인해 더욱더 문제의 원인을 추적하기가 상당히 어렵다. 네트워크 계층 상의 TCP 패킷, 경고, 퍼포먼스 정보들이 끊임없이 로깅되고 모니터링 된다. 대부분의 모니터링 툴들이 이러한 낮은 계층의 raw 이벤트 정보들의 추적과 분석에 집중되어 있다.

3.1.2 Network-Level Monitoring Doesn’t Event Solve Network Problems

네트워크 게층의 모니터링 툴이 다양하게 존재하지만 문제는 여전히 이러한 툴들이 효과적이지 못하다는 점이다. 네트워크 계층에서 발생하는 이슈와 요구들은 다음과 같이 다양하다.

  • 네트워크 계층에서 발생하는 이벤트 로그의 양이 막대하게 증가하고 이를 실시간으로 다루기가 어렵다.
  • 네트워크 계층은 분산환경에서 상호 연관되어 있기 때문에 일부 시스템의 장애로 인하여 관련된 이벤트 로그들이 다양한 곳에서 발생할 수 있다. 이렇게 원인이 동일한 관련 이벤트 로그들의 묶음을 적절하게 분석할 수 있어야 한다.
  • 네트워크 계층에서 발생하는 여러 이벤트 로그의 핵심 원인을 파악하기 위한 인과관계의 추적이 필요하다.
  • 발생하는 이벤트 로그의 패턴 분석을 통한 예측적 모니터링은 쉽지 않다. 최선의 방법은 이전의 장애로부터 패턴을 도출하여 재발의 우려를 모니터링하고 막는 것이다.

결론적으로 현재의 IT 레이어(네트워크 계층)의 모니터링 툴은 네트워크 관리에 효과적이지 못하고 개선의 여지가 있다[2002년에 쓰여진 책이기 때문에 현재의 상황을 담고 있지는 않지만 위의 이슈들은 변하지 않은 것 같다].

3.2 An Example of Causal Tracking

이벤트의 인과 관계 추적을 위한 예로 뱅킹시스템의 트랜잭션을 설명한다. 특히 일반적인 트랜잭션 시스템에서 데이터의 Integrity 보장을 위한 2PC(Two Phase Commit) 방법에 대해서 간단히 설명한다.

2PC는 하나의 트랜잭션을 Polling Phase와 Commit Phase로 나누어 트랜잭션에 연관된 각 참여자가 하위트랜잭션들을 성공적으로 수행할 준비가 되어있는지를 Polling하는 단계와 이를 모두 수행할 수 있다는 확인 뒤에 Commit을 통해서 하나의 완결된 트랜잭션을 마치는 단계로 이루어진다.

이러한 트랜잭션이 이루어지는 과정 사이에서 주고 받는 이벤트 정보들의 인과 관계 분석을 통해서 어떤 시스템에서 어떤 단계에 이벤트를 주고 받는지를 시간과 논리적 순서에 따라 인과관계를 분석하여 이벤트 자체를 모니터링할 때 보다 더 유의미한 정보를 도출할 수 있다.

3.3 Information Gaps

필요한 정보를 도출하지 못하는 문제는 IT Layer(네트워크 단) 모니터링 때문이 아니다. 엔터프라이즈 내의 모든 계층에 대한 적절한 모니터링과 관리의 문제이다.

Information Gaps

각 계층마다 관련된 사용자와 그들이 요구하는 정보는 다르게 마련이다. IT Layer에서 발생하는 정보는 시스템 관리자에게는 의미있는 정보일 수 있지만 조직 관리자나 의사결정권자에게는 불필요한 정보이다. 각 계층에서 자신의 과업을 효율적으로 달성하기 위해서 요구하는 정보의 형태가 다르기 때문에 정보의 격차가 발생하게 된다.

정보의 격차는 수직적인 측면과 수평적인 측면에서 격차가 발생한다. 수직적 측면이라함은 시스템 구조의 계층(Layer)의 차이로 인해 발생하는 정보의 형태와 양에서 오는 정보 격차를 말한다. 수평적 측면은 관심갖고 분석하는 정보의 대상의 차이에서 오는 동일 계층 내의 정보 격차이다.

3.3.1 Examples of Information Gaps

정보 격차의 예로 책에서는 제조관련 엔터프라이즈 시스템을 든다. 네트워크 매니저의 관심사는 당연히 네트워크 내부의 문제 상태를 모니터링하는 것이 중요하다. 반면에 제품 생산라인의 매니저는 네트워크 관련 이벤트는 관심사가 전혀 아니다.  매니저에게는 제품 생산라인의 작동 현황 및 상태나 퍼포먼스 등의 정보가 필요하다. 이러한 정보는 네트워크 계층에서 얻을 수 없고, 좀 더 상위 계층의 이벤트로부터 정보를 도출할 수 있다. 마찬가지로 의사결정권자들에게는 개별적인 생산라인의 구체적인 정보들은 관심사항이 아니다. 이들에게는 운영을 위한 더 포괄적인 정보(제품 주문 및 재고, 생산단가와 출하일정 등)가 필요하며 이러한 정보들은 상위 계층의 이벤트로부터 추론해야 한다.

결론적으로 각 사용자의 요구사항에 따라 수평, 수직적인 측면에 따라 정보의 격차가 발생한다.

3.4 Problem-Relavant Information

정보격차를 해소하는 해결책은 문제와 관련도가 높은 정보(Problem-Relavant Information)를 획득하는 것이다. 문제와 관련도가 높다는 것은 불필요한 이벤트 정보를 일일이 모니터링하는 것이 아니라 사용자들이 즉각적으로 원하는 문제와 관련된 이벤트를 모니터링하고 분석하는 것이다.

문제와 관련도가 높은 정보를 얻기 위해서는 알고 싶은 즉각적인 문제에 대해서 명료하게 정의하는 것, 그리고 언제든지 변동 가능한 이러한 사용자의 관심 문제상황 등을 실시간으로 적용해서 모니터링 대상이 되는 이벤트들을 분석하는 것이다. 이를 잘 하기 위해서는 다음의 4가지 조건을 만족시켜야 한다.

  • 즉각적 관심을 일으키는 문제에 대한 적절성: 이벤트가 문제와 어느 정도의 연관성이 있는지를 파악하는 것은 주관적인 부분이다. 그렇다고 비즈니스 관리자에게 TCP 패킷 관련 정보를 제공할 수는 없지 않은가! 이 조건의 핵심은 어떻게 이벤트 정보들 사이에서 문제와 관련성이 높은 이벤트를 최대한 사용자에게 제공할 것인가 하는 점이다.
  • 상황에 대한 쉬운 이해를 제공: 의사결정의 흐름을 자동화하면 되는데 굳이 사용자가 상황을 이해할 필요가 있을까 싶겠지만, 오류나 버그상황에 대한 인지와 수정에 대한 결정도 사람이 하게 된다. 따라서 적절하게 시스템의 진행상황에 대한 정보를 이해하기 쉽게 제공할 수 있어야 한다.
  • 분석의 용이함: 이벤트 분석은 이벤트가 내포한 데이터와 상관이 있다. 각 이벤트가 담고 있는 상태 정보, 타임스탬프, 인과 관계 정보 등을 기반으로 이벤트 분석을 할 수 있으며 이를 통해 사용자가 요구하는 문제상황에 맞는 정보들을 도출한다.
  • 다양한 모니터링 결과에 대한 조합의 용이: 사용자가 상정한 문제상황들 사이에도 연관성이 존재 가능하고 이는 각각의 결과정보의 조합을 통해서 더 추상적이고 포괄적인 정보를 제공하는 단초가 된다. 따라서 여러 이벤트 분석 결과들을 통합적으로 모니터링하고 분석할 수 있어야 한다.

3.5 Viewing Enterprise Systems

시스템의 특수한 문제와 관련성이 높은 정보결과를 제공하는 것은 실시간 의사결정을 위한 작업 프로세스의 자동화와 시스템 운영을 위한 선제조건이다. “시스템의 뷰”는 결국 사용자가 관심갖고 있는 특정한 문제와 연관도가 높은 정보의 선택적 제공이다. 이러한 뷰에는 애플리케이션 단에서의 네트워크 트래픽 사용 현황률, 네트워크 장애상황에 대한 뷰 등의 다양한 예가 있다.

“시스템의 뷰”는 공통적으로 다음의 요소들을 갖고 있다.

  1. 모든 뷰에는 특정한 관심사항의 문제와 연관된 정보를 제공한다.
  2. 모든 뷰는 이벤트 기반이다.(불필요한 이벤트를 필터링, 이벤트를 카테고리화하고, 관련 이벤트 간의 조합)
  3. 모든 뷰는 그래픽을 활용하여 이해하기 쉬운 결과정보를 사용자에게 제공한다.
  4. 모든 뷰는 자동화된 의사결정 과정 지원을 위한 관련 정보를 제공한다.
  5. 가장 중요한 점은 실시간으로 시스템의 중지 없이 문제상황에 대한 모니터링 조건을 수정한다.

3.6 Creating and Coordinating Multiple Views

이 장의 기본적인 전제는 모든 사용자는 저마다 시스템에 대해서 다른 관심사항을 갖고 원하는 정보가 다른다는 것이다. 따라서 각 사용자에게 해당하는 개인화된 뷰를 제공해야 하고, 따라서 시스템의 모니터링 결과는 복수의 뷰를 제공해야만 한다. 한걸음 더 나아가 각 사용자의 요구사항에 맞게 뷰를 커스터마이제이션도 할 수 있어야 한다. 동일한 시스템 내에서 동시에 서로 다른 사용자 개인 또는 그룹에 따라 복수의 뷰를 생성하고 개인화하여 제공하는 것이 필요하다.

3.7 Hierarchical Viewing

복잡한 엔터프라이즈 시스템에 대한 이해를 쉽게 해주는 것은 시스템을 계층으로 분리하는 것이다. 레이어(또는 레벨)로 분리된 계층의 관점으로 사용자는 다른 계층에 대해서 신경 쓰지 않고 해당하는 계층에 대해서만 관심 갖고 분석할 수 있다. 이렇게 시스템을 계층의 관점으로 분리해내는 것을 계층형 뷰(Hierarchical Viewing)이라고 한다.

게층형 뷰의 관점으로 시스템을 분석하기 위해서는 추상화된 계층(abstraction hierarchy)을 정의해야 한다. 추상회돤 계층을 정의하는 일은 몇가지 번거로운 작업이 수반된다. 우선 실제 조직의 운영 및 활동을 명확히 정의해야 하는데 이는 기술적 이슈라기 보다는 조직 내에서 합의 되어야 할 운영문제이다. 또한 시스템 자체를 계층형으로 구조화해야 한다. 시스템을 계층화 아키텍쳐로 구성하는 일은  각 계층을 순서를 가지고 탑다운 방식으로 분리하는 일이다. 분리된 최하위 계층의 이벤트들이 모여 상위 계층의 이벤트를 구성할 수 있는 방식이 되어야 한다.

3.7.1 An Example of Hierarchical Viewing

계층형 뷰에 대한 예제는 이전 3.2장의 인과분석의 예에서 사용한 2PC 방법의 트랜잭션의 예로 다시 설명 가능하다. 이 트랜잭션은 상위 계층(금융 트레이드 레벨)에서는 Polling Phase와 Commit Phase로 뷰를 제공할 수 있고 2 단계의 정보는 하위 계층(트랜잭션 프로토콜 레벨)에서는 좀 더 세분화된 단계와 이벤트들의 조합으로 구성된다.

Hierarchical Viewing

계층을 구성하기 위해서는  3.7에서 설명한대로

  1. 엔터프라이즈 시스템의 활동에 대한 기술을 정확하게 정립하고
  2. 상위 레벨의 이벤트와
  3. 상위 이벤트와 하위 이벤트 사이의 관계

를 정의해야 한다.

이 예제에서는 성공적으로 커밋이 이루어진 경우와 실패한 경우의 시스템 활동에 대해서 정의할 수 있고 이와 관련된 이벤트 상위 레벨 이벤트를 Successful-2pc, Failed-2pc와 같이 정의하고 이 이벤트들을 하위 이벤트의 조합과 패턴과 매칭 시켜 정의 할 수 있다.

결론적으로 하위 레벨(트랜잭션 프로토콜 레벨)의 이벤트들의 조합 또는 패턴은 결국 상위 레벨(금융 트레이드 레벨) 이벤트로 추상화 되었다고 볼 수 있다.

좀 더 자세히 나누어 보면 상위레벨에서는 하위레벨과 달리 다음과 같은 정보들을 제공할 수 있다.

  • 트랜잭션의 성공/실패율 정보
  • 완료된 트랜잭션의 타이밍, 성공/실패시의 타이밍 정보
  • 실시간으로 동시에 운영되는 트랜잭션의 수

마찬가지로 하위레벨에서도 상위 레벨과 달리 상위레벨에서 이벤트가 추상화되면서 감추어진 하위 레벨만의 구체화된 정보를 보여줄 수 있다.

4장 Designing the Electronic Enterprise는 내용이 엔터프라이즈 시스템 설계를 다루므로 생략