KR101221205B1 - Http 세션 작업부하를 특성화하기 위한 데이터를수집하는 방법 및 장치 - Google Patents

Http 세션 작업부하를 특성화하기 위한 데이터를수집하는 방법 및 장치 Download PDF

Info

Publication number
KR101221205B1
KR101221205B1 KR1020087014494A KR20087014494A KR101221205B1 KR 101221205 B1 KR101221205 B1 KR 101221205B1 KR 1020087014494 A KR1020087014494 A KR 1020087014494A KR 20087014494 A KR20087014494 A KR 20087014494A KR 101221205 B1 KR101221205 B1 KR 101221205B1
Authority
KR
South Korea
Prior art keywords
session
data
computer system
http
server
Prior art date
Application number
KR1020087014494A
Other languages
English (en)
Other versions
KR20080085840A (ko
Inventor
에릭 로렌스 바스네스
존 매튜 샌토수오쏘
존 죠셉 스테처
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20080085840A publication Critical patent/KR20080085840A/ko
Application granted granted Critical
Publication of KR101221205B1 publication Critical patent/KR101221205B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computer And Data Communications (AREA)

Abstract

다수의 컴퓨터 시스템을 포함하는 웹 서버가 클라이언트에 대한 HTTP 세션 작업부하를 처리하는 다른 시스템들을 위해 리던던트 세션-지속 데이터의 데이터베이스를 유지하는 적어도 하나의 시스템을 포함한다. 세션 분석기는 HTTP 세션 작업부하를 특성화하기 위해 정보를 이 리던던시 데이터베이스로부터 추출한다(707,711). 바람직하게, 세션 작업부하는 애플리케이션 서버 및 하나 이상의 애플리케이션을 포함하는 미들웨어에 의해 처리된다. 애플리케이션 서버는 세션-지속 데이터를 데이터 객체로서 유지하고, 응답이 클라이언트에 전송되는 리던던트 데이터의 데이터베이스를 자동으로 업데이트한다. 세션 분석기는 세션 작업부하를 특성화하기 위해 리던던트 데이터베이스로부터 데이터를 독립적으로 추출한다. 선택적으로, 분석기는 추출된 데이터로부터 튜닝 추천(717)을 할 수 있는 지능적 추정 기능(716)을 포함한다.
웹 서버, 클라이언트, HTTP 세션 작업부하, 리던던시 데이터베이스

Description

HTTP 세션 작업부하를 특성화하기 위한 데이터를 수집하는 방법 및 장치{METHOD AND APPARATUS FOR COLLECTING DATA FOR CHARACTERIZING HTTP SESSION WORKLOADS}
본 발명은 일반적으로 디지털 데이터 처리에 관한 것으로, 특히 네트워킹된 디지털 컴퓨팅 환경에서 HTTP 세션을 이용하여 클라이언트 요청에 응답하는 서버의 동작에 관한 것이다.
20세기 후반, 정보 혁명으로 알려진 현상이 시작되었다. 정보 혁명은 어떤 하나의 사건 또는 기계보다 범위가 넓은 역사적인 발전이지만, 어떠한 단일 장치도 디지털 전자 컴퓨터 이상으로 정보 혁명을 나타낸 적이 없다. 컴퓨터 시스템의 발전은 확실히 혁명적이었다. 매년, 컴퓨터 시스템은 빠르게 성장하고, 더 많은 데이터를 저장하며, 더 많은 애플리케이션을 사용자에게 제공한다. 동시에, 컴퓨팅 자원의 비용은 꾸준히 감소하여, 몇 년 전에는 수집, 저장 및 처리하기에는 너무 비용이 많이 드는 정보가 지금은 컴퓨터를 통해 경제적으로 처리될 수 있다. 감소한 정보 처리 비용은 생산성을 눈덩이(snowballing effect)처럼 증가시키는데, 이는 제품 설계, 제조 공정, 자원 스케줄링, 관리 작업, 및 많은 다른 요인들이 보다 효율적으로 이루어지기 때문이다.
감소한 컴퓨팅 비용 및 디지털 장치의 일반적인 이용가능성은 이러한 장치에 저장된 정보의 양을 크게 증가시켜 왔다. 이렇게 많은 정보가 디지털 형태로 저장된 경우, 컴퓨터 시스템으로부터의 정보에 대한 폭넓은 액세스를 획득하는 것이 본래 바람직하다. 정보량은 어떤 한 장치의 기억 능력을 위축시킨다. 정보 액세스를 향상시키기 위해, 컴퓨팅 장치들이 서로 정보를 전달 및 교환하게 하는 각종 기술이 개발되어 왔다. 아마도, 이 분산 컴퓨팅의 가장 눈에 띄는 예로는 월드 와이드 웹(World Wide Web; 종종 간단히 'web'으로 알려짐)을 들 수 있으며, 인터넷을 사용하여 전 세계에 걸쳐 자원 수집이 이용 가능해진다. 학생에서부터 노인에 이르기까지 사람들은 웹 사용을 학습하고 가정 또는 일터에서 편리하게 거의 무수한 다양한 정보를 검색하고 있다. 회사, 정부, 조직, 및 심지어 일반 개인은, 알면 가치가 있는 건 무엇이든 웹상에서 어디에서든 이용 가능하도록, 웹상에서 이용 가능한 정보를 만들고 있다.
웹뿐만 아니라, 다수의 디지털 시스템들 간에 이메일이나 다른 형태의 통신 및 분산 처리를 지원하는 인터넷은 다수의 링크에 의해 연결된 디지털 장치들(노드들)의 이질적인 네트워크(heterogeneous network)이며, 이에 따라 네트워크의 두 노드들 사이에는 전형적으로 인터넷에 어느 정도의 리던던시를 제공하는 다수의 경로가 존재한다. 데이터는 패킷들로 전송되며, 각각의 패킷은 목적지에 도달할 때까지 다수의 연속적인 노드들을 통해 라우팅된다.
패킷을 라우팅하는 기본 레벨에서, 인터넷은 임의 데이터를 한 노드로부터 다른 노드로 전송할 수 있으며, 따라서 통신 매체로 볼 수 있다. 그러나, 인터넷 의 유용성은 소스 노드 및 목적지 노드에서 데이터 교환을 처리하는 애플리케이션에 따라 좌우된다. 웹 브라우저 및 다른 웹 애플리케이션의 출현은, 폭넓은 컴퓨터 프로그래밍 기술 없이도 기본 정보 전송 기술을 개별적으로 그리고 대화 형식으로 사람들이 이용할 수 있도록 함으로써, 인터넷 사용을 크게 확대시켜왔다.
그러므로, 인터넷 기술의 유용성을 개선함으로써 인터넷이 널리 보급되어 왔고, 장래에 인터넷 및 관련된 문제 해결 기술의 지속적인 사용 및 확장을 기대할 수 있음을 인식해야 한다.
월드 와이드 웹은 대화형 클라이언트-서버 패러다임(interactive client-server paradigm)을 이용한다. 사용자 입력에 응답하여, 클라이언트 상에서 실행되는 대화형 브라우저 애플리케이션은 서버에 의해 유지되는 (홈 페이지와 같은) 웹 페이지를 액세스함으로써 HTTP(Hyper-Text Transfer Protocol) 세션이라고 불리는 접속을 서버 애플리케이션과 설정한다. 서버는 실시간으로 응답하고, 브라우저는 사용자에게 디스플레이하기 위해 응답을 포맷팅한다. 가장 기본적인 대화 레벨에서, HTTP 세션은, 클라이언트가 원하는 문서의 URL을 전송함으로써 (웹 페이지와 같은) 문서를 요청하고, 서버가 요청된 문서의 복제본을 전송함으로써 응답하는 것으로 구성될 수 있다. 많은 경우에, HTTP 세션은 훨씬 더 복잡한 데이터 교환을 포함한다. 예컨대, 사용자는 액세스 온라인 소매상을 액세스하고, 소매상의 온라인 카탈로그의 각종 아이템들(상이한 웹 페이지들)을 검색하고, 관심 있는 아이템을 찾기 위한 검색 파라미터를 제공하고, 구입할 특정 아이템을 선택하고, 과금 및 선적 정보를 제공할 수 있으며, 이들 모두는 단일 HTTP 세션의 콘텍스트(context) 내에서 이루어진다.
HTTP 세션 내에서 데이터의 복잡한 대화식 교환을 지원하기 위해서는, 일반적으로 서버가 세션-지속 데이터(session-persistent data), 즉, 세션 상태를 유지하는데 사용되고 세션의 길이 동안 서버에 지속되는 데이터를 유지하는 것이 바람직하다. 이 세션-지속 데이터는, 데이터 패킷이 교환되고 클라이언트가 서버의 환경에서 한 웹 페이지로부터 다른 웹 페이지로 내비게이팅할 때, 클라이언트와 서버 간의 대화식 교환 내내 서버 내에 유지된다. 일반적으로, 세션-지속 데이터는 클라이언트와 서버 간에 전송되는 데이터 패킷의 각각에서 반복되지는 않지만, 클라이언트로부터 수신되는 입력 또는 서버에 의해 내부적으로 발생된 데이터에 의해 업데이트될 수도 있다. 이 세션-지속 데이터는 전형적으로 JAVA™ 빈(Bean)과 같은 세션 데이터 객체로 서버에 유지된다.
웹을 통해 클라이언트들을 서빙하는 서버에서는, 다수의 클라이언트가 어떤 한 순간에 서버에 접속될 수 있으며, 즉, 어떤 한 순간에 서버에서 액티브 상태인 다수의 HTTP 세션들이 존재할 수 있다. 전형적인 대기업에서는, 지원되어야 하는 동시 액티브 세션들의 개수가 어떤 단일 컴퓨터 시스템의 능력을 초과해도 좋다. 추가적으로, 많은 대기업에서, 서버는 항상 이용 가능할 필요가 있다. 그러므로, 이러한 많은 기업은 서버의 클러스터라고도 하는 다수의 서버 컴퓨터 시스템을 사용하여 웹 서비스를 제공한다. 이러한 클러스터는 다수의 시스템의 추가적인 처리 능력을 제공하고, 적절히 구성되면, 클러스터 내의 하나 이상의 개별 서버 시스템의 장애 또는 다른 이용불가능성의 경우에 클라이언트에의 서비스 부정을 방지하기 위해 원하는 정도의 리던던시를 제공할 수 있다. 서버 시스템들 중 한 서버 시스템에 장애가 있는 경우에 끊김 없는 클라이언트 인터페이스를 제공하기 위해, 세션-지속 데이터가 리던던트 형식으로 유지될 수 있다. 리던던트 세션-지속 데이터를 유지하기 위한 일반 기술은, 클라이언트에 대해 서버 기능을 수행하는 클러스터의 다른 시스템들을 위해 세션-지속 데이터의 데이터베이스를 유지하는 클러스터 내의 하나 이상의 시스템을 제공하는 것이다. 서버 시스템에 장애가 생기면, 액티브 세션이 클러스터의 하나 이상의 다른 서버 시스템들에 할당될 수 있고, 대응하는 세션-지속 데이터가 적절한 서버 또는 서버들에 제공된다.
세션-지속 데이터로서 유지되는 데이터의 양 및 타입은 서버에 의해 수행되는 애플리케이션에 따라 좌우된다. 일부 애플리케이션은 세션에서 세션으로 크게 변하지 않는 상태 데이터의 최소량을 유지하나, 많은 애플리케이션은 세션 동안에 클라이언트의 서버와의 상호 작용의 히스토리를 나타내는 훨씬 더 복잡한 세션 데이터를 유지한다. 이러한 애플리케이션에서, 세션-지속 데이터는 세션이 길어지고 클라이언트가 서버와 많은 상호 작용을 행함에 따라 축적되는 경향이 있다. 이러한 세션-지속 데이터의 유지는 서버의 클러스터에서 이용 가능한 하드웨어 자원의 매우 상당한 부분을 소비할 수 있다.
전형적인 복잡한 웹 서버 환경에서, 클라이언트를 위해 서버에 의해 수행되는 기능들은 끊임없이 진화하고 있다. 예컨대, 온라인 소매 환경에서, 사용자에게 디스플레이된 웹 페이지는 새로운 아이템, 불연속적인 아이템, 특별한 제공물 등을 반영하기 위해 끊임없이 업데이트된다. 때때로, 기업은 자신의 전체적인 웹 인터 페이스를 향상된 버전으로 대체하여, 향상된 기능, 그래픽, 내비게이션(navigation) 등을 제공할 수 있다. 추가적으로, 서버(온라인 소매상)를 액세스하는 클라이언트들(소비자들)의 세트가 진화할 수 있고, 또는 서버와의 상호 작용의 상이한 패턴을 개발할 수 있다.
이 클라이언트-서버 상호 작용의 유동성 및 복잡성으로 인해, 서버 내의 사용 패턴을 예측하기가 어렵고, 특히, 유지되어야 하는 세션-지속 데이터의 양 및 데이터를 유지하는데 필요한 자원을 예측하기가 어렵다. 이들 사용 패턴을 예측하는 적절한 수단 없이는, 클라이언트 요청을 서비스하고, 리던던시를 유지하고, 서버 이용가능성을 보장하기 위해 적절한 자원이 이용 가능하도록 보장하기가 어렵다. 또한, 최적으로 이용 가능한 자원을 할당하기가 어려워, 충분한 자원이 이용 가능하더라도, 원하는 기능이 부족할 수 있다.
그러므로, 웹 서버의 HTTP 세션 내에서 클라이언트-서버 상호 작용을 특성화하고 이해하는 향상된 기술이 필요하다.
다수의 컴퓨터 시스템을 포함하는 웹 서버는, 클라이언트에 대한 HTTP 세션 작업부하를 처리하는 다른 시스템을 위해 리던던트 세션-지속 데이터의 저장소(repository; 예컨대 데이터베이스. 이후 참조의 용이를 위해 데이터베이스라고 함)를 유지하는 적어도 하나의 시스템을 포함한다. 세션 분석기는 HTTP 세션 작업부하를 특성화하기 위해 이 데이터베이스로부터 정보를 추출한다.
바람직한 실시예에서, HTTP 세션들이 클러스터의 다수의 서버 시스템에 할당되고, 각각의 서버 시스템은 각각의 서브세트의 액티브 HTTP 세션들을 처리한다. 애플리케이션 서버 및 애플리케이션 서버에 의해 지원되는 하나 이상의 애플리케이션이 액티브 HTTP 세션을 처리하기 위해 클러스터의 각각의 서버 시스템상에서 실행된다. 애플리케이션 서버는 세션-지속 데이터를 바람직하게는 JAVA™ 빈스(beans)인 HTTP 세션 데이터 객체의 형태로 유지하지만, 기타 다른 형태를 취할 수도 있다. 클러스터는 리던던트 세션-지속 데이터의 데이터베이스를 유지하는 적어도 하나의 세션 리던던시 시스템을 더 포함한다. 서버 시스템의 장애 또는 다른 이용불가능성의 경우에, 장애를 가진 서버 시스템상의 액티브 세션에 대응하는 세션-지속 데이터는 리던던트 세션-지속 데이터로부터 복구될 수 있다. 애플리케이션 서버는, 애플리케이션 서버 내의 세션-지속 데이터에 대한 변화가 행해지고 응답이 클라이언트에 전송됨에 따라, 세션 리던던시 시스템 내의 리던던트 세션-지속 데이터를 자동으로 업데이트하는 시설을 포함한다. 바람직한 실시예로서 설명된 이 구성 및 기능 분담은 변경될 수 있다.
바람직한 실시예에서, 세션 분석기는 데이터 마이닝(data mining) 기능과 지능적 추정(intelligent inferencing) 기능을 수행한다. 데이터 마이닝 기능은 세션 작업부하를 특성화하기 위해 리던던트 세션-지속 데이터의 데이터베이스로부터 데이터를 추출한다. 이 데이터는 시스템 관리자와 같은 사용자에게 각종 형태로 제공될 수 있다. 선택적인 개선으로서, 분석기는 규칙-기반 시스템을 사용하여, 추출된 데이터로부터 추정을 행할 수 있는 지능적 추정 기능을 포함한다. 바람직하게, 이들 추정은 시스템 관리자 등이 이용 가능한 튜닝 파라미터의 조절과 관련되나, 다른 추정이 대안으로 행해질 수도 있다.
HTTP 세션 작업부하를 특성화하기 위한, 사용이 쉬운 툴(tool)을 제공함으로써, 복잡한 웹 서버에서의 적절한 자원 계획 및 튜닝이 용이해진다. HTTP 세션 작업부하 특성화로부터 얻은 데이터는 또한, 애플리케이션 프로그램 자체의 장래 버전을 설계할 때 가능한 보정 동작을 위해, 과잉 자원 소비를 낳는 웹 서버 애플리케이션 프로그램의 특성을 식별할 때 유용할 수 있다. 또한, 리던던트 세션-지속 데이터의 데이터베이스가 세션 데이터 리던던시 및 클라이언트의 서버 이용가능성을 보장하기 위해 이미 유지되고 있으므로, 이 존재하는 데이터베이스로부터의 HTTP 세션 작업부하 데이터의 추출은 비교적 적은 추가적인 시스템 오버헤드를 포함한다.
구조 및 동작에 관한 본 발명의 추가적인 설명은 다음의 상세 설명 및 첨부 도면을 참조함으로써 가장 잘 이해될 수 있다.
본 발명의 실시예들은 공통 참조 번호로 유사한 부분을 나타내는 첨부 도면을 참조하여 예로서 보다 상세하게 설명된다.
도 1은 인터넷의 하이-레벨 표현.
도 2는 본 발명의 바람직한 실시예에 따라 HTTP 세션 작업부하를 특성화하기 위한 전형적인 웹 서버 환경의 하이-레벨 표현.
도 3은 바람직한 실시예에 따른 웹 서버의 컴퓨터 시스템의 주요 하드웨어 구성 요소의 하이-레벨 블록도.
도 4는 바람직한 실시예에 따른 세션 서버 컴퓨터 시스템의 주요 소프트웨어 구성 요소의 개념적 예시도.
도 5는 바람직한 실시예에 따른 세션 리던던시 데이터베이스 시스템의 주요 소프트웨어 구성 요소의 개념적 예시도.
도 6은 바람직한 실시예에 따라 클라이언트 요청을 서비스하고 세션 상태 데이터를 유지하는 프로세스를 하이 레벨로 예시한 흐름도.
도 7A 및 도 7B(여기서는 도 7로 총칭함)는 바람직한 실시예에 따라 세션 작업부하를 특성화하기 위해 데이터를 추출하는 프로세스를 하이 레벨로 예시한 흐름도.
인터넷 개요
본 발명의 실시예들의 동작을 설명하기 전에, 인터넷의 간단한 개요 설명을 여기서 제공한다.
용어 '인터넷'은 '인터네트워크(Internetwork)'의 축약으로, 보통 컴퓨터 네트워킹 기술 분야에서 잘 알려진 프로토콜들의 TCP/IP 슈트(suite)를 사용하는 컴퓨터 네트워크의 집합을 말한다. TCP/IP는 컴퓨터 간의 통신을 용이하게 하는 소프트웨어 프로토콜인 '전송 제어 프로토콜/인터넷 프로토콜(Transport Control Protocol/Internet Protocol)'의 두문자어이다.
도 1은 인터넷의 하이-레벨 개념도이다. 인터넷은 사전 설정된 토폴로지(topology)를 갖고 있지 않으며, 새로운 노드 및 링크를 추가함으로써 무한대로 확장 가능하다. 노드는 자신을 다른 노드에 연결하는 임의 개수의 링크들을 가질 수 있고, 이들은 상이한 데이터 용량 및 다른 특성을 가진 각종 통신 기술들을 이용할 수 있다. 그러므로 인터넷의 토폴로지는 매우 복잡한 상호 접속 네트워크가 되고, 전형적으로 두 노드들 사이에는 다수의 가능한 경로들이 존재한다.
때때로 '백본(backbone)'이라 불리는 네트워크의 중심부는 데이터 패킷을 수신하여 네트워크 내의 다른 노드로 전송하는 다수의 고속 라우터들(101)을 포함한다. 전형적으로, 각각의 라우터는 다른 라우터들에의 다수의 접속을 가지며, 이들 접속은 높은 데이터 용량을 갖고 있다. 예컨대, 고속 라우터들(101) 사이에는 광 섬유 링크가 종종 사용된다. 도 1에 노드들(102)로 예시된, 고속 라우터의 인터넷 '백본'에 대해 액세스 포인트의 역할을 하는 노드들이 고속 라우터에 접속된다. 액세스 노드들(102)은 또한 라우터들이 되는데, 이는 액세스 노드들(102)이 고속 라우터(101)와 다른 네트워크 노드 사이에서 데이터 패킷을 라우팅하는 기능을 하기 때문이며, 그러나, 액세스 노드들(102)은 전형적으로 저속 접속을 이용한다. 액세스 노드는, 예컨대, 요금을 위해 전화선 또는 다른 접속을 통해 인터넷 액세스를 제공하는 공중 인터넷 서비스 제공자일 수 있고, 또는 내부 시스템들을 위한 대형 회사의 액세스 노드일 수 있다. 보통, 각각의 액세스 노드(102)는 리던던시를 제공하기 위해 다수의 고속 라우터들(101)에 접속되나, 이것이 필수 요건은 아니다. 각각의 액세스 노드는 전형적으로 다수의 호스트 컴퓨터 시스템(103A, 103B; 참조 번호 103으로 총칭함)에 대한 액세스를 제공하며, 2개 만이 도 1에 예시되어 있다. 호스트들(103)은, 인터넷에 접속되어 소스로서 인터넷을 통해 전송되는 데 이터 패킷을 발생하고 또는 궁극적인 목적지로서 인터넷을 통해 전송되는 데이터 패킷을 수신하는 컴퓨터 시스템이다. 호스트들(103)은 대형 메인프레임 시스템에서부터 PC, 소형의 휴대형 장치를 포함한 임의 타입의 컴퓨터 시스템이며, 단일 호스트는 시스템의 클러스터를 나타낼 수 있다. 종종, 호스트는 인터넷을 액세스하는데 사용하는 하나의 액세스 노드(102)만을 갖고 있으나(이 경우에 비-리던던트임), 리던던시를 위해 다수의 이러한 액세스 노드들을 가질 수도 있다. 호스트와 액세스 노드 간의 접속은 종종 비교적 저속이나(예컨대, 전화선 또는 무선 주파수 링크), 고속 링크일 수 있다. 주로 인터넷을 통해 정보를 제공하는 기능을 하는 대형 인터넷 서버와 같은 일부 컴퓨터 시스템의 경우에, 호스트는 고속 라우터(101)에 직접 접속될 수 있으며, 그러므로 자기 자신의 액세스 노드의 역할을 한다.
도 1은 인터넷의 개념적 예시를 의도한 것이고, 실제로 인터넷상의 노드들 및 접속들의 개수는 도 1에 예시된 것보다 훨씬 많으며, 접속들의 토폴로지는 변경될 수 있음이 이해될 것이다. 또한, 예시의 명료성을 위해 도 1에 도시되지 않은 접속 타입 및 액세스 형태의 다른 계층이 존재할 수 있음은 이해될 것이다. 즉, 호스트가 백본의 고속 라우터(101)에 도달하기 위해 접속시 사용하는 다수의 타입 또는 클래스의 액세스 노드(102)가 존재할 수 있고, 상이한 호스트들이 액세스 노드의 상이한 레벨에서 접속될 수 있다. 엄격하게 말하면, 인터넷은 인터넷에 접속된 모든 장치들을 포함하며, PC와 같은 소형 컴퓨터 시스템이 인터넷에 로드 온될 때, 소형 컴퓨터 시스템은 인터넷 노드가 되고 주소(주소가 임시에 불과하지만)를 가진다는 의미에서 인터넷의 일부가 된다. 종종, 라우터, 및 인터넷 백본 및 액세스 노드들의 접속을 인터넷이라고 칭하는데, 즉, 인터넷은 컴퓨터 시스템의 분산 처리 네트워크와는 대조적으로 통신 매체로 볼 수 있다. 일반적으로,'인터넷'은 여기서는 통신 매체를 기술하기 위해 후자의 의미로 사용되지만, 콘텍스트에 따라, 전자의 의미로 사용될 수도 있다.
네트워킹된 시스템은 전형적으로 클라이언트 서버 아키텍처를 따른다. '클라이언트'는 관련되지 않은 다른 클래스 또는 그룹의 서비스를 이용하는 클래스 또는 그룹의 멤버이다. 인터넷과 같은 컴퓨터 네트워크의 콘텍스트에서, 클라이언트는 다른 프로그램에 의해 제공되는 서비스를 요청하는 프로세스(즉, 개략적으로 프로그램 또는 태스크(task))이다. 클라이언트 프로세스는 다른 프로그램 또는 서버 자체에 관한 어떤 작업 세부 사항을 모른 채 요청된 서비스를 이용한다. 네트워킹된 시스템에서, 클라이언트는 보통 다른 컴퓨터(즉, 서버)에 의해 제공되는 공유 네트워크 자원을 액세스하는 컴퓨터이다.
서버는 전형적으로 인터넷과 같은 통신 매체를 통해 액세스 가능한 하나 이상의 원격 컴퓨터 시스템이다. 서버는 정보 소스를 스캐닝 및 검색한다. 사용자에 의한 이러한 요청에 기초하여, 서버는 필터링된 전자 정보를 클라이언트 프로세스에 대한 서버 응답으로서 사용자에게 제공한다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 활성화될 수 있고, 서버 프로세스는 제2 컴퓨터 시스템에서 활성화될 수 있으며, 프로세스들은, 다수의 클라이언트가 서버의 정보 수집 능력을 이용할 수 있도록 하는 통신 매체를 통해 서로 통신한다. 따라서, 서버는 네트워크, 및 디스크 드라이브 상의 데이터와 같은 자원의 모두 또는 일부에 대한 액세스를 제어하는 관리 소프트웨어를 구동하는 네트워크 컴퓨터로서 설명될 수 있다. 서버로서 작용하는 컴퓨터는, 네트워크상의 워크스테이션(workstation)들로서 작용하는 컴퓨터들이 자원을 이용할 수 있도록 해준다.
클라이언트와 서버는 하이퍼텍스트 전송 프로토콜(HTTP)에 의해 제공되는 기능을 이용하여 서로 통신할 수 있다. 월드 와이드 웹(WWW), 또는 간단히, '웹'은 이 프로토콜에 부착되는 인터넷상의 모든 서버를 포함하며, 이들 서버는 URL(Universal Resource Locator) 주소를 통해 클라이언트에 액세스 가능하다. 인터넷 서비스는 2개의 기본 구성 요소, 즉 사용될 프로토콜 및 객체 경로명을 가진 URL을 지정함으로써 액세스될 수 있다. 예컨대, URL 주소, 'http://www.uspto.gov'는 하이퍼텍스트 전송 프로토콜('ttp') 및 미국 특허상표청의 서버의 이름('www.uspto.gov')을 지정한다. 서버명은 고유한 수치값(즉, TCP/IP 주소)과 연관된다. 서버가 실제로, 서버 기능을 총괄 수행하는 다수의 컴퓨터 시스템을 구비할 수 있지만, 서버는 자신이 응답하는 단일 TCP/IP 주소를 가지고 있다는 의미에서 단일 '호스트'이며, 서버의 정확한 구조(장치 개수, 기능의 분담 등)를 클라이언트는 알 수 없다.
HTTP 세션을 개시하기 위해 서버와 접속을 설정하고, 설정된 HTTP 세션 내에서 HTTP 요청을 서버에 전송하고, HTTP 세션 내에서 HTTP 응답을 서버로부터 수신하고, 정보를 사용자에게 제공하는 제1 프로세스가 클라이언트 내에서 활성화된다. 종래에, 이 제1 프로세스는 대화형 브라우저 애플리케이션이다. 서버 자체가 정보 를 HTTP 응답의 형태로 클라이언트에게 제공하는 대응 서버 소프트웨어를 실행한다. HTTP 응답은 HTML(Hypertext Markup Language) 또는 다른 서버에 의해 발생된 데이터로 구성된 '웹 페이지'에 대응한다.
브라우저는 서버로부터 웹 페이지를 검색하여 클라이언트에 있는 사용자에게 디스플레이한다. '웹 페이지'('페이지' 또는 '문서'라고도 함)는 전형적으로 HTML과 같은 하이퍼-텍스트 언어로 작성된 데이터 파일이며, 데이터 파일은 텍스트, 그래픽 이미지, 및 심지어 그 데이터 파일과 연관된 사운드 레코딩 또는 동영상 클립과 같은 멀티미디어 객체를 가질 수 있지만, 웹 페이지는 간단히 이미지일 수도 있다. 하이퍼-텍스트 페이지는 제어 태그 및 데이터를 포함한다. 제어 태그들은 구조, 즉 예컨대, 이미지의 표제, 작은 표제, 단락(paragraphs), 리스트(lists), 및 삽입부(embedding)를 나타낸다. 데이터는 사용자에게 디스플레이 또는 재생될 텍스트 또는 멀티미디어와 같은 콘텐츠로 구성된다. 브라우저는 제어 태그를 해석하고, 브라우저가 사용자에게 디스플레이, 재생 또는 달리 수행하는, 볼 수 있는 객체를 생성하기 위해 제어 태그에 의해 지정되는 구조에 따라 데이터를 포맷팅한다. 제어 태그는, 페이지를 다른 소스로부터 검색하여 제어 태그에 의해 지정된 위치에 배치할 것을 브라우저에 지시할 수 있다. 이 방식으로, 브라우저는 스프레드시트(spreadsheets), 텍스트, 핫링크(hotlinks), 사진, 사운드, 채팅룸(chat-rooms), 및 비디오 객체와 같은 다수의 구성 요소를 포함하는 볼 수 있는 객체를 형성할 수 있다. 웹 페이지는, 하나 이상의 별도의 파일을 그래픽 사용자 인터페이스 내 에 볼 수 있는 객체로서 디스플레이되는 액티브 디렉토리 또는 파일 구조로 로딩함으로써, 구성될 수 있다.
위에서 설명한 간단한 경우에, 정보 전송은 기본적으로 한 방향이며, 클라이언트 브라우저는 단지 정보를 요청하고(원하는 문서를 그 URL로 식별함으로써), 서버가 그 정보를 제공한다. HTTP 세션 내에서, 클라이언트가 서버에 의해 지정된 포맷에 따라 정보를 서버에 제공하는 것도 가능하다. 서버는, 웹상에서 HTML 형태를 제공함으로써 클라이언트로부터의 정보가 전송되어야 하는 포맷을 지정할 수 있다. 클라이언트 브라우저는 서버를 액세스하고 HTML 형태를 마치 어떤 웹 페이지인 것처럼 검색한다. 브라우저는 사용자에게의 대화형 디스플레이를 위해 HTML 형태를 포맷팅한다. 형태는 전형적으로 하나 이상의 대화식 입력 필드를 포함하고, 사용자는 입력 데이터를 지정할 수 있다. 이 입력 데이터는 대화식 입력 필드에 사용자에 의해 직접 입력되는 텍스트 데이터(예컨대, 신용 카드 번호)일 수 있고, 또는 대화식 입력 필드에 사용자에 의해 지정되는 클라이언트 시스템상의 파일로부터 얻어진 데이터일 수 있다. 지정된 바와 같은 사용자 데이터는 HTML 형태 사양에 따라 포맷팅된다. 다음에, 이 포맷팅된 사용자 데이터(여러 부분으로 되어 있을 수 있는 '형태 데이터(form data)'로 알려짐)는 HTTP 요청시 서버로 전송된다. 다음에, 서버는 형태 데이터를 포함하는 요청을 처리하고, 클라이언트에 적절히 응답한다.
단일 HTTP 세션이 클라이언트로부터 서버로 그리고 서버로부터 클라이언트로의 다수의 데이터 교환을 포함할 수 있고, 서버에게, 데이터를 클라이언트에 제공 할 뿐만 아니라 서버 또는 기타 다른 시스템에 의해 유지되는 데이터를 업데이트하도록 요구할 수 있으므로, 전체적인 대화형 HTTP 세션은 복잡한 유한 상태 프로세스로 볼 수 있다. 클라이언트를 적절히 서비스하기 위해, 서버는 전형적으로 각각의 액티브 세션 동안 세션-지속 데이터를 유지하며, 이 세션-지속 데이터는 세션의 길이 동안 서버에 유지된다(HTTP 세션의 각각의 후속되는 대화식 데이터 교환으로 업데이트될 수도 있음).
상세 설명
동일 번호로 동일 부분을 나타내는 도면을 참조하면, 도 2는 본 발명의 바람직한 실시예에 따라 HTTP 세션 작업부하를 특성화하기 위한 전형적인 웹 서버 환경의 하이-레벨 표현이다. 웹 서빙 기업은 웹 존재를 제공하기 위해, 즉, 인터넷(100)을 통해 액세스 가능한 정보의 하나 이상의 대화형 웹 페이지를 발생하기 위해, 컴퓨터 시스템(202)(여기서는, 웹 서버라고 함)의 클러스터를 유지한다. 인터넷에 접속된 다른 장치의 관점에서, 웹 서버(202)는 단일 호스트 시스템(103)이다. 인터넷(100)을 통해 통신하는 클라이언트(201A-D)(여기서는 특징(feature; 201)으로 총칭함)은 웹 서버(202)에 서비스 요청을 발생한다. 웹 서버 시스템들 중 적어도 하나가 인터넷에 연결된 게이트웨이(203)이다. 웹 서버는 다수의 세션 서버 시스템(205A-205C)(여기서는 특징(205)으로 총칭함), 및 적어도 하나의 세션 리던던시 데이터베이스 시스템(206)을 더 포함한다. 웹 서버의 각종 시스템은 네트워크(204)를 통해 서로 통신한다. 네트워크(204)는 바람직하게는 이더넷 근거리 통신망과 같은 근거리 통신망(LAN)이지만, 다른 네트워크들도 가능하다.
동작시, 게이트웨이(203)는 인터넷을 통해 웹 서버(202)로 주소 지정된 데이터 패킷을 수신한다. 게이트웨이(203)는 각각의 데이터 패킷에 대해 웹 서버(202) 내의 적절한 목적지를 결정한다. 구체적으로, 패킷이 클라이언트(201)와 웹 서버(202)간의 HTTP 세션 접속의 설정 요청에 도달하면, 게이트웨이(203)는 세션을 처리할 세션 서버 시스템(205)을 선택한다. 일단 세션이 설정되면, 동일 세션 내의 동일 클라이언트로부터의 후속 통신이, 일반적으로, 하나의 세션 서버 시스템만이 어떤 특별한 세션을 처리하도록 원래 선택된 세션 서버 시스템으로 라우팅된다. 세션을 세션 서버 시스템에 할당하는 게이트웨이 시스템은 당해 기술 분야에 잘 알려져 있고, 할당은 현재 알려져 있거나 이후 개발되는 어떤 알고리즘 또는 기준에 기초할 수 있다. 전형적으로, 할당이 세션 서버들 간에 작업부하의 균형화를 시도하지만, 다른 또는 추가적인 고려 사항을 이용할 수도 있다. 게이트웨이(203)는 인터넷(100)과 LAN(204) 사이에 삽입된 단일 시스템으로서 도 2에 표현되어 있지만, 게이트웨이 기능은 대안으로 다수의 시스템 또는 장치에 의해 수행될 수 있다. 예컨대, 라우터는 인터넷(100)과 LAN(204) 사이에서 데이터를 라우팅할 수 있는 반면에, 세션을 상이한 세션 서버들에 할당하는 기능은 LAN(204)에 부착된 별도의 시스템에 의해 수행될 수 있다.
세션 서버(205)의 기능은 웹 서버를 위해 세션 작업부하를 처리하는 것이다. 세션 서버는 클라이언트가 요청한 정보를 발생하고, 및/또는 클라이언트가 요청한 거래를 처리한다. 정보가 클라이언트에게 전송되는 경우에, 이는 일반적으로, 정 보가 HTML 문서로 또는 기타 다른 적절한 형태로 포맷팅됨을 의미한다. 세션 서버는 요구된 모든 서비스를 스스로 수행할 수도 있지만, 보다 전형적으로는, 세션 서버는 클라이언트를 서비스하기 위해 데이터베이스 시스템(207)에 의해 나타내어지는 하나 이상의 공유 데이터베이스를 액세스할 필요가 있을 것이다. 예컨대, 온라인 소매상의 경우, 세션 서버는 소매상의 카탈로그를 나타내는 웹 페이지의 로컬 카피를 가질 수 있으나, 일반적으로, 소비자 프로파일을 검색하고, 재고를 체크하고, 소비자 선택을 기록하고, 온라인 판매 거래를 완료하는데 필요한 모든 다른 것을 행하기 위해 공유 데이터베이스를 액세스할 필요가 있을 것이다. 일부 경우에, 클라이언트는 단순히 공유 데이터베이스로부터의 정보를 원하며, 세션 서버는 주로 데이터베이스 시스템(207)을 액세스하고(예컨대, 웹 브라우저상에서 볼 수 있도록) 데이터를 클라이언트에 적절한 형태로 포맷팅하는 기능을 한다. 클라이언트 요청을 서비스하기 위해 세션 서버(205)가 클라이언트(201)를 위해 공유 데이터베이스(207)를 액세스하기 때문에, 때때로 중간 계층(middle tier) 시스템 또는 중간 계층 서버라고도 한다.
다수의 세션 서버에 의한 사용을 위해 공유 데이터베이스를 유지하는 데이터베이스 시스템(207)은 웹 서버 기업의 일부일 수 있고, 또는 웹 서버 기업과는 완전히 독립적으로 유지되는 데이터베이스일 수 있다. 웹 서버 기업 내부의 데이터베이스 시스템을 대표할 수 있는, 데이터베이스 시스템(207)이 LAN(204)에 연결된 것으로 도시되어 있지만, 데이터베이스 시스템(207)은 대안으로 인터넷을 포함한 어떤 통신 링크 또는 네트워크 또는 그 조합을 통해 세션 서버(205)와 통신할 수 있다.
세션 서버(205)와 별개인 적어도 하나의 세션 리던던시 데이터베이스 시스템(206)이 리던던트 세션-지속 데이터의 데이터베이스를 유지하며, 여기서는 리던던트 세션 데이터베이스라고도 한다. 종래에, 리던던트 세션 데이터베이스의 목적은 세션 서버(205) 중 하나가 이용가능하지 않게 되는 경우 데이터 손실을 방지하고 끊김 없는 복구를 제공하는 것이다. 구체적으로, 세션 서버(205)가 이용 가능하지 않게 되면, 게이트웨이(203)는, 새로운 데이터 패킷이 클라이언트로부터 도달함에 따라, 이용가능하지 않은 세션 서버상에서 각각의 액티브 세션에 대한 각각의 대체 세션 서버를 선택한다. 이전에 설정된 세션에 관한 데이터 패킷은 관련된 세션의 세션 식별자를 포함한다. 이 세션이 현재 이용 가능하지 않은 세션 서버에 이전에 할당된 것으로 결정할 때, 게이트웨이는 세션을 후임 세션 서버에 할당하고, 이에 따라 세션을 라우팅한다. 후임 세션 서버는 세션의 세션 지속 데이터(이용가능하지 않은 세션 서버에 의해 달리 유지되어 있음)을 얻기 위해 세션 리던던시 데이터베이스 시스템(206)을 액세스한다. 리던던트 세션 데이터베이스 내의 데이터로부터, 후임 세션 서버는 세션의 상태를 재구성할 수 있고 이용가능하지 않은 서버가 중단된 경우에 세션을 계속 처리할 수 있다. 클라이언트는 세션 서버가 대체된 것을 전혀 모르며, 클라이언트에게는 전체적인 프로세스가 끊김 없는 것으로 나타난다.
본 발명의 바람직한 실시예에 따라, 세션 리던던시 데이터베이스 시스템(206)의 리던던트 세션 데이터베이스는 원래 목적의 범위를 벗어난 추가적인 목 적을 위해 사용된다. 구체적으로, 세션 리던던시 데이터베이스의 데이터는 웹 서버(202) 내의 세션 작업부하를 특성화하기 위해 분석 및 이용된다. 세션 리던던시 데이터베이스 시스템의 동작을 여기서 상세히 설명한다.
도 2는 전형적인 웹 서버 환경을 높은 일반화 수준으로 나타내도록 의도한 것이고, 이러한 환경의 모든 구성 요소 또는 웹 서버 환경의 가능한 모든 변경을 상세하게 나타내도록 의도한 것은 아니다. 도 2의 환경적인 표현의 수많은 변화가 가능하며, 이 중에서 특히 다음의 것이 가능하고, 여기서는 특별한 변화의 설명은 단지 예시를 위한 것이지 한정하는 것이 아니다. 단일 게이트웨이(203)와 단일 LAN(204)이 예시를 위해 도시되어 있지만, 단일 게이트웨이 시스템 및 단일 LAN의 사용은 분명하게 신뢰성 및 이용가능성 노출을 발생하는데, 이는 단일 구성 요소의 장애가 전체적인 웹 서버를 다운시킬 수 있기 때문이다. 그러므로, 다수의 리던던트 게이트웨이 시스템, 및 웹 서버 클러스터의 시스템 간의 다수의 리던던트 통신 경로를 제공하는 것이 일반적이다. 또한, 데이터베이스 시스템(207)이 단일 모노리식 엔터티로서 도시되어 있지만, 실제로, 데이터가 저장되고 및/또는 동작이 분산 방식으로 수행되는 다수의 컴퓨터 시스템을 포함할 수도 있다. 실제로, 상이한 구성 및 인터페이스를 가진 다수의 데이터베이스가 존재할 수 있으며, 이들 모두는 동일 세트의 세션 서버에 의해 액세스되며, 하나 이상의 데이터베이스가 다수의 시스템상에 중복 저장될 수 있다. 네트워크(204)는 근거리 통신망으로 기술되지만, 네트워크는 각종 웹 서버 장치들이 서로 통신할 수 있도록 하는 어떤 세트의 통신 링크, 네트워크, 또는 네트워크 조합일 수 있고, 리던던트 링크를 포함할 수 있다. 4개의 클라이언트(201)가 단일-사용자 워크스테이션으로 나타내어져 있지만, 클라이언트는 서비스 요청을 웹 서버에 발생할 수 있는 어떤 엔터티일 수 있고, 대형 멀티-유저 시스템상에서 실행되는 프로세스들을 포함할 수 있으며, 또한, 클라이언트들의 개수는 변경될 수 있고, 전형적으로 도 2에 예시를 위해 나타낸 4개의 클라이언트보다 훨씬 많다.
도 3은 바람직한 실시예에 따라 웹 서버(202)의 컴퓨터 시스템(300)의 주요 하드웨어 구성 요소들의 하이-레벨 블록도이다. 시스템(300)은 세션 서버 시스템(205)의 하드웨어 구성 요소, 또는 세션 리던던시 데이터베이스 시스템(206) 또는 하드웨어 구성 요소를 나타낼 수 있는 일반화된 시스템 표현이거나, 기타 다른 시스템이다. CPU(301)는 명령을 실행하고 메인 메모리(302)로부터의 데이터를 처리하는 적어도 하나의 범용 프로그래밍가능 프로세서이다. 메인 메모리(302)는 바람직하게는 각종 메모리 기술을 이용하는 랜덤 액세스 메모리이며, 여기서 데이터는 CPU(301)에 의한 처리를 위해 기억 장치 등으로부터 로딩된다.
하나 이상의 통신 버스(305)는 CPU(301), 메인 메모리(302), 및 I/O 프로세서들(IOP) 또는 I/O 어댑터(IOA)로도 알려져 있을 수 있는 각종 I/O 인터페이스 유닛(311-314) 사이에서 데이터를 전송하는 데이터 통신 경로를 제공한다. I/O 인터페이스 유닛은 다양한 기억 장치 및 I/O 장치와의 통신을 지원한다. 예컨대, 단말 인터페이스 유닛(311)은 하나 이상의 사용자 단말(321-324)의 부착을 지원한다. 기억 장치 인터페이스 유닛(312)은 하나 이상의 직접 액세스 기억 장치(direct access storage device; DASD)(325-327)(전형적으로 회전식 자기 디스크 드라이브 기억 장치이지만, 대안으로 호스트에게는 단일의 대형 기억 장치로서 나타나도록 구성된 디스크 드라이브들의 어레이를 포함한 다른 장치일 수도 있음)의 부착을 지원한다. I/O 장치 인터페이스 유닛(313)은 프린터(328) 및 팩스기(329)와 같은 다른 타입의 각종 I/O 장치의 부착을 지원하며, 다른 또는 추가적인 타입의 I/O 장치가 사용될 수 있는 것으로 이해된다. 네트워크 인터페이스(314)는 하나 이상의 다른 디지털 장치와의 통신을 위해 하나 이상의 외부 네트워크(330)에의 접속을 지원한다. 네트워크(330)는 네트워크(204) 또는 어떤 세트의 다수의 네트워크를 나타낼 수 있고, 당해 기술 분야에 알려진 각종 근거리 통신망 또는 광역 통신망으로서 구현될 수 있다.
도 3은 시스템(300)의 대표적인 주요 구성 요소를 하이 레벨로 나타내도록 의도한 것이고, 개별 구성 요소는 도 3에 나타낸 것보다 더 높은 복잡성을 가질 수 있고, 도 3에 도시된 것과는 다른 구성 요소 또는 도 3에 도시된 것 이외의 구성 요소가 존재할 수도 있으며, 이러한 구성의 개수, 타입, 및 구성은 변경될 수 있고, 대형 컴퓨터 시스템은 전형적으로 도 3에 나타낸 것보다 많은 구성 요소를 가질 것임을 이해해야 한다. 이러한 추가적인 복잡성 또는 추가적인 변화의 여러 가지 특별한 예들을 여기서 공개하며, 이들은 예시적인 것이지 반드시 유일한 변화가 아님이 이해된다.
단일의 CPU(301)만이 예시를 위해 도 3에 도시되어 있지만, 컴퓨터 시스템(300)은 당해 기술 분야에서 알려진 바와 같이 다수의 CPU를 포함할 수 있다. 메인 메모리(302)가 단일 모노리식(monolithic) 엔터티로서 도 3에 도시되어 있지 만, 메모리(302)는 당해 기술 분야에서 알려진 바와 같이 실제로는 분산 및/또는 계층적일 수 있다. 예컨대, 메모리는 다수의 캐시 레벨로 존재할 수 있고, 이들 캐시는 또한 기능에 의해 분리되어, 하나의 캐시가 명령을 유지하고 다른 캐시가 프로세서 또는 프로세서들에 의해 사용되는 비-명령 데이터를 유지하도록 할 수 있다. 메모리는, 각종의 이른바 불균일 메모리 액세스(non-uniform memory access; NUMA) 컴퓨터 아키텍처에서 알려진 바와 같이, 또한 분산되어, 상이한 CPU들 또는 CPU세트들과 연관될 수 있다. 통신 버스(305)는 도 3에 단일 엔터티로서 도시되어 있지만, 실제로는 각종 시스템 구성 요소들 간의 통신은 전형적으로 버스, 인터페이스 등의 복잡한 계층을 통해 달성되며, 여기서 고속 경로가 CPU(301)와 메모리(302) 간의 통신을 위해 사용되며, 저속 경로가 I/O 인터페이스 유닛(311-314)과의 통신을 위해 사용된다. 버스(305)는 계층, 스타(star) 또는 웹 구성에서의 점대점 링크, 다수의 계층 버스, 병렬 및 리던던트 경로 등과 같은 각종 형태로 배열될 수 있다. 예컨대, NUMA 아키텍처에서 알려진 바와 같이, 통신 경로는 노드별로 배열된다. 버스는, 예컨대, 산업 표준 PCI 버스, 또는 기타 다른 적절한 버스 기술을 이용할 수 있다. 각종 I/O 장치로의 각종 통신 경로로부터 시스템 버스(305)를 분리하는 다수의 I/O 인터페이스 유닛이 도시되어 있지만, 대안으로 I/O 장치들 중 일부 또는 모두를 직접 하나 이상의 시스템 버스에 연결하는 것도 가능하다.
도 3에 도시된 컴퓨터 시스템(300)은 부착된 다수의 단말(321-324)을 갖고 있으며, 예컨대 멀티-유저 '메인프레임(mainframe)' 컴퓨터 시스템을 대표할 수 있다. 부착된 장치들의 실제 개수는 변경될 수 있고, 본 발명은 어떤 특별한 크기의 시스템들에 한정되지 않는다. 컴퓨터 시스템(300)을 액세스하는 사용자 워크스테이션 또는 단말이 시스템(300)에 부착되어, 네트워크(330)를 통해 시스템(300)과 통신할 수도 있다. 컴퓨터 시스템(300)은, 대안으로, 부착된 단말이 없는 시스템, 또는 단일 사용자 디스플레이 및 키보드 입력만을 포함하는 단일 조작자의 콘솔만을 포함하는 시스템일 수도 있다. 또한, 본 발명의 일정한 기능들이 여기서는 예시를 위해 단일 컴퓨터 시스템으로 구현되는 것으로 설명되지만, 이들 기능은, 대안으로, 서로 통신하는 컴퓨터 시스템들의 분산 네트워크로 구현될 수 있고, 여기서 설명된 상이한 기능들 또는 단계들은 상이한 컴퓨터 시스템들 상에서 수행된다.
각종 시스템 구성 요소들이 하이 레벨로 설명 및 도시되어 있지만, 전형적인 컴퓨터 시스템은 본 발명의 이해에 필수적이지 않은, 도시되지 않은 많은 다른 구성 요소를 포함함을 이해해야 한다. 바람직한 실시예에서, 컴퓨터 시스템(300)은 IBM i/Series™ 아키텍처에 기초를 둔 컴퓨터 시스템이며, 본 발명은 다른 컴퓨터 시스템상에서 구현될 수 있음은 이해된다.
도 4는 바람직한 실시예에 따라 메모리(302)의 구성 요소로서 나타낸 세션 서버(205)의 주요 소프트웨어 구성 요소의 개념적 예시이다. 운영 체제 커널(401)은, 당해 기술 분야에 잘 알려진 바와 같이, 장치 인터페이스, 메모리 페이지 관리, 다중 작업 관리 및 신속 처리 등과 같은 각종 로우 레벨 소프트웨어 기능을 제공하는 실행가능 코드 및 상태 데이터이다. 특히, 운영 체제(401)는 적어도 하나의 네트워크 액세스 기능(402)을 포함한다. 네트워크 액세스 기능(402)은 네트워크 인터페이스(314)를 통해 하나 이상의 외부 네트워크, 특히 네트워크(204)와 통 신하는 소프트웨어이다. 네트워크 액세스 기능(402)은, 일반적으로, 구체적으로 중간 계층(middle-tier) 세션 애플리케이션(405, 406)을 위해 기능을 수행하는 애플리케이션 서버(404)를 포함하는 세션 서버 시스템(205)에서 실행되는 애플리케이션을 위해 네트워크 통신을 처리한다. 네트워크 액세스 기능(402)이 운영 체제 커널(401)의 일부로서 도시되어 있지만, 그 기능은 대안으로 별도의 소프트웨어 모듈일 수 있다.
세션 서버 시설(403)은 HTTP 세션 내의 클라이언트를 위해 서비스를 수행한다. 세션 서버 시설(403)은 중간 계층 시설로서 간주될 수 있는 데, 이는, 필요한 경우, 세션 서버 시설이 클라이언트 요청을 처리하기 위해 클라이언트를 위해 하나 이상의 공유 데이터베이스(207)를 액세스하기 때문이다. 세션 서버 시설은 대화형 월드 와이드 웹 인터페이스를 인터넷(100)을 통해 세션 서버 시스템(205)과 통신하는 다수의 클라이언트(201)에 제공한다. 즉, 세션 서버 시설(403)은 대화형 웹 페이지를, 클라이언트 시스템(201)에서 실행되는 웹 브라우저 애플리케이션에 의해 볼 수 있도록 HTML 또는 다른 적절한 포맷으로 발생한다. 클라이언트(201)에게는, 세션 서버 시설(403)이 서버로서 기능을 하며, 클라이언트는 세션 서버 시설(403) 뒤의 어떤 데이터베이스 또는 다른 애플리케이션을 알지 못한다. 특히, 클라이언트는 리던던트 세션 데이터를 유지하는 어떤 기능 또는 애플리케이션을 알지 못한다.
바람직한 실시예에서, 세션 서버 시설(403)은 애플리케이션 서버(404), 및 하나 이상의 세션 서버 애플리케이션(405, 406)(이중 2 개가 도 4에 예시되어 있 고, 개수는 변경될 수 있음이 이해됨)을 포함한다. 애플리케이션 서버(404)는 클라이언트-서버 환경에서 중간 계층 애플리케이션을 전반적으로 지원하고, 특히 클라이언트가 인터넷을 통해 중간 계층을 액세스하는 대화형 웹 브라우저 애플리케이션인 경우에 이러한 애플리케이션을 지원하는 하부구조(framework) 또는 쉘(shell)이다. 다른 특징들 중에서, 애플리케이션 서버(404)는 다양한 흔히 사용되는 고유 데이터베이스 포맷의 데이터베이스(207)를 액세스하고, 각각의 HTTP 세션 내에서 클라이언트(201)와의 통신을 처리하는 기능들(접속 시설)의 세트를 포함한다. 세션 서버 애플리케이션(405, 405)은 클라이언트(103)를 위해 일부 세트의 특정 서버 기능을 수행하기 위해 개발된 코드이다. 애플리케이션 서버(404)는 입력 클라이언트 요청 데이터를 애플리케이션(405, 406)에 제공한다. 이들 요청은 종종 공유 데이터(207)의 데이터베이스에 대한 액세스를 요구하지만, 일부 애플리케이션은 이러한 액세스를 요구하지 않을 수도 있다. 데이터베이스 액세스가 애플리케이션(405, 406)에 의해 요구되는 경우, 데이터베이스 시스템(207)을 액세스하기 위해 애플리케이션 서버(404)의 접속 시설을 호출한다. 애플리케이션 서버(404)는, 일반적으로 적절한 애플리케이션에 전송되는 응답을 데이터베이스로부터 수신한다. 클라이언트에 대한 데이터 응답은 애플리케이션(405, 406)에 의해 발생되고 애플리케이션 서버(404)를 통해 전송된다. 애플리케이션(405, 406)은 액세스될 애플리케이션 또는 데이터베이스와 독립된 공통 인터페이스(407)를 통해 애플리케이션 서버(404)와 통신한다. 바람직한 실시예에서, 인터페이스(407)는 J2EE(JAVA 2 Enterprise Edition) 인터페이스 사양을 따르지만, 다른 인터페이스가 대안으로 사용될 수도 있다. 바람직한 실시예에서, 애플리케이션 서버(404)는 IBM WEBSPHERE™ 애플리케이션 서버이며, 다른 형태의 애플리케이션 서버 시설이 대안으로 사용될 수도 있음이 이해된다.
애플리케이션 서버(404)는 HTTP 세션-지속 데이터를 유지하는 세션 객체 관리기 기능(408)을 포함한다. 바람직하게, 세션-지속 데이터는 다수의 세션-지속 데이터 객체(411-414)의 형태로 유지되고, 구체적으로, 각각의 세션-지속 데이터 객체(411-414)는 선 마이크로시스템즈(Sun MicroSystems)사에서 보급한 EJB(Enterprise JAVA Bean) 사양을 따르는 데이터 구조인 것이 바람직하며, 세션-지속 데이터는 기타 다른 형태로 유지될 수 있음이 이해된다. 액티브 세션 별로 하나의 세션-지속 데이터 객체가 존재한다. 각각의 세션-지속 데이터 객체(411-414)는 세션의 수명 동안 세션 서버에 지속되며, 전형적으로 세션이 종료될 때 삭제된다. 4개의 세션-지속 데이터 객체(411-414)가 도 4에 예시되어 있고, 어떤 주어진 시간에 세션 객체들의 개수 및 액티브 세션들의 개수는 전형적으로 훨씬 더 많음이 이해된다. 세션 객체 관리기(408)는 예컨대 데이터를 얻고 데이터를 업데이트하기 위해 세션-지속 데이터 객체를 액세스하는 액세스 기능을 제공한다. 세션 객체 관리기는 또한 새로운 세션-지속 데이터 객체를 할당하고, 세션이 종료될 때 객체를 할당 해제한다.
애플리케이션 서버(404)는 데이터 객체(411-414)에서 세션 지속 데이터에 대한 리던던시를 자동으로 제공하는 세션 지속 데이터 리던던시 기능(409)을 더 포함한다. 구체적으로, 세션-지속 데이터 객체(411, 414)가 할당, 수정 및 할당 해제 됨에 따라, 리던던시 기능(409)은 할당, 수정 및 할당 해제를 포함하는 리던던트 데이터를 네트워크(204)를 통해 세션 리던던시 데이터베이스 시스템(206)에 전송한다. 리던던시 시스템(206)은 리던던트 세션 데이터의 데이터베이스를 유지하기 위해 리던던시 기능(409)으로부터의 이 리던던트 데이터를 사용한다. 리던던시 시스템(206)은 웹 서버(202)를 형성하는 시스템들의 클러스터에서 모든 서버 시스템(205)으로부터 이 리던던트 데이터를 수신함으로써, 리던던시 시스템(206) 내의 리던던트 세션 데이터의 데이터베이스가 웹 서버 내의 모든 액티브 HTTP 세션의 각각의 현재 세션 상태(전송 지연 무시, 큐잉(queuing) 및 다른 처리 지연 등)를 전반적으로 나타내도록 한다.
리던던시 기능(409)은 대략 출력 메시지를 클라이언트(201)에 전송함과 동시에 리던던트 데이터 업데이트 메시지를 리던던시 시스템(206)에 전송한다. 즉, 세션 서버가 응답을 클라이언트에 전송할 준비를 할 때까지 세션 서버에서의 처리 결과로서의 세션-지속 데이터의 변화들이 세션 서버(205)에 유지 및 축적된다. 응답이 클라이언트로 전송될 때, 리던던시 기능(409)은, 동시에, 축적된 세션-지속 데이터 변화를 리던던시 시스템(206)에 전송한다. 이 방식으로, 클라이언트의 관점에서의 세션 데이터 상태만이 리던던시 시스템(206)에 유지된다.
세션 서버(205)는 전형적으로 도 4에 도시되지 않은 추가적인 데이터를 포함한다. 예컨대, 세션 서버(205)는 클라이언트에 대한 응답을 발생할 때 세션 서버 애플리케이션(405, 406)에 의한 사용을 위해 공유 데이터베이스 시스템(207)으로부터의 데이터, 및/또는 어떤 웹 페이지를 저장할 수 있다. 다른 각종 상태 데이터 가 세션 서버에 의해 유지될 수 있다.
도 5는 바람직한 실시예에 따라 메모리(302)의 구성 요소들로서 나타낸 세션 리던던시 데이터베이스 시스템(206)의 주요 소프트웨어 구성 요소들의 개념적 예시이다. 운영 체제 커널(501) 및 네트워크 액세스 기능(502)은 각각 세션 서버 시스템(205)의 운영 체제 커널(401) 및 네트워크 액세스 기능(402)의 기능과 유사한 기능을 제공한다. 제공되는 기능들이 유사하더라도, 운영 체제(401, 501)는 반드시 동일한 것은 아니다(동일할 수도 있음). 네트워크 액세스 기능(502)은 구체적으로 네트워크(104)를 포함하는 하나 이상의 네트워크에 네트워크 인터페이스(314)를 통해 전달된다. 네트워크 액세스 기능(502)은, 일반적으로, 구체적으로 데이터베이스 관리 시스템(511)을 포함하는 리던던시 데이터베이스 시스템(206)에서 실행되는 애플리케이션을 위해 네트워크 통신을 처리한다. 네트워크 액세스 기능(502)은 운영 체제 커널(501)의 일부로서 도시되어 있지만, 대안으로 별도의 소프트웨어 모듈일 수 있다.
구성된 데이터베이스(503)는 각종 세션 서버(205)를 위해 리던던트 세션-지속 데이터를 유지한다. 데이터베이스(503)는 하나 이상의 테이블(504)(이중 하나가 도 5에 도시됨)을 포함하며, 각각의 테이블은 복수의 엔트리 또는 레코드를 포함하고, 당해 기술 분야에서 잘 알려진 바와 같이, 각각의 엔트리는 적어도 하나의(보통 많은) 필드를 포함한다. 데이터베이스 테이블(504)(또는 테이블들)은 특별한 세션을 재구성하기 위해 액세스 가능하도록 하는 방식으로 구성된 리던던트 세션-지속 데이터를 포함한다. 때때로 메타데이터라고도 하는 하나 이상의 보조 데이터 구조(505-508)가 데이터베이스 테이블 또는 테이블들과 연관된다. 보조 데이터 구조는 내부의 데이터베이스 및 데이터의 구조를 특성화하고, 데이터베이스 관리에 포함된 각종 작업에서, 특히 데이터베이스에 대해 쿼리(query)를 실행할 때 유용하다. 보조 데이터 구조의 예로는 데이터베이스 인덱스(505), 히스토그램(506), 및 히스토리 데이터(507)를 들 수 있으며, 다른 타입의 메타데이터가 존재할 수 있음이 이해된다.
데이터베이스 관리 시스템(511)은 데이터베이스(503)의 관리를 위한 기본 기능을 제공한다. 데이터베이스 관리 시스템(511)은, 이론적으로는, 관련 정보를 가질 수도 있고 또는 가질 수 없는 임의 개수의 데이터베이스 테이블들을 지원할 수 있으나, 도 5에는 하나의 테이블만이 도시되어 있다. 데이터베이스 관리 시스템(511)은, 바람직하게는, 사용자가 데이터베이스를 정의하는 것, 데이터베이스의 정의를 변경하는 것, 데이터베이스에서 레코드를 생성, 편집 및 제거하는 것, 레코드를 데이터베이스로부터 검색하는 것, 데이터베이스 인덱스를 정의하는 것과 같은 기본적인 데이터베이스 동작들을 수행할 수 있도록 한다.
데이터베이스 관리 시스템(511)은, 바람직하게는, 데이터베이스를 관리하기 위한 다양한, 흔히 사용되는 기능들을 가진 범용 데이터베이스 관리 시스템이다. 즉, 데이터베이스(503)가 리던던트 세션-지속 데이터를 유지할 목적으로 존재하며, 그러므로 기타 다른 데이터베이스에서 사용되는 어떤 기능적인 능력을 필요로 하지 않을 수 있지만, 바람직하게는 기능 능력을 가진 범용 데이터베이스 소프트웨어를 사용하여 구현된다. 이들 기능은 데이터베이스 관리 소프트웨어 내에 존재하는데, 이는 데이터베이스 관리 소프트웨어가 거의 어떠한 타입의 데이터베이스라도 관리하도록 설계된 범용 데이터베이스 관리기이기 때문이다(구체적으로 세션-지속 데이터를 위해 설계된 맞춤 제작된 데이터베이스 소프트웨어와 대조적임).
데이터베이스 관리 시스템(511)에 의해 지원되는 기능들 중에는, 외부 프로세스들로부터 명령들을 수신하는 애플리케이션 프로그래밍 인터페이스(API)(512), 데이터베이스 내의 데이터에 대해 복잡한 쿼리를 실행하는 쿼리 엔진(513), 및 데이터베이스 활동을 감시하고 히스토리 메타데이터(507)에서 히스토리 통계 자료 정보를 발생하는 모니터(514)가 있다. 데이터베이스 관리 시스템(511)은 보다 진보된 각종 데이터베이스 기능을 더 포함할 수 있다. 데이터베이스 관리 시스템(511)이 도 5에는 운영 체제 커널(501)과는 별개인 엔터티로서 나타내어져 있지만, 일부 컴퓨터 아키텍처에서는 각종 데이터베이스 관리 기능들이 운영 체제에 통합됨이 이해될 것이다.
내부 상태 정보 및 다른 데이터 이외에, 데이터베이스 관리 시스템(511)은 데이터 구조(508-509)로서 나타낸 수많은 임시 데이터 구조를 실행 동안에 발생할 수 있다. 이들 임시 구조는 특히 중간 쿼리 결과들을 유지하기 위해 쿼리 실행 동안에 종종 발생된다. 이러한 임시 구조들의 개수는 크게 변경될 수 있고 훨씬 더 많을 수 있다.
하나의 데이터베이스 테이블(504), 하나의 인덱스(505), 하나의 히스토그램(506), 및 하나의 히스토리 데이터 테이블(507)을 가진 하나의 데이터베이스(503)가 도 5에 도시되어 있지만, 이러한 엔터티들의 개수는 변경될 수 있고 훨 씬 더 많을 수도 있다. 컴퓨터 시스템은 다수의 데이터베이스 테이블을 포함할 수 있고, 예시되지 않은 연관된 다수의 인덱스, 히스토그램, 또는 다른 보조 데이터 구조를 가질 수도 있다. 대안으로, 도 5에 나타낸 일부 엔터티는 모든 데이터베이스에 존재하지 않을 수 있다. 데이터베이스 관리 시스템(511)은 도 5에 데이터베이스(503)의 일부로서 나타내어져 있지만, 실행가능 코드인 데이터베이스 관리 시스템은 때때로 '데이터베이스', 즉, 데이터와는 별개인 엔터티로서 고려된다.
바람직한 실시예에서, 별도의 세션 분석기(515)는 세션 서버(205)에서 세션 작업부하를 특성화하기 위해 데이터베이스(503)로부터 데이터를 얻는다. 세션 분석기(515)는 세션 리던던시 데이터베이스 시스템(206)에 존재하는 것으로 도 5에 나타내어져 있다. 그러나, 데이터베이스(303)와는 독립적인 소프트웨어 엔터티인 세션 분석기(515)는 대안으로 LAN(204)에 접속된 기타 다른 시스템상에 존재할 수 있고, 또는 더 원격에서 접속된 시스템상에 존재할 수도 있다. 세션 분석기는 전형적으로 웹 서버 기업의 시스템 관리자 또는 유사한 직원이 사용하는 시설이고, 일반적으로 일반 사람들은 이용 가능하지 않다. 세션 분석기는, 바람직하게는, 명령을 입력하고 결과를 보기 위한 대화형 사용자 인터페이스(516)를 포함한다. 세션 분석기는 네트워크를 통해 접속된 원격 단말로부터 액세스될 수 있지만, 일반적으로 액세스는 제한될 것이고, 시스템(206)의 로컬 단말로부터만 액세스 가능할 수도 있다.
세션 분석기(515)는 데이터 마이닝 기능(data mining function; 517) 및, 선택적으로, 규칙-기반 지능적 추정 기능(518)을 포함한다. 데이터 마이닝 기 능(517)은 세션 작업부하를 특성화하는데 유용한 데이터를 수집한다. 특히, 데이터 마이닝 기능은 예컨대 데이터베이스의 쿼리를 수행하고 데이터베이스 활동을 감시하기 위해 표준 데이터베이스 관리 기능을 이용하여 정보를 데이터베이스(303)로부터 획득하기 위하여 API(512)를 통해 데이터베이스 관리 시스템(511)을 액세스한다. 이들 기능은 상술한 바와 같이 데이터베이스 관리 시스템(511)에서 이용 가능하지만, 보통 리던던트 세션-지속 데이터를 유지 및 제공하는 데에는 사용되지 않는다. 마이닝 기능(517)에 의해 마이닝된 데이터는 시간 흐름에 따라 축적되어 히스토리 데이터 파일(519)에 히스토리 데이터로서 저장될 수 있다. 지능적 추정 기능(518)은 세션 시스템(205) 및/또는 리던던시 시스템(206)의 구성가능 튜닝 파라미터를 변경하기 위한 튜닝 추천을 트리거(trigger)시키기 위해 데이터 마이닝 기능에 의해 수집된 데이터를 이용하는 규칙-기반 전문가 시스템이다. 세션 분석기 기능을 여기서 더욱 상세히 설명한다.
각종 소프트웨어 엔터티들은 별개의 엔터티들이거나 다른 엔터티 내에 포함된 것으로 도 4 및/또는 도 5에 나타내어져 있다. 그러나, 이 표현은 단지 예시를 위한 것으로, 특별한 모듈들 또는 데이터 엔터티들은 별개의 엔터티들 또는 공통 모듈의 일부 또는 모듈들의 패키지일 수 있음은 이해될 것이다. 또한, 소프트웨어 엔터티들의 개수 및 타입이 도 4 및 도 5의 개념적 표현으로 도시되어 있지만, 이러한 엔터티들의 실제 개수는 변경될 수 있고, 특히, 복잡한 웹 서버 환경에서는, 이러한 엔터티들의 개수 및 복잡성은 전형적으로 훨씬 더 큼은 이해될 것이다. 추가적으로, 각종 소프트웨어 구성 요소들이 도 4 및 도 5에서 두 컴퓨터 시스템상에 도시되어 있지만, 이들 엔터티는 대안으로 2개 이외의 개수의 시스템들 상에 포함될 수도 있다
도 4 및 도 5의 소프트웨어 구성 요소들은 메모리(302) 내에 존재하는 것으로 개념적으로 도시되어 있지만, 일반적으로 컴퓨터 시스템의 메모리는 모든 프로그램 및 데이터를 동시에 보유하기에는 너무 작고, 정보는, 전형적으로, 회전식 자기 디스크 드라이브와 같은 하나 이상의 대용량 기억 장치를 포함한 데이터 기억 장치(325-327)에 저장되며, 정보는 요구되는 경우 운영 체제에 의해 메모리에 페이징됨은 이해될 것이다. 특히, 데이터베이스(503)는 전형적으로 메모리에 로딩되기에 너무 크고, 전형적으로 데이터베이스 레코드들의 전체 개수 중 작은 부분만이 어떤 한 시간에 메모리에 로딩된다. 전체 데이터베이스(503)는 전형적으로 디스크 기억 장치(325-327)에 기록된다. 또한, 도 4 및 도 5의 개념적 표현은 어떤 특별한 메모리 구성 모델을 내포하는 것을 의미하는 것은 아니며, 시스템(205) 또는 시스템(206)은 단일 주소 공간 가상 메모리를 사용할 수 있고, 또는 중복되는 다수의 가상 주소 공간들을 사용할 수도 있음은 이해될 것이다.
바람직한 실시예에 따라, 세션 서버(205)에서 실행되는 세션 애플리케이션(405, 406)은 클라이언트 거래 요청을 처리한다. 세션 애플리케이션(405, 406)은 세션 상태 데이터가 유지되는 세션-지속 데이터 객체(411-414)를 관리하기 위해 애플리케이션 서버(404)의 기능을 이용한다. 애플리케이션 서버(404)는, 세션 동안에 변화들이 이루어짐에 따라, 세션-지속 데이터 객체(411-414) 내의 상태 데이터를 세션 리던던시 데이터베이스 시스템(206)으로 자동으로 백업함으로써, 리던던 트 세션 지속 데이터베이스(503)가 현재 세션 상태를 반영하도록 하며, 데이터베이스로의 변화들은 세션 활동을 반영한다.
도 6은 바람직한 실시예에 따라 클라이언트 요청을 서비스하고 세션 상태 데이터를 유지하는 프로세스를 하이 레벨로 나타낸 흐름도이다. 도 6을 참조하면, 흐름도는 수직으로 3개의 부분으로 나뉘며, 이들은 클라이언트(201), 세션 서버(205), 및 세션 리던던시 데이터베이스 시스템(206)의 각각에 의해 수행되는 동작을 나타낸다.
클라이언트는 웹 서버로부터의 원격 서비스에 대한 요청을 작성하고, 웹 서버에서 세션을 개시하기 위해 요청을 인터넷을 통해 웹 서버에 전송한다(단계 601). 바람직한 실시예에서, 클라이언트는 대화형 웹 브라우저 프로세스를 실행하고, 초기 요청은 전형적으로 홈 페이지와 같은 웹 서버에 의해 유지되는 웹 페이지를 액세스하라는 요청이다. 웹 서버의 게이트웨이에서 상기 요청의 수신시, 세션이 생성되고, 요청이 세션 서버에 할당된다(단계 602). 다음에, 세션 서버는 적절한 응답을 발생하기 위해 클라이언트의 제출을 처리한다(단계 603). 처리는 세션 서버 애플리케이션 및 요청의 성질에 따라 임의 개수의 단계들 및 임의의 복잡성을 포함할 수 있다. 단계 603으로 나타낸 제출의 처리는 공유 데이터베이스 시스템(207) 내의 데이터의 액세스를 선택적으로 포함할 수 있다. 요청의 처리는, 세션 상태를 기록하기 위해 세션-지속 데이터 객체를 할당하는 것, 및 요구되는 경우 세션-지속 데이터를 업데이트하는 것을 포함한다.
클라이언트 제출의 처리가 종료되면, 세션 서버(205)는 응답을 클라이언트로 전송한다(단계 604). 클라이언트의 브라우저는 응답을 수신하여 클라이언트가 볼 수 있는 형태(웹 페이지)로 제공한다(단계 605). 단계 604에서 응답을 클라이언트에 전송함에 동시에, 세션 서버는 또한 세션 상태 업데이트 메시지를 세션 리던던시 데이터베이스 시스템(206)에 전송한다. 메시지는, 세션 객체가 새로운 세션을 위해 할당되었고 현재 세션 상태 데이터를 포함함을 나타낸다. 메시지에 응답하여, 리던던시 시스템(206)은 새로운 세션을 위해 데이터베이스(503)에 새로운 엔트리를 생성하고, 이 새로운 데이터베이스 엔트리는 세션-지속 데이터 객체에 포함된 세션 상태 데이터를 기록한다(단계 607). 데이터베이스(503) 내의 엔트리는 모든 세션-지속 데이터를, 세션 서버가 이용 가능하지 않은 경우 새로운 세션-지속 데이터 객체가 재구성되도록 하는 방식으로 기록하지만, 모든 데이터를 반드시 세션-지속 데이터 객체에 사용된 동일한 데이터 구조 또는 포맷을 이용하여 기록하는 것은 아니다.
다음에, 클라이언트는 하나 이상의 추가적인 데이터 제출을 작성하여 웹 서버에 전송함으로써 대화 세션을 지속할 수 있다(단계 606). 이들 추가적인 제출은 세션 서버에 의해 수신되어, 응답을 발생하기 위해 처리된다(단계 608). 이전과 같이, 처리는, 선택적으로, 공유 데이터베이스 시스템(207) 내의 데이터를 액세스하는 것을 포함할 수 있다. 요청의 처리는, 요구되는 경우, 세션-지속 데이터 객체에 기록된 세션 상태를 업데이트하는 것을 포함한다.
클라이언트 제출의 처리가 단계 608에서 종료되면, 세션 서버(205)는 응답을 클라이언트에 전송한다(단계 609). 클라이언트의 브라우저는 응답을 수신하여 클 라이언트가 볼 수 있는 형태로 제공한다(단계 610). 단계 609에서 클라이언트에 응답을 전송함과 동시에, 세션 서버는 또한 지속 세션 데이터가 업데이트되었음을 알리는 세션 상태 업데이트 메시지를 세션 리던던시 데이터베이스 시스템(206)에 전송하며, 세션 상태 업데이트 메시지는 업데이트된 데이터를 포함한다. 메시지에 응답하여, 리던던시 시스템(206)은 현재 세션을 위해 데이터베이스(503) 내의 엔트리를 업데이트한다(단계 611). 제출을 작성하고, 제출을 처리하고, 응답을 하는 이 프로세스는 세션 내에 정해지지 않은 횟수 동안 계속될 수 있다.
어떤 시점에서, 대체적으로 단계 612로 나타낸 바와 같이, 세션은, 일반적으로 클라이언트에 의한 어떤 활동 또는 클라이언트의 명백한 분리 없이 타임 아웃된 결과 종료된다. 세션 서버 내의 애플리케이션 서버(404)가 세션 이벤트의 끝을 검출할 때, 세션-지속 데이터 객체를 할당 해제하고, 세션이 종료되었음을 알리는 메시지를 세션 리던던시 데이터베이스 시스템에 전송한다(단계 613). 리던던시 시스템은 세션 데이터베이스에서 대응 엔트리를 삭제함으로써 응답한다(단계 614).
도 7A 및 도 7B (여기서는 도 7로 총칭함)는 바람직한 실시예에 따라 세션 작업부하를 특성화하기 위해 리던던트 세션-지속 데이터(503)의 데이터베이스로부터 데이터를 추출하는 프로세스를 하이 레벨로 예시한 흐름도이다. 도 7의 흐름도는 수직으로 3개의 부분으로 나뉘며, 이들은 유용한 데이터를 얻을 수 있는 세션 분석기(515), 데이터베이스(503), 및 기타 다른 엔터티의 각각에서 수행되는 동작을 나타낸다.
도 7을 참조하면, 대화형 사용자 인터페이스(516)를 통해 세션 분석기(515) 와 상호 작용하는 시스템 관리자와 같은 사용자가 세션 작업부하를 특성화하는데 유용한 데이터, 특히 데이터베이스(503)의 동작에 관한 데이터의 감시 및 수집을 개시시킨다(단계 701). 일반적으로, 단독으로 또는 조합하여 사용될 수 있는, 관련 데이터를 수집할 수 있는 다수의 방식이 존재한다.
관련 데이터를 수집하는 제1 방법에서, 세션 분석기는 내부 모니터(514)를 활성화하기 위해 적절한 API(512)를 통해 데이터베이스(503)를 호출한다(단계 702). 다음에, 모니터는 히스토리 통계 자료의 수집을 개시하며, 이러한 데이터는 히스토리 데이터(507)로서 데이터베이스 내에 저장된다(단계 703). 모니터(514)는 전형적으로 대형 데이터베이스 관리 시스템의 일체부이며, 예컨대 쿼리를 최적화하고 데이터베이스 성능을 분석하기 위해 통계 자료를 수집함에 있어 유용하다. 일부 데이터베이스에서, 모니터는 디폴트로 활성화될 수 있고, 또는 다른 수단에 의해 활성화될 수도 있어, 항상 세션 분석기(515)를 통해 명백하게 활성화할 필요는 없다. 통계 자료는 보통 간격을 두고 수집된다. 예컨대, 한 간격에서 수신되는 데이터베이스 업데이트 동작들의 횟수, 이러한 업데이트의 크기는 등은 그 간격에서의 평균 도달 속도, 평균 크기 등을 계산하는데 이용될 수 있다. 모니터는 단계 704에서 나타낸 시간 지연 동안에 통계 자료를 적극적으로 수집한다. 시간 지연은 미리 지정될 수 있으나, 보다 전형적으로는 모니터는 정해지지 않은 기간 동안에 간단히 활성화될 것이며, 어떤 시간이 경과한 후, 사용자는 하나 이상의 쿼리를 구동함으로써 히스토리 데이터를 검색하기 위해 다음 동작을 개시할 것이다. 세션 분석기는 데이터 마이너(517)에 의해 지정된 하나 이상의 쿼리를 실행하기 위해 적 절한 API(512)를 사용하여 데이터베이스 관리 시스템(511)을 호출하고(단계 705), 데이터베이스 관리 시스템은 쿼리 또는 쿼리들을 실행하기 위해 쿼리 엔진(513)을 호출하며, 쿼리 결과를 세션 분석기에 제공한다(단계 706).
관련 데이터를 수집하는 제2 방법에서, 세션 분석기(515)의 데이터 마이너(data miner; 517)는 적절한 API(512)를 통해 쿼리 엔진(513)을 호출함으로써 데이터베이스에 대해 쿼리를 주기적으로 제출하여 자기 자신의 히스토리 통계 자료를 구성한다(단계 707). 다음에, 쿼리 엔진은 쿼리를 실행하고, 결과를 세션 분석기에 제공한다(단계 708). 데이터 마이너(517)는 결과(또는 결과로부터 추출된 데이터)를 저장된 히스토리 쿼리 결과 데이터(519)로서 저장한다(단계 709). 히스토리 데이터는 단계 704-706를 주기적으로 반복함으로써 축적된다(명료화를 위해 단계 710으로 간단히 나타내고, 단계 707-709는 여러 번 반복될 수 있음이 이해된다). 예시를 위해, 저장된 히스토리 쿼리 결과(519)는 데이터베이스(503) 외부에 존재하는 파일 또는 다른 데이터 엔터티로서 도시된다. 데이터를 이러한 방식으로 저장하는 것이 가능하지만, 데이터를 데이터베이스(503)의 일부로서 저장하는 것, 즉, 결과 데이터(519)를 보유하기 위해 하나 이상의 추가적인 데이터베이스 테이블을 정의하고, 저장된 결과 데이터(519)를 액세스하기 위해 데이터베이스 관리 시스템(511)의 API(512) 및 쿼리 엔진(513)을 사용하는 것도 가능하다.
관련 데이터를 수집하는 제3 방법에서, 한 순간에 작업부하의 스냅샷(snapshot)은 위에서 설명한 제2 방법에서와 같이 동일한 방식으로 그러나 쿼리를 주기적으로 제출하지 않고 히스토리 데이터를 저장하지 않고도 얻어질 수 있다. 즉, 데이터 마이너(517)는, 현재 세션 작업부하 상태에 관한 정보를 얻기 위해 적절한 쿼리 또는 쿼리들을 구성하고, 적절한 API(512)를 통해 쿼리 엔진(513)을 호출함으로써 데이터베이스에 대해 쿼리(또는 쿼리들)를 제출한다(단계 711). 다음에, 쿼리 엔진(513)은 쿼리를 실행하고 결과를 세션 분석기에 제공한다(단계 712).
관련 데이터를 수집하는 제4 방법에서, 데이터 마이너(517)는 리던던시 시스템(206)에 대해 비교적 정적인 구성 데이터를 얻기 위해 운영 체제(501) 내의 기능을 호출할 수 있고, 마찬가지로, 세션 서버 시스템(205)에 대해 정적 구성 데이터를 얻기 위해 운영 체제(401) 내 또는 애플리케이션 서버(404) 내의 유사한 기능을 원격 호출할 수 있다(단계 713). 적용가능 운영 체제, 애플리케이션 서버 또는 다른 엔터티가 요청된 구성 정보로 응답한다(단계 714).
바람직한 실시예에서, 수집된 데이터는 다음 중 일부 또는 모두를 포함할 수 있다:
데이터베이스 업데이트 동작 횟수:
이 횟수는 짧은 간격으로, 비교적 긴 간격으로, 또는 다수의 간격으로 여러 번 측정될 수 있다. 이 횟수는 모든 세션 서버들에 대해 합한 것일 수 있고, 또는 각 서버에 대해 별도로 얻어질 수 있다. 업데이트 동작의 횟수는, 응답이 클라이언트에 전송됨에 따라 세션 상태가 세션 서버에서 업데이트된 횟수에 직접 관련되어 있다. 이것은 세션 서버의 활동 레벨의 기본 척도이다.
평균 업데이트 크기:
이 크기도 하나 이상의 간격으로 측정될 수 있고, 모든 서버에 대해 합한 것일 수 있고 또는 각각의 서버에 대해 별도로 얻어질 수도 있다. 업데이트 크기는 각각의 업데이트의 경우에 변화된 세션-지속 상태 데이터의 양이다. 업데이트 크기는 또한 전체 세션 작업부하를 특성화하는데 유용하고, 지나치게 큰 수는 세션-지속 상태가 비효율적으로 구성 또는 유지됨을 나타낼 수 있다. 평균 업데이트 크기 이외에, 피크 크기를 보고하고 및/또는 업데이트 크기의 히스토그램을 발생하는 것도 가능하다.
평균 행 크기(average row size):
행 크기는 데이터베이스 내의 단일 세션 동안의 세션-지속 데이터의 양이며, 행에서 행으로 크게 변경될 수 있다. 행 크기는 세션 서버에서 세션 지속 데이터 객체(411-414)의 크기에 밀접하게 관련되어 있지만, 둘은 데이터 객체 내의 데이터가 다르게 구성될 수 있어 동일하지 않다. 특히, 행 크기는 각각의 세션에 의해 소비되는 세션-지속 메모리의 양의 일반적인 지시이다. 행 크기는 한 순간에 측정될 수 있고, 또는 다수의 판독에 걸쳐 평균화될 수 있다. 행 크기는 개별 세션 서버에 대해 보고될 수 있고, 또는 모든 세션 서버에 대해 합한 것일 수 있다. 평균 행 크기 이외에, 피크 크기를 보고하고 및/또는 행 크기의 히스토그램을 발생하는 것도 가능하다.
전체 데이터베이스 크기, 즉 행들의 개수:
행들의 개수로서 측정될 수 있는 세션-지속 데이터의 전체량은 평균 행 크기로 주어진다. 전체 크기는 세션 서버 내의 메모리가 세션-지속 데이터에 의해 소비되는 정도를 나타낸다. 행들의 개수는 각각의 세션 서버에 대해 보고될 수 있고, 또는 합한 것일 수 있다. 행들의 개수는 한 순간에 또는 다수의 순간에 보고될 수 있다.
특별한 열의 평균 열 크기:
열 크기는 특별한 필드에서의 평균 데이터량이며, 필드에서 필드로 그리고 행에서 행으로 크게 변경될 수 있다. 열 크기는, 메모리 사용 패턴을 분석하고 부적절한 양의 메모리를 사용하는 특별한 열(필드)을 식별할 때 유용하다. 열 크기는 한 순간에 측정될 수 있고, 또는 다수의 레코딩에 걸쳐 평균화될 수 있다. 열 크기는 개별 세션 서버에 대해 보고될 수 있고, 또는 모든 세션 서버에 대해 합한 것일 수 있다. 평균 열 크기(즉, 모든 행에 대한 평균 필드 크기) 이외에, 피크 크기를 보고하고 및/또는 특별한 열에 대한 필드 크기의 히스토그램을 발생하는 것도 가능하다.
사용되는 데이터 타입:
열 크기처럼, 데이터 타입은 세션-지속 데이터로서 저장된 데이터의 타입을 이해하는데 도움이 되고, 데이터를 표현하고 처리하는 보다 효율적인 방식을 식별하는데 도움이 될 수 있다.
평균 세션 수명:
이 데이터는 클라이언트들이 웹 서버와 상호 작용하는 방법을 이해함에 있어서 다양한 이유, 및 이 데이터가 성능 문제에 미치는 영향 때문에 유용할 수 있지만, 성능 문제를 직접 나타내지는 않는다. 수명은 하나 또는 다수의 히스토리 간격으로 측정될 수 있고, 또는 현재 스냅샷일 수 있다. 수명은 개별 서버에 대해 별도로 측정될 수 있지만, 일반적으로 모든 서버들이 유사한 거동을 보일 것으로 기대될 것이다.
데이터베이스 업데이트에 대한 평균 응답 시간:
이 평균 응답 시간은 하나 이상의 간격으로 측정될 수 있다. 일반적으로, 평균 응답 시간은 리던던시 시스템(206) 상의 부하의 척도이다. 응답 시간이 길면, 리던던시 시스템은 과부하 상태이다.
데이터베이스 로그(database log)에의 기록 횟수:
이 횟수는 또한 리던던시 시스템의 성능과 관련되어 있으며, 업데이트 동작 횟수와 비교할 때, 로그 기록이 너무 오래 축적되고 있는지의 여부, 즉 가능한 노출을 나타낼 수 있다.
리던던시 시스템에서의 디스크에 대한 평균 대기 시간:
이 대기 시간은 또한 리던던시 시스템의 성능의 척도가 되며, 기억 장치 시스템이 과부하 상태임을 나타낼 수 있다.
수집될 수 있는 데이터의 특정 예들이 위에 주어졌지만, 다른 및/또는 추가적인 데이터가 대안으로 수집될 수 있음은 이해될 것이다
어떤 기술 또는 기술들이 위에서 설명한 바와 같이 데이터를 마이닝(mining)하기 위해 사용되더라도, 데이터는 일단 수집되면 사용자에게 제공된다(단계 715). 데이터를 사용자에게 제공한다는 것은 대화형 디스플레이 스크린상에 데이터를 그래픽 포맷을 포함한 각종 포맷으로 디스플레이한다는 것을 의미할 수 있다. 데이터를 제공한다는 것은 또한 데이터를 프린터 또는 다른 출력 장치상에서 출력하고, 데이터를 네트워크를 통해 하나 이상의 추가적인 사용자에게 전송하고, 데이터를 전자 매체에 저장하는 것 등을 의미할 수도 있다.
대안으로, 선택적인 실시예에서, 세션 분석기는 웹 서버에 관한 튜닝 추천을 하기 위해 추정기(inferencer; 518)를 호출한다(단계 716). 추정기는 데이터를 분석하고, 추천을 사용자에게 제공한다(단계 717). 바람직하게, 데이터베이스 관리 시스템(511)에, 보다 중요하게는, 각각의 세션 서버의 애플리케이션 서버(404)에 각종 튜닝가능 파라미터들이 존재한다. 예컨대, 데이터베이스 관리 시스템의 튜닝가능 파라미터는 인덱스 사양, 레코드 삭제와 같은 기능을 수행하기 위한 트리거, 디스크 주소지정 및 파일 크기와 같은 파일 시스템 파라미터 등을 포함할 수 있다. 애플리케이션 서버에서의 튜닝가능 파라미터는 데이터베이스 접속 풀(pool), 미들웨어 메모리 크기, 프로세스 메모리 할당, 부하 균형화 등을 포함할 수 있다. 이 들 튜닝가능 파라미터의 설정은 성능에 큰 영향을 줄 수 있다.
바람직한 실시예로서 여기서 설명된 기술의 이점들 중 하나는, 세션 서버 각각에서 성능 감시 소프트웨어를 직접 실행하지 않고도 세션 작업부하에 관한 의미 있는 데이터를 얻을 수 있다는 점이다. 성능 감시 소프트웨어는 감시되는 시스템에 상당한 오버헤드를 부과하며, 이는 세션 서버의 경우에 바람직하지 않다. 세션 서버는 리던던트 세션 상태 데이터를, 세션 리던던시 및 클라이언트에 대한 웹 서버의 끊김 없는 일관된 이용가능성을 유지하는 부분인 리던던시 시스템에 미리 전송한다. 그러므로, 추가적인 오버헤드 부담이 세션 서버 자체에 부과되지 않는다. 리던던시 시스템에 추가적인 오버헤드가 존재하나, 이 오버헤드 비교적 작다. 데이터베이스(503)를 구축 및 유지하는 비용은 이미 리던던시를 위해 요구된 것이고, 유일한 추가적인 오버헤드 비용은 데이터베이스에 대한 추가적인 쿼리 및 쿼리 결과 분석 비용이다.
일반적으로, 본 발명의 실시예들을 구현하기 위해 실행되는 루틴은, 운영 체제 또는 특정 애플리케이션의 일부로 구현되든, 프로그램으로 구현되든, 객체로 구현되든, 모듈로 구현되든, 아니면 명령 시퀀스로 구현되든, 여기서는 '프로그램' 또는 '컴퓨터 프로그램'으로 칭한다. 프로그램은, 전형적으로, 본 발명에 따른 컴퓨터 시스템에서 장치 또는 시스템의 하나 이상의 프로세서들에 의해 판독 및 실행될 때, 이들 장치 또는 시스템이 본 발명의 각종 양태를 구현하는 단계들을 실행하고 요소들을 발생하는데 필요한 단계들을 수행하게 하는 명령을 포함한다. 또한, 본 발명은 충분히 기능을 하는 컴퓨터 시스템의 콘텍스트에서 설명되었지만, 본 발 명의 각종 실시예들은 다양한 형태의 프로그램 제품으로서 보급될 수 있고, 본 발명은 실제 보급하는데 사용되는 특별한 타입의 신호 보유 매체에 관계없이 동일하게 적용된다. 신호 보유 매체의 예로는, 휘발성 및 비휘발성 메모리 장치, 플로피 디스크, 하드디스크 드라이브, CD-ROM, DVD, 자기 테이프 등을 들 수 있으나 이에 한정되는 것은 아니다. 또한, 본 발명은, 무선 네트워크를 포함해서, 데이터가 전송 네트워크를 통해 한 형태의 신호 보유 매체로부터 다른 형태의 신호 보유 매체로 교환되는 지의 여부에 관계없이 임의 형태의 신호 보유 매체에 적용된다. 신호 보유 매체의 예들이 도 3에 시스템 메모리(302)로서 그리고 데이터 기억 장치(325-327)로서 예시되어 있다.
본 발명의 특정 실시예가 어떤 대안과 함께 공개되었지만, 형태 및 세부 구성의 추가적인 변화가 다음의 청구의 범위 내에서 행해질 수 있음을 당업자는 알 것이다.
웹 서버의 HTTP 세션 내에서 클라이언트-서버 상호 작용을 특성화하고 이해하는 향상된 기술이 제공된다.

Claims (10)

  1. 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법으로서,
    컴퓨터에 의해 실행되는,
    제1 컴퓨터 시스템에서 복수의 HTTP 세션을 처리하고, 상기 복수의 HTTP 세션 동안 상기 제1 컴퓨터 시스템에서 세션-지속 상태 데이터를 유지하는 단계와,
    리던던트 세션-지속 상태 데이터를 상기 제1 컴퓨터 시스템으로부터 제2 컴퓨터 시스템으로 전송하는 단계와,
    상기 리던던트 세션-지속 상태 데이터를 상기 제2 컴퓨터 시스템에 저장하되, 상기 제2 컴퓨터 시스템은 상기 제2 컴퓨터 시스템에 저장된 상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 복수의 HTTP 세션의 세션 상태의 복구를 지원하는 단계와,
    상기 제2 컴퓨터 시스템에 저장된 상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 HTTP 세션 작업부하를 특성화하는 단계
    를 포함하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  2. 제1 항에 있어서,
    상기 리던던트 세션-지속 상태 데이터를 상기 제2 컴퓨터 시스템에 저장하는 상기 단계는 상기 리던던트 세션-지속 상태 데이터를 상기 제2 컴퓨터 시스템의 구성된 데이터베이스에 저장하는 것을 포함하고, 상기 구성된 데이터베이스는 복수의 엔트리를 가진 적어도 하나의 테이블을 갖고 있고, 각각의 엔트리는 상기 복수의 HTTP 세션의 각각의 HTTP 세션에 대응하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  3. 제2 항에 있어서,
    상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 HTTP 세션 작업부하를 특성화하는 상기 단계는 상기 구성된 데이터베이스에 저장된 데이터를 검색하기 위해 상기 구성된 데이터베이스에 대해 하나 이상의 쿼리를 실행하는 것을 포함하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  4. 제2 항에 있어서,
    상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 HTTP 세션 작업부하를 특성화하는 상기 단계는 상기 구성된 데이터베이스에 대한 변화를 감시하는 것, 및 상기 HTTP 세션 작업부하를 특성화하기 위해 상기 구성된 데이터베이스에 대한 변화에 관한 히스토리 데이터를 이용하는 것을 포함하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  5. 제2 항에 있어서,
    상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 HTTP 세션 작업부하를 특성화하는 상기 단계는 상기 제1 컴퓨터 시스템의 튜닝 파라미터를 추정하기 위해 상기 구성된 데이터베이스로부터의 데이터를 이용하는 것을 포함하고, 상기 추정은 컴퓨터에 의해 실행되는 프로세스에 의해 자동으로 행해지는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  6. 제1 항에 있어서,
    상기 제1 컴퓨터 시스템은 HTTP 세션을 처리하기 위한 세션 서버 애플리케이션을 지원하는 애플리케이션 서버를 포함하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  7. 제1 항에 있어서,
    상기 제2 컴퓨터 시스템은 복수의 제1 컴퓨터 시스템으로부터 수신된 리던던트 세션-지속 상태 데이터를 저장하고, 각각의 제1 컴퓨터 시스템은 개별적인 복수의 HTTP 세션을 처리하고 상기 개별적인 복수의 HTTP 세션 동안 세션-지속 상태 데이터를 유지하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  8. 제1 항에 있어서,
    상기 제1 컴퓨터 시스템 및 제2 컴퓨터 시스템은 근거리 통신망(LAN)에 연결되고, 리던던트 세션-지속 상태 데이터를 상기 제1 컴퓨터 시스템으로부터 제2 컴퓨터 시스템으로 전송하는 상기 단계는 상기 근거리 통신망을 통해 상기 리던던트 세션-지속 상태 데이터를 전송하는, 웹 서버에서의 HTTP 세션 작업부하를 특성화하는 방법.
  9. 웹 서버의 HTTP 세션 작업부하를 특성화하는 컴퓨터 판독가능 저장매체로서,
    상기 컴퓨터 판독가능 저장매체는 복수의 컴퓨터-실행가능 명령들을 포함하고,
    상기 명령들은,
    제1 컴퓨터 시스템에 저장된 리던던트 세션-지속 상태 데이터를 액세스하되, 상기 리던던트 세션-지속 데이터는 제2 컴퓨터 시스템으로부터 상기 제1 컴퓨터 시스템에서 수신되고, 상기 리던던트 세션-지속 상태 데이터는 상기 제2 컴퓨터 시스템에 의해 복수의 HTTP 세션을 처리하기 위해 상기 제2 컴퓨터 시스템에 의해 유지되는 세션-지속 상태를 나타내고, 상기 리던던트 세션-지속 상태 데이터는 상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 복수의 HTTP 세션의 세션 상태의 복구를 지원하는 방식으로 상기 제1 컴퓨터 시스템에 저장되는 단계; 및
    상기 액세스하는 단계에 의해 액세스되는 상기 리던던트 세션-지속 상태 데이터를 이용하여 상기 HTTP 세션 작업부하를 특성화하는 단계를
    적어도 하나의 컴퓨터 시스템이 수행하게 하는, 컴퓨터 판독가능 저장매체.
  10. 웹 서버의 HTTP 세션 작업부하를 특성화하는 장치에 있어서,
    적어도 하나의 프로세서 및 적어도 하나의 세션 서버 컴퓨터 시스템으로부터 수신된 리던던트 세션-지속 데이터를 저장하기 위한 데이터 저장장치를 갖는 세션 리던던시 컴퓨터 시스템과,
    컴퓨터 시스템상에서 실행될 수 있는 복수의 명령들로서 구현되는 HTTP 세션 분석기를 포함하며,
    상기 적어도 하나의 세션 서버 컴퓨터 시스템은 복수의 HTTP 세션을 처리하고 상기 복수의 HTTP 세션 동안 세션-지속 상태 데이터를 유지하며, 상기 세션 리던던시 컴퓨터 시스템은 상기 데이터 저장장치에 저장된 상기 리던던트 세션-지속 데이터를 이용하여 상기 복수의 HTTP 세션의 세션 상태의 복구를 지원하며, 상기 세션 분석기는 상기 세션 리던던시 컴퓨터 시스템의 상기 데이터 저장장치에 저장된 상기 리던던트 세션-지속 데이터를 이용하여 상기 적어도 하나의 세션 서버 컴퓨터 시스템상의 상기 복수의 HTTP 세션의 작업부하를 특성화하는, 웹 서버의 HTTP 세션 작업부하를 특성화하는 장치.
KR1020087014494A 2005-12-22 2006-12-13 Http 세션 작업부하를 특성화하기 위한 데이터를수집하는 방법 및 장치 KR101221205B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/316,285 2005-12-22
US11/316,285 US20070150600A1 (en) 2005-12-22 2005-12-22 Method and apparatus for collecting data for characterizing HTTP session workloads
PCT/EP2006/069678 WO2007071607A1 (en) 2005-12-22 2006-12-13 Method and apparatus for collecting data for characterizing http session workloads

Publications (2)

Publication Number Publication Date
KR20080085840A KR20080085840A (ko) 2008-09-24
KR101221205B1 true KR101221205B1 (ko) 2013-01-10

Family

ID=37831802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087014494A KR101221205B1 (ko) 2005-12-22 2006-12-13 Http 세션 작업부하를 특성화하기 위한 데이터를수집하는 방법 및 장치

Country Status (8)

Country Link
US (1) US20070150600A1 (ko)
EP (1) EP1974529B1 (ko)
JP (1) JP5015951B2 (ko)
KR (1) KR101221205B1 (ko)
CN (1) CN101346972B (ko)
BR (1) BRPI0620640B1 (ko)
CA (1) CA2634360A1 (ko)
WO (1) WO2007071607A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070180110A1 (en) * 2006-01-27 2007-08-02 Ge Medical Systems Information Technologies, Inc. System and method for retaining information in a data management system
US8024439B2 (en) * 2006-03-17 2011-09-20 Microsoft Corporation Server session management application program interface and schema
US8326996B2 (en) * 2006-06-02 2012-12-04 Oracle International Corporation Method and apparatus for establishing multiple sessions between a database and a middle-tier client
JP4405503B2 (ja) 2006-12-28 2010-01-27 キヤノンItソリューションズ株式会社 情報処理装置および情報処理装置の制御方法およびプログラムおよび記録媒体
JP4653147B2 (ja) * 2007-08-06 2011-03-16 日本電信電話株式会社 情報機能提供システム、情報機能提供装置、情報機能提供方法および情報機能提供プログラム
US8607197B2 (en) * 2007-08-28 2013-12-10 International Business Machines Corporation Displaying HTTP session entry and exit points
US8055649B2 (en) 2008-03-06 2011-11-08 Microsoft Corporation Scaled management system
US20090240802A1 (en) * 2008-03-18 2009-09-24 Hewlett-Packard Development Company L.P. Method and apparatus for self tuning network stack
CN101621532B (zh) * 2008-06-30 2012-09-05 中兴通讯股份有限公司 一种使用线程池实现超文本传输协议应用的方法
US20130086414A1 (en) 2010-07-13 2013-04-04 Telefonaktiebolaget L M Ericsson (Publ) Systems and methods recovering from the failure of a server load balancer
JP5538560B2 (ja) * 2010-11-01 2014-07-02 かもめエンジニアリング株式会社 アクセス制御方法、アクセス制御装置およびアクセス制御プログラム
US9069617B2 (en) 2011-09-27 2015-06-30 Oracle International Corporation System and method for intelligent GUI navigation and property sheets in a traffic director environment
US9935880B2 (en) 2012-01-12 2018-04-03 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for scalable and resilient load balancing
US9569356B1 (en) * 2012-06-15 2017-02-14 Emc Corporation Methods for updating reference count and shared objects in a concurrent system
EP2750355A1 (en) * 2012-12-28 2014-07-02 Koninklijke KPN N.V. Reducing a number of server-client sessions
US9948726B2 (en) * 2013-07-01 2018-04-17 Avaya Inc. Reconstruction of states on controller failover
JP6428012B2 (ja) * 2014-07-16 2018-11-28 富士通株式会社 分散処理プログラム、分散処理管理装置及び分散処理方法
US10284621B2 (en) 2015-11-09 2019-05-07 International Business Machines Corporation Session management
KR101676653B1 (ko) * 2016-04-20 2016-11-17 주식회사 티맥스 소프트 Http 세션 정보 동적 유지 방법, 이를 사용한 웹 애플리케이션 서버 및 웹 서버
US10564854B2 (en) * 2017-04-11 2020-02-18 Microsoft Technology Licensing, Llc Tracking internal latencies for load balancing of file server
US20200264970A1 (en) * 2019-02-19 2020-08-20 Nvidia Corporation Memory management system
US11469996B2 (en) 2020-09-25 2022-10-11 Adobe Inc. Systems for session-based routing
CN114945048A (zh) * 2022-05-20 2022-08-26 国网江苏省电力有限公司 网络冗余数据传输方法、装置、存储介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020042823A1 (en) 1998-05-29 2002-04-11 Debettencourt Jason Web service
US20020073211A1 (en) * 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
US20020198985A1 (en) * 2001-05-09 2002-12-26 Noam Fraenkel Post-deployment monitoring and analysis of server performance
EP1494421A1 (en) * 2003-06-30 2005-01-05 Microsoft Corporation Network load balancing with host status information

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0688702B2 (ja) * 1990-04-19 1994-11-09 東海興業株式会社 紙送り装置
US6112239A (en) * 1997-06-18 2000-08-29 Intervu, Inc System and method for server-side optimization of data delivery on a distributed computer network
JPH11328113A (ja) * 1998-05-14 1999-11-30 Nec Corp 情報検索装置
JP4149599B2 (ja) * 1999-02-03 2008-09-10 株式会社東芝 セッション管理装置およびセッション管理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001167071A (ja) * 1999-12-10 2001-06-22 Toshiba Corp サーバセッション管理装置
US7383329B2 (en) * 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7792948B2 (en) * 2001-03-30 2010-09-07 Bmc Software, Inc. Method and system for collecting, aggregating and viewing performance data on a site-wide basis
JP4306152B2 (ja) * 2001-06-26 2009-07-29 株式会社日立製作所 クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
AU2002329602B2 (en) * 2001-07-16 2008-05-22 Oracle International Corporation Method and apparatus for session replication and failover
CN1283115C (zh) * 2003-06-03 2006-11-01 华为技术有限公司 提高多媒体消息系统处理多媒体消息性能的方法及系统
JP4185012B2 (ja) * 2004-03-30 2008-11-19 東芝ソリューション株式会社 サーバシステム、第1のアプリケーションサーバ、第2のアプリケーションサーバ、セッションデータ取得方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020042823A1 (en) 1998-05-29 2002-04-11 Debettencourt Jason Web service
US20020073211A1 (en) * 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
US20020198985A1 (en) * 2001-05-09 2002-12-26 Noam Fraenkel Post-deployment monitoring and analysis of server performance
EP1494421A1 (en) * 2003-06-30 2005-01-05 Microsoft Corporation Network load balancing with host status information

Also Published As

Publication number Publication date
JP2009521741A (ja) 2009-06-04
US20070150600A1 (en) 2007-06-28
WO2007071607A1 (en) 2007-06-28
CN101346972B (zh) 2013-02-06
EP1974529A1 (en) 2008-10-01
CA2634360A1 (en) 2007-06-28
CN101346972A (zh) 2009-01-14
BRPI0620640B1 (pt) 2019-11-12
JP5015951B2 (ja) 2012-09-05
EP1974529B1 (en) 2012-09-19
BRPI0620640A2 (pt) 2011-04-05
KR20080085840A (ko) 2008-09-24

Similar Documents

Publication Publication Date Title
KR101221205B1 (ko) Http 세션 작업부하를 특성화하기 위한 데이터를수집하는 방법 및 장치
US7376953B2 (en) Apparatus and method for routing a transaction to a server
US11151137B2 (en) Multi-partition operation in combination operations
US11775343B1 (en) Duty cycle estimation for job assignment
US7506047B2 (en) Synthetic transaction monitor with replay capability
US8839209B2 (en) Software performance profiling in a multi-tenant environment
US11615082B1 (en) Using a data store and message queue to ingest data for a data intake and query system
US8219693B1 (en) Providing enhanced access to stored data
US20150237119A1 (en) Naming of distributed business transactions
US20070266029A1 (en) Recovery segment identification in a computing infrastructure
US8589537B2 (en) Methods and computer program products for aggregating network application performance metrics by process pool
JP2008502044A (ja) 多階層コンピューティング環境におけるパフォーマンス管理システム及びパフォーマンス管理方法
US8438276B1 (en) Method of monitoring network and application performance by analyzing web clients and web servers
JP2005538459A (ja) 分散システム内の根本原因識別および問題判定のための方法および装置
US11609913B1 (en) Reassigning data groups from backup to searching for a processing node
US11892976B2 (en) Enhanced search performance using data model summaries stored in a remote data store
US20080046890A1 (en) Method and apparatus for balancing workloads in a cluster
CN108427619A (zh) 日志管理方法、装置、计算设备及存储介质
US8312138B2 (en) Methods and computer program products for identifying and monitoring related business application processes
US20210224102A1 (en) Characterizing operation of software applications having large number of components
JP6213038B2 (ja) 情報処理システム、情報処理システムの制御方法および制御装置の制御プログラム
US11841827B2 (en) Facilitating generation of data model summaries
US20220398128A1 (en) Distributed task assignment in a cluster computing system
US11675771B1 (en) Identity resolution
Schimunek et al. AS/400 HTTP Server Performance and Capacity Planning

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20110225

Effective date: 20121120

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee