KR20150023335A - 트랜잭셔널 미들웨어 기계 환경에서 라우팅 기반 버전을 지원하는 시스템 및 방법 - Google Patents
트랜잭셔널 미들웨어 기계 환경에서 라우팅 기반 버전을 지원하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR20150023335A KR20150023335A KR20147033885A KR20147033885A KR20150023335A KR 20150023335 A KR20150023335 A KR 20150023335A KR 20147033885 A KR20147033885 A KR 20147033885A KR 20147033885 A KR20147033885 A KR 20147033885A KR 20150023335 A KR20150023335 A KR 20150023335A
- Authority
- KR
- South Korea
- Prior art keywords
- service
- version
- transactional
- request
- requested
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/20—Network management software packages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
시스템 및 방법이 트랜잭셔널 미들웨어 기계 환경에서 서비스 관리를 지원할 수 있다. 트랜잭셔널 서비스 제공자는 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치할 수 있고, 그리고 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정할 수 있다. 이후, 트랜잭셔널 서비스 제공자는 상기 서비스 요청자로 하여금 상기 서비스 엔트리에 액세스하도록 할 수 있고, 상기 서비스 엔트리는 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭한다.
Description
저작권 공고
본 특허 문서의 개시물 중 일부가 저작권 보호의 대상이 되는 자료를 포함한다. 상기 저작권 소유자는, 특허 및 상표청 파일 또는 기록들에서 나타나는 것으로, 특허 문서 또는 특허 개시물 중 임의의 것에 의한 팩시밀리 복제에 대해 이의가 없지만, 그외에는 어떤 경우에라도 모든 저작권 권리들을 보유한다.
본 발명은 일반적으로 컴퓨터 시스템들 및 소프트웨어에 관한 것이고, 그리고 특히 트랜잭셔널 미들웨어 기계 환경을 지원하는 것에 관한 것이다.
기업 IT 아키텍처를 이용하는 여러 서비스들을 제공하는 비지니스 시스템들은 복잡하고 많은 스테이지들을 수반할 수 있다. 이러한 비지니스 시스템들은 여러 시나리오들, 예를 들어, 최종 사용자들을 위한 서비스 계약을 변경하는 것, 새로운 소비자들을 위한 새로운 서비스 계약들을 제공하는 것, 오래된 서비스들을 논-스톱 모드로 새로운 서비스들로 업그레이드하는 것, 및 일부 기존의 소비자들을 위해 오래된 서비스들을 유지하는 것을 핸들링할 필요가 있다. 더욱이, IT 서비스 제공자들은 동시에 서비스들의 여러 버전들을 제공하기 원하고, 그리고 특정 소비자들에게 특정 변형들을 제공할 수 있다. 추가적으로, 일부 서비스들의 요청자들은 일정한(uniform) 방식으로 서비스들의 서로 다른 버전들에 액세스하거나 또는 심지어 런타임 시 서비스들의 서로 다른 버전들 사이를 스위칭하는 것을 원할 수 있는 반면에, 다른 서비스들의 요청자들은 서로 다른 서비스 버전들을 명시적으로 다루기를 원하지 않을 수 있다. 이것이 본 발명의 실시예들이 다루도록 의도된 일반적인 영역이다.
트랜잭셔널 미들웨어 기계 환경에서 서비스 관리를 지원하는 시스템들 및 방법들이 여기에서 개시된다. 트랜잭셔널 서비스 제공자는 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치할 수 있고 그리고 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정할 수 있다. 이후, 트랜잭셔널 서비스 제공자는 상기 서비스 요청자가 상기 서비스 엔트리에 액세스하도록 할 수 있고, 상기 서비스 엔트리는 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭한다.
본 발명의 예시적인 실시예는, 트랜잭셔널 서비스 제공자를 포함하는 네트워크 환경에서 네트워크 관리를 지원하는 시스템을 제공한다. 상기 트랜잭셔널 서비스 제공자는 디스패칭 유닛, 매칭 유닛 및 액세스 유닛을 포함할 수 있다. 상기 디스패칭 유닛은 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스페치하기 위해 동작할 수 있다. 상기 매칭 유닛은 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정하도록 동작할 수 있다. 다른 실시예에서, 상기 매칭 유닛은 서비스 엔트리의 서비스 이름을 상기 서비스 요청자로부터 수신된 상기 서비스 요청 내의 요청된 서비스 이름과 매칭하도록 동작할 수 있다. 상기 액세스 유닛은, 상기 서비스 요청자로 하여금 상기 서비스 엔트리에 액세스하도록 동작할 수 있고, 상기 서비스 엔트리는 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 리턴 유닛을 더 포함할 수 있고, 상기 리턴 유닛은, 매칭하는 이름을 갖는 모든 서비스 엔트리들이 상기 요청된 서비스 버전과 매칭할 수 없을 때, 에러 메시지를 상기 서비스 요청자에 리턴하도록 동작한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 파티셔너를 더 포함할 수 있고, 상기 파티셔너는 하나 이상의 애플리케이션들을 하나 이상의 애플리케이션 존들로 분할(partition)하도록 동작한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 비교 유닛을 더 포함할 수 있고, 상기 비교 유닛은 요청된 서비스 버전 번호와 상기 버전 범위의 경계값들 모두 간에 수치 비교를 수행하도록 동작한다. 각각의 어플리케이션 존은 적어도 하나의 서비스의 특별한 요청 버전과 관련된다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 버전 결정 유닛을 더 포함할 수 있고, 상기 버전 결정 유닛은 상기 서비스 요청과 관련된 상기 요청된 서비스 버전을 결정하도록 동작한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 구성 제공 유닛을 더 포함할 수 있고, 상기 구성 제공 유닛은 상기 트랜잭셔널 서비스 애플리케이션 구성을 제공하기 위해 적어도 하나의 구성 파일을 사용하도록 동작한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자는 구성 변경 유닛을 더 포함할 수 있고, 상기 구성 변경 유닛은 런타임 시 상기 트랜잭셔널 서비스 애플리케이션 구성을 변경시키기 위해 관리 인터페이스를 사용하도록 동작한다.
도 1은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 애플리케이션 서비스 버저닝을 지원하는 예를 도시한다.
도 2는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 암시적 버저닝을 지원하는 예를 도시한다.
도 3은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 암시적 버저닝을 지원하는 예시적인 흐름도를 나타낸다.
도 4는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 버전 콘텍스트를 지원하는 예를 도시한다.
도 5는 본 발명의 일 실시예에 따른, 멀티-프로세스(MP) 환경에서 디플로이된 턱시도 애플리케이션을 지원하는 예를 도시한다.
도 6은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 버전 기반 라우팅(VBR)을 지원하는 예를 도시한다.
도 7은 본 발명의 일 실시예에 따른, 분포된 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 시퀀스 차트를 도시한다.
도 8은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 흐름도를 나타낸다.
도 9는 일부 실시예들에 따른 트랜잭셔널 서비스 제공자의 기능적 블록도를 나타낸다.
도 10은 본 발명의 일 실시예에 따른, 트랜잭셔널 서비스 제공자의 예시적인 블록도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 암시적 버저닝을 지원하는 예를 도시한다.
도 3은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 암시적 버저닝을 지원하는 예시적인 흐름도를 나타낸다.
도 4는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 버전 콘텍스트를 지원하는 예를 도시한다.
도 5는 본 발명의 일 실시예에 따른, 멀티-프로세스(MP) 환경에서 디플로이된 턱시도 애플리케이션을 지원하는 예를 도시한다.
도 6은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서 버전 기반 라우팅(VBR)을 지원하는 예를 도시한다.
도 7은 본 발명의 일 실시예에 따른, 분포된 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 시퀀스 차트를 도시한다.
도 8은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 흐름도를 나타낸다.
도 9는 일부 실시예들에 따른 트랜잭셔널 서비스 제공자의 기능적 블록도를 나타낸다.
도 10은 본 발명의 일 실시예에 따른, 트랜잭셔널 서비스 제공자의 예시적인 블록도를 나타낸다.
본 발명은 유사한 참조 번호들이 유사한 요소들을 나타내는 첨부된 도면들의 도시에서, 예로서 하지만 제한되지 않게 설명된다. 본 명세서에서의 "하나" 또는 "한개" 또는 "일부" 실시예(들)에 대한 참조들은 반드시 동일한 실시예가 아니고 그리고 그와 같은 참조번호들은 적어도 하나를 의미함을 유의해야한다.
미들웨어 기계 또는 유사한 플랫폼을 제공하는 시스템 및 방법이 여기에서 개시된다. 본 발명의 일 실시예에 따라서, 상기 시스템은, 빠르게 권한 설정(provisioning)될 수 있고 그리고 요구시 스케일링할 수 있는, 대량으로 병렬인 인메모리 그리드를 포함하는 완전한 자바 EE 애플리케이션 서버 컴플렉스를 제공하도록, 웹로직 슈트와 같은 애플리케이션 서버 또는 미들웨어 환경과 함께, 고성능 하드웨어, 예를 들어, 64-비트 프로세서 기술, 고성능의 큰 메모리 및 리던던트의 인피니밴드 및 이더넷 네트워킹의 조합을 포함한다. 일 실시예에 따라서, 상기 시스템은 애플리케이션 서버 그리드, 스토리지 영역 네트워크 및 인피니밴드(IB) 네트워크를 제공하는, 전체, 절반 또는 1/4 랙 또는 다른 구성으로 디플로이될 수 있다. 상기 미들웨어 기계 소프트웨어는 애플리케이션 서버, 미들웨어 및 다른 기능, 예를 들어, 웹로직 서버, 제이로킷 또는 핫스팟 JVM, 오라클 리눅스 또는 솔라리스 및 오라클 VM을 제공할 수 있다. 일 실시예에 따라서, 상기 시스템은 IB 네트워크를 통해 서로 통신하는, 복수의 컴퓨트 노드들, IB 스위치 게이트 및 스토리지 노드들 또는 유닛들을 포함할 수 있다. 랙 구성으로 구현될 때, 상기 랙의 미사용된 부분들은 비어있는 채로 남겨질 수 있거나 필러들에 의해 점유될 수 있다.
본 발명의 일 실시예에 따라서, "선 오라클 엑사로직" 또는 "엑사로직"으로 여기에서 언급되는 것처럼, 본 시스템은 오라클 미들웨어 SW 슈트 또는 웹로직과 같은 미들웨어 또는 애플리케이션 서버 소프트웨어를 호스팅하는 디플로이가 용이한(easy-to-deploy) 솔루션이다. 여기에서 서술된 것처럼, 일 실시예에 따라, 상기 시스템은, 하나 이상의 서버들, 스토리지 유닛들, 스토리지 네트워킹을 위한 IB 패브릭, 및 미들웨어 애플리케이션을 호스팅하기 위해 요구되는 모든 다른 컴포넌트들을 포함하는 "박스 내 그리드"이다. 중요한 성능은, 예를 들어, 리얼 애플리케이션 클러스터들 및 엑사로직 오픈 스토리지를 사용하여 대량의 병렬 그리드 아키텍쳐를 활용함으로써 모든 타입들의 미들웨어 애플리케이션들에 대해 전달될 수 있다. 상기 시스템은 선형 I/O 확장성을 갖는 개선된 성능을 전달하고, 사용하고 관리하기 단순하며, 미션에 중대한 이용가능성 및 신뢰성을 전달한다.
본 발명의 실시예에 따라서, 턱시도는 C, C++ 및 코볼로 구성된 트랜잭션 시스템, 또는 트랜잭션 지향 미들웨어 또는 기업 애플리케이션 서버이다. 비지니스 애플리케이션이 분포된, 고성능의 구성, 실행 및 관리를 가능하게 하고 그리고 다수의 멀티-티어 애플리케이션 개발 툴들에 의해 트랜잭셔널 미들웨어로서 사용되어진 소프트웨어 모듈의 세트이다. 추가적으로, 턱시도 시스템과 같은 트랜잭셔널 미들웨어 시스템은, 엑사로직 미들웨어 기계와 같은 다수의 프로세서들을 갖는 고속의 기계 및 인피니밴드(IB) 네트워크와 같은 고성능 네트워크 접속을 활용할 수 있다.
하기의 본 발명의 서술은 트랜잭션 처리 시스템을 위한 예로서 턱시도 시스템을 사용한다. 트랜잭션 처리 시스템의 다른 타입들이 제한 없이 사용될 있음이 통상의 기술자에게 명확할 것이다.
애플리케이션 서비스 버저닝(
Application
Service
V
ersioning
)
본 발명의 실시예에 따라, 트랜잭션 미들웨어 기계 환경은 클라이언트 및 서버 개발 노력을 감소시키기 위해 서비스 버저닝을 지원할 수 있다. 트랜잭셔널 서비스 제공자, 예를 들어, 턱시도(Tuxedo)는 서비스 이름 및 서비스가 지원하는 버전 모두에 따라 서로 다른 서비스들을 디스패치할 수 있다. 또한, 서비스 요청자, 예를 들어, 클라이언트 또는 트랜잭셔널 서비스를 요청하는 서버/서비스는, 단지 대응하는 버전을 지원하는 서비스 엔트리에 액세스할 수 있다.
도 1은 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서의 애플리케이션 서비스 버저닝(application service versioning)을 지원하는 예를 도시한다. 도 1에서 도시된 것처럼, 트랜잭셔널 미들웨어 기계 환경(100)에서 트랜잭셔널 서비스 제공자(110)는 트랜잭셔널 서비스들 A-B(111-112)과 같은 여러 서비스들을 제공할 수 있다. 트랜잭셔널 서비스 A(111)는 다수의 서비스 엔트리들, 예를 들어, 버전들 I-III(121-123)를 포함할 수 있는 반면, 트랜잭셔널 서비스 B(112)는 또한 다수의 서비스 엔트리들, 예를 들어, 버전들 I-II(131-132)을 포함할 수 있다.
더욱이, 트랜잭셔널 미들웨어 기계 환경(100)에서 서비스 버저닝은, 클라이언트 애플리케이션들에 대한 개발자들(예를 들어, 클라이언트들 A-B(101-102)), 동작 또는 관리 팀, 디플로이먼트 팀(103) 및 서비스들의 개발자들(104)과 같은 서로 다른 사람들을 수반할 수 있다. 이러한 당사자들 각각은 그들 자신의 서로 다른 서비스 버전 요건들을 가질 수 있다.
도 1에 도시된 것처럼, 클라이언트 A(101)는 트랜잭셔널 서비스 A(111)의 버전 I(121)에 액세스할 수 있는 반면, 클라이언트 B(102)는 트랜잭셔널 서비스 A(111)의 버전 II(122) 및 트랜잭셔널 서비스 B(112)의 버전 II(132)에 액세스할 수 있다. 따라서, 클라이언트 애플리케이션들 A-B(101-102)의 개발자들은, 클라이언트 요청들을 동일한 서비스 이름을 갖는 서로 다른 트랜잭셔널 애플리케이션 서비스들 버전으로 분할할 수 있다. 또한, 클라이언트 애플리케이션들 A-B(101-102)의 개발자들은, 클라이언트의입력에 따라 동일한 트랜잭셔널 애플리케이션에 서로 다른 비지니스 로직을 적용하기 위해 현재의 요청 콘텍스트를 스위칭할 수 있다.
추가로, 런타임 시, 디플로이먼트 팀(103)은 논-스톱 모드(non-stop mode)로 트랜잭셔널 애플리케이션 로직을 트랜잭션 서비스 A(111)의 버전 III(123)으로 업그레이드할 수 있으면서도, 버전들 I-II(121-122)로 오래된 서비스 로직을 계속해서 핸들링한다. 또한, 서비스 개발자들(104)은, 동일한 서비스 이름을 갖는 버전 II(132)의 현재의 능동 서비스를 방해하지 않고 런타임 시 서비스 로직을 트랜잭셔널 서비스 B(112)의 버전 I(131)으로 업데이트할 수 있다.
암시적 버저닝(
Implict
Versioning
)
본 발명의 실시예에 따라, 트랜잭션 미들웨어 기계 환경은 암시적 버저닝을 지원할 수 있고, 이러한 암시적 버저닝은 구동된 구성일 수 있고 그리고 사용자가 애플리케이션 버저닝을 지원하는 유연한 방법을 제공할 수 있다.
도 2는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서의 암시적 버저닝(implicit versioning)을 지원하는 예를 도시한다. 도 2에서 도시된 것처럼, 트랜잭셔널 미들웨어 환경 기계 환경(200)에서의 트랜잭셔널 서버(201)는 서로 다른 버전들, 예를 들어, 버전들 I-III(211-213)로 트랜잭셔널 서비스 A(210)를 제공할 수 있다.
본 발명의 일 실시예에 따라, 하나 이상의 구성 파일들(209)은 암시적 버저닝을 지원하기 위해 사용될 수 있다. 예를 들어, 구성 파일(209)은 관리 계층 내의 서로 다른 레벨들 사이의 계층 관계를 정의할 수 있다.
도 2에서 도시된 것처럼, 사용자는 여러 애플리케이션들을 버전 범위들에 기초하여 서로 다른 가상 존들, 예를 들어, 애플리케이션 존들 A-B(203-204)로 분할할 수 있다. 애플리케이션 존들 A-B 각각은 상기 서비스 요청들을 특정 버전 번호로 핸들링하도록 구성될 수 있다. 예를 들어, 애플리케이션 존 A(203)은 상기 서비스 요청들을 요청 버전 A(223)(예를 들어, 버전 I)으로 핸들링할 수 있는 반면, 애플리케이션 존 B(204)는 상기 서비스 요청들을 요청 버전 B(224)(예를 들어, 버전 II)로 핸들링할 수 있다.
추가적으로, 상기 사용자는 런타임 시 상기 클라이언트 버전 및 서비스 버전 범위를 변경할 수 있다. 관리 인터페이스 유닛, 예를 들어, 턱시도에서 MIB 인터페이스/API 인터페이스를 통해 행해질 수 있는 그와 같은 변경은 실행 시간에서 즉시 효과를 발휘할 수 있다.
더욱이, 사용자들은 구성 파일(209)을 통해 애플리케이션 버저닝 특징을 인에이블/디스에이블할 수 있다. 애플리케이션 버저닝이 디스에이블되면, 기존 시스템에 어떤 영향도 주지 않을 수 있다. 애플리케이션 버저닝이 인에이블되면, 상기 시스템은 상기 사용자들이 클라이언트의/서비스의 버전을 설정하고, 그리고 예를 들어, 상기 애플리케이션에서 서로 다른 레벨들 그리고/또는 그룹 레벨에서 상기 서비스 지원 버전 범위를 구성하는 방식을 제공할 수 있다.
예를 들어, 턱시도에서, UBB 구성 파일들 및 DMCONFIG 구성 파일들 모두는 암시 애플리케이션 버저닝을 지원하기 위해 사용될 수 있다. 커스토머(customer)는 상기 UBB 구성 파일의 OPTIONS 선택에서 새로운 애플리케이션 옵션, APPVER를 특정함으로써 애플리케이션 버저닝 특징을 인에이블할 수 있다. 추가적으로, 상기 UBB 구성 파일들 및 상기 DMCONFIG 구성 파일들은, 구성된 턱시도 관리 엔티티에서 상기 버전들 및 허용가능한 버전 범위들을 특정하기 위해 REQUEST_VERSION, VERSION_POLICY 및 VERSION_RANGE와 같은 속성들을 포함할 수 있다.
애플리케이션 버저닝 특징이 인에이블되면, 사용자는 UBB 구성 파일 및 도메인 구성 파일들 내의 애플리케이션 버전 관련 정보를 구성할 수 있다. 반면에, 애플리케이션 버전 특징이 인에이블되지 않으면, 사용자는 UBB 구성 파일 내의 또는 MIB 인터페이스를 통해 애플리케이션 버전 특징과 관련된 구성을 구성할 수 없다. 또한, 상기 커스토머가 UBB 구성 파일 내의 애플리케이션 버저닝 특징을 디스에이블하면, 도메인 구성 내의 애플리케이션 버전 정보는 어떤 영향도 주지 못한다.
도 2에 도시된 것처럼, 클라이언트 애플리케이션들 A-B(206-207)은 트랜잭셔널 서버(201)에서 제공되는 트랜잭션 서비스 A(210)에 대해 요청할 수 있다. 사용자는 구성 파일(209)을 통해 클라이언트 요청 버전 및 서비스 범위를 제어할 수 있다. 예를 들어, 턱시도에서, 사용자는 UBB 구성 파일 내의 도메인 레벨 및 그룹 레벨 상에 애플리케이션 버전 관련 정보를 구성할 수 있다.
UBB 구성 파일에서 REQUEST_VERSION은 상기 요청을 전송하는 클라이언트의 버전을 결정하기 위해 사용될 수 있다. REQUEST_VERSION의 값은 수일 수 있는바, 이 수는 0보다 크거나 같고 65535(USHRT_MAX)보다 작거나 같다. 추가적으로, REQUEST_VERSION에 대한 디폴트 값은 '*'일 수 있고, '*'는 상기 요청 버전이 임의의 버전 범위에 의해 받아들여질 수 있고 그리고 임의의 버저닝된 서비스를 호출할 수 있음을 나타낸다.
UBB 구성 파일에서 VERSION_RANGE는 상기 서비스들에 대한 허용가능한 버전닝된 요청의 범위를 결정하기 위해 사용될 수 있다. 예를 들어, 턱시도 사용자는 를 나타내는 UBB 구성을, 의 포맷을 사용하여 간략화하기 위해 서비스 선택에 대해 그룹 레벨에서 턱시도 애플리케이션에 대한 버전 범위를 설정할 수 있다.
UBB 구성 파일 내의 VERSION_POLICY는 버전 제어 정책을 결정하기 위해 사용될 수 있다. 예를 들어, 값은 "PROPAGATE"일 수 있고, 이는 상기 서비스가 새로운 요청이 시작될 때 자신의 요청 버전을 사용하는 대신에 인입하는 요청 버전을 전파해야 함을 나타내는 것이다.
상기 VERSION_POLICY는 서비스 디스패칭동안 상기 REQUEST_VERSION에 선행할 수 있다. 즉, REQUEST_VERSION 및 VERSION_POLICY 속성들 모두가 서비스를 위해 구성되면, 상기 서비스는 새로운 요청이 시작될 때 인입하는 요청 버전을 전파할 수 있다.
하기의 리스트 1은 턱시도 구성 파일들에서 애플리케이션 버전들을 특정하는 여러 예들을 포함한다.
예시들 술어
리스트 1
도 2에서 도시된 것처럼, 원격 도메인 A(202) 내의 원격 서비스 A(220)는 로컬 도메인 내의 트랜잭셔널 서비스 A(210)의 버전에 대해 요청할 수 있다. 또한, 로컬 도메인에서 트랜잭셔널 서비스 A(210)는 원격 도메인 A(202) 내의 원격 서비스 A(220)(즉, 버전 I(221) 또는 버전 II(222))에 대해 요청할 수 있다.
본 발명의 일 실시예에 따라, 사용자는 임포팅되는 서비스(imported service)에 대한 서비스 버전 범위를 구성하고 그리고 원격 도메인으로부터 인입하는 서비스 요청 버전을 구성하도록 구성 파일(209)을 사용할 수 있다. 예를 들어, 턱시도에서, 사용자는 도메인 구성 파일들에 새로운 속성들인 REQUEST_VERSION, VERSION_RANGE 및 VERSION_POLICY을 도입함으로써 원격 서비스를 구성할 수 있다.
DMCONFIG 구성 파일 내의 REQUEST_VERSION은 특정 원격 도메인, 예를 들어, 원격 도메인 A(220)으로부터의 인입하는 서비스 요청을 원격 도메인 내의 구성된 요청 버전에 맵핑하는 방법을 정의하기 위해 사용될 수 있다. 사용자가 도메인 구성 파일에서 REQUEST_VERSION을 구성할 때 도메인 게이트웨이는 인입하는 요청 버전을 변경할 수 있고, 그렇지 않으면 상기 도메인 게이트웨이는 상기 인입하는 요청 버전을 전달할 수 있다.
DMCONFIG 구성 파일에서 VERSION_RANGE는 임포팅되는 원격 서비스의 버전 범위를 나타내기 위해 사용될 수 있다. 임포팅되는 원격 서비스의 이러한 버전 범위는 대응하는 익스포팅되는 서비스(exported service)의 버전 범위와 동일할 수 있다. 그렇지 않으면, 호출은 로컬 도메인에서 받아들여질 수 있더라도 원격 도메인에서 받아들여지지 않을 수 있다.
추가적으로, DMCONFIG 구성 파일 내의 VERSION_POLICY는 버전 제어 정책을 결정하기 위해 사용될 수 있다. 예를 들어, 값은 "PROPAGATE"일 수 있고, 이는 상기 도메인 게이트웨이가 특정 원격 도메인으로부터의 인입하는 클라이언트 요청의 요청 버전을 구성된 요청 버전으로 전파/매핑해야할지 여부를 결정하기 위해 사용될 수 있다. 버전 정책은 DMCONFIG 구성 파일 내에 상기 요청 버전을 치환(override)할 수 있다. 즉, 상기 버전은 상기 VERSION_POLICY 및 REQUEST_VERSION 모두가 구성될 때 우선(precedence)할 수 있다. 더욱이, 상기 특징이 인에이블되고 그리고 상기 사용자가 디폴트로(by default) 도메인 구성 파일 내에 상기 요청 버전을 구성하지 못하면, 상기 도메인 게이트 웨이는 상기 도메인 게이트웨이를 통해 상기 클라이언트 요청 버전을 전파할 수 있다.
하기의 리스트 2는 예시적인 턱시도 도메인 구성 파일이다.
리스트 2
상기 도메인 구성은, REMOTEDOM 1으로부터 인입하는 서비스 요청에 대한 요청 버전이 도메인 게이트웨이에 의해 변경되지 않을 수 있는 반면, REMOTEDOM 2으로부터 인입하는 서비스 요청에 대한 요청 버전이 상기 도메인 게이트웨이에 의해 4로 변경될 수 있음을 나타낸다.
더욱이, 상기 도메인 게이트웨이는 1-3으로 설정되는 버전 범위를 갖는 REMOTEDOM1으로부터 원격 서비스, 를 임포팅할 수 있고, 이는 이러한 범위의 요청 범위를 갖는 상기 클라이언트만이 로컬 도메인 내의 를 호출할 수 있음을 나타낸다. 상기 도메인 게이트웨이는,20 상기 범위 내의 요청 버전을 갖는 클라이언트만이 상기 로컬 도메인 내의 를 호출할 수 있도록 4-6으로 설정되는 버전 범위를 갖는 REMOTEDOM2로부터 원격 서비스, 를 또한 임포팅할 수 있다.
도 3는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서의 암시적 버저닝을 지원하는 예시적인 흐름도를 나타낸다. 도 3에서 도시된 것처럼, 단계 301에서, 트랜잭셔널 서비스 제공자는 복수의 서비스 버전들과 관련된 적어도 하나의 서비스를 디스패치할 수 있다. 더욱이, 단계 302에서, 상기 시스템은 하나 이상의 애플리케이션들을 하나 이상의 애플리케이션 존들로 분할할 수 있고, 상기 애플리케이션 존 각각은 상기 적어도 하나의 서비스의 특정 요청 버전과 관련된다. 이후, 단계 303에서, 상기 시스템은 상기 애플리케이션 존 내의 서비스 요청자로 하여금 상기 애플리케이션 존과 관련된 서비스 버전을 갖는 상기 적어도 하나의 서비스에 액세스하도록 한다.
버전 콘텍스트(
Version
Context
)
본 발명의 일 실시예에 따라, 버전 콘텍스트는 버저닝된 애플리케이션에 조인(join)하는 방법에 따라 요청 이니시에이터(request initiator)에 의해 암시적으로 생성될 수 있다.
도 4는 본 발명의 일 실시예에 따른, 트랜잭셔널 미들웨어 기계 환경에서의 버전 콘텍스트를 지원하는 예를 도시한다. 도 4에서 도시된 것처럼, 버전닝된 애플리케이션(400)은 다수의 그룹들 A-B(411-412)를 갖는 도메인(401)처럼 다수의 레벨들을 갖는 관리 계층을 사용하여 관리될 수 있다.
더욱이, 도메인(401)은 도메인 요청 버전(410)으로 구성될 수 있는 반면, 그룹 A(411)는 그룹 요청 버전 A(413)으로 구성될 수 있다. 따라서, 그룹 A(411) 내의 서비스들 A1-A3(421-423)은 그룹 요청 버전 A(413)와 일치하는 요청 버전을 가질 수 있다.
추가적으로, 그룹 B(412)는 특정된 요청 버전을 가지지 않기 때문에 (또는 비활성화된 그룹 요청 버전 B(414)을 갖기 때문에), 서비스들 B1-B4(431-434)은 서비스 버전 번호를 가질 수 있고, 이 서비스 버전 번호는 도메인 요청 버전(410)으로부터 물려받는다.
본 발명의 일 실시예에 따라, 개시 서비스 요청자는 버저닝된 애플리케이션에 조인할 때, 암시적으로 버전 콘텍스트에 놓여질 수 있다. 따라서, 암시 버저닝은, 서비스 요청자가 버저닝된 애플리케이션에 어떻게 조인하는지에 계층적으로 좌우될 수 있다. 또한, 사용자는, 후속 서비스 라우팅 및 디스패칭을 포함하는 서비스 요청의 전체 라이프사이클 내에 상기 버전 정보가 전파될 수 있는지 여부를 제어하기 위해 버전 콘텍스트를 사용할 수 있다.
도 4에서 도시된 것처럼, 클라이언트 A(402)는 그룹 A(411)에서 버저닝된 애플리케이션(400)에 조인할 수 있고, 클라이언트 A가 그룹 A(411)에 조인할 때 버전 콘텍스트(432)와 암시적으로 관련될 수 있다. 또한, 클라이언트 B(403)는 그룹 B(412)에서 버저닝된 애플리케이션(400)에 조인할 수 있다. 따라서, 클라이언트 B(403)은, 클라이언트 B(403)가 그룹 B(412)에 조인될 때 버전 콘텍스트(433)와 암시적으로 관련될 수 있다.
더욱이, 서버(404)가 런타임 시 새로운 서비스 요청을 개시할 때, 서버(404)는 버전 콘텍스트(434)으로 암시적으로 버저닝될 수 있고, 그리고 서비스(405)가 런타임 시 새로운 요청을 개시할 때 버전 콘텍스트(435)로 암시적으로 버저닝될 수 있다.
본 발명의 일 실시예에 따라, 암시 버저닝은 서로 다른 예외들을 가질 수 있다. 예를 들어, 턱시도는, 예를 들어, 입력 메시지를 특정된 서비스로 포워딩하는 tpforward를 호출할 때, 포워딩된 요청 메시지 내의 요청 버전 번호를 변경하지 못할 수 있다.
턱시도 암시
버전닝
예시(A
Tuxedo
Implicit
Versioning
Example
)
턱시도에서, 서로 다른 서비스 요청자들(예를 들어, 여러 서버들 그리고/또는 서비스들, 네이티브 클라이언트들, 워크스테이션 클라이언트들, JOLT 클라이언트들)은, 요청이 시작될 때, UBB 구성에 따른 버전 콘텍스트 값을 암시적으로 요할 수 있다. 예를 들어, 버전 콘텍스트 값은, 턱시도 클라이언트, 서버 또는 서비스가 이니시에이터로서 요청을 시작할 때, UBB 구성 파일에 따라서, 단지 평가될 수 있는 런타임 값일 수 있다.
도 5는 본 발명의 일 실시예에 따른, 턱시도 멀티-프로세스(MP) 환경을 지원하는 예를 도시한다. 도 5에서 도시된 것처럼, 턱시도 애플리케이션은 다수의 기계들, 예를 들어, MACH1(501) 및 MACH2(502)을 갖는 멀티-프로세스(MP) 환경(500)에서 디플로이될 수 있다. 더욱이, 구성 파일은 MP 환경(500)을 구성하기 위해 사용될 수 있다.
하기의 리스트 3은 예시적인 UBB 구성 파일을 나타낸다.
리스트 3
도 3에 도시된 것처럼, REQUEST_VERSION, VERSION_POLICY 및 VERSION_RANGE는 UBB 구성 파일의 RESOURCE, GROUPS 섹션들에 구성될 수 있다.
예를 들어, 그룹, GRP_L1은 VERSION_RANGE, REQUEST_VERSION 및 VERSION_POLICY 속성들로 구성된다. 따라서, 이러한 그룹 내의 모든 서버들 및 서비스들의 VERSION_RANGE, REQUEST_VERSION 및 VERSION_POLICY는 그룹 구성으로부터 부여되는 것으로 결정될 수 있다. 그 결과로서, GRP_L1 내의 서버들, SVR_L1 533 및 SVR_L2 541에 대한 VERSION_RANGE 속성들의 값은 "1-40"이다. 또한, SVR_L1 533 및 SVR_L2 541에 대한 REQUEST_VERSION 속성들의 값은 20이고; 반면에 SVR_L1 533 및 SVR_L2 541 모두는 인입하는 요청 버전을 전파할 수 있다.
반면에, 어떤 버저닝 속성들도 상기 그룹, GRP_L2에 대해 구성되지 못하고, 그리고 상기 버저닝 속성들은 (RESOURCE 섹션에서 특정된 것처럼) 상기 도메인 레벨로부터 부여되는 것으로 결정될 수 있다. 따라서, 이러한 그룹 내의 모든 서버들 그리고/또는 서비스들의 VERSION_RANGE는 "0-2000"이고; 이러한 그룹 내의 모든 서버들 그리고/또는 서비스들의 REQUEST_VERSION은 1이다. 도메인 레벨 상에 어떤 VERSION_POLICY도 존재하지 않기 때문에, 이러한 그룹 내의 모든 서버들 그리고/또는 서비스들은 인입하는 요청 버전을 전파하는 대신에 요청 버전 1을 사용할 수 있다.
워크스테이션 클라이언트로부터의 요청 버전은, 관련된 WSL 서버가 속하는 그룹의 요청 버전에 따라 결정될 수 있다. 그렇지 않으면, 워크스테이션 클라이언트로부터의 요청 버전은 상기 도메인에 대한 요청 버전(즉, WSL 그룹 및 RESOURCES의 REQUEST_VERSION 값)에 따라 결정될 수 있다.
도 5에서 도시된 것처럼, 워크스테이션 클라이언트들, 예를 들어, /WS-01(511) 및 /WS-01(521)는 WSH_01(514) 및 WSH_02(515)와 같은 핸들러들을 통해 MACH1(501) 상의 서비스에 액세스할 수 있고, WSH_01(514) 및 WSH_02(515)는 서버 리스너들인 WSGRP_L1_1:WSL(517) 및 WSGRP_L1_2:WSL(518)에 의해 각각 관리된다. 추가적으로, 워크스테이션 클라이언트, /WS-01(521)은 핸들러인 WSH_01(523)을 통해 MACH2(502) 상의 서비스에 액세스할 수 있고, WSH_01(523)은 서버 리스너인 WSGRP_L1_2:WSL(525)에 의해 관리된다.
따라서, 워크스테이션 클라이언트, /WS-01(511)은 WSGRP_L1_1:WSL(517)와 같은 동일한 REQUEST_VERSION 콘텍스트 값을 암시적으로 소유할 수 있고, 이WSGRP_L1_1:WSL(517)는 WSGRP_L1_1의 요청 버전 구성에 의해 결정된다. 여기서, WSGRP_L1_1의 버전 번호가 "4"로서 구성되기 때문에, /WS-01(511)에 대한 암시적 버전 콘텍스트 값은 또한 4일 수 있고, 이는 /WS-01(511)내의 워크스테이션 클라이언트가 요청을 시작할 때, 그것의 요청 버전 값이 4인 것을 의미한다.
더욱이, 상기 REQUEST_VERSION 키워드 값이 WSGRP_L1_2에 대해 특정되지 않을 때, /WS-02(512)는 RESOURCE 섹션에서 특정된 것처럼 상기 로컬 도메인과 동일한 버전 번호를 갖는다. 따라서, 버전 계층에 따라, /WS-02(512)의 버전 콘텍스트 번호는 1일 수 있고, 이는 /WS-01(512)로부터의 워크스테이션 클라이언트가 새로운 요청을 시작할 때, 상기 요청의 요청 버전이 1인 것을 의미한다.
추가적으로, /JC-01(513) 또는 /JC-01(522) 상의 서로 다른 졸트 클라이언트들(jolt clients)로부터의 서비스 요청은 JSH_01(516) 및 JSH_01(524)와 같은 서로 다른 핸들러들에 의해 핸들링될 수 있다.
유사하게, 졸트 클라이언트, 예를 들어, /JC-01(513)로부터의 서비스 요청에 대한 요청 버전은, 상기 졸트 서버 리스너(JSL), JGRP_L1:JSL(519)이 속하는 상기 그룹, JGRP_L1의 요청 버전에 따라 결정될 수 있다. 또한, 졸트 클라이언트, 예를 들어, /JC-01(522)로부터의 서비스 요청에 대한 요청 버전은, JGRP_L2:JSL(526)이 속하는 그룹 JGRP_L2의 요청 버전에 따라 결정될 수 있다.
반면에, 상기 JSL 그룹이 요청 버전으로 특정되지 않으면, 졸트 클라이언트로부터의 서비스 요청에 대한 요청 버전은 RESOURCE 섹션에서 특정된 로컬 도메인의 요청 버전에 기초한다.
더욱이, 네이티브 클라이언트가 새로운 요청을 시작할 때, 상기 네이티브 클라이언트가 특정 그룹을 갖는 애플리케이션에 조인하면, 상기 네이티브 클라이언트는 그룹/도메인 계층 트리로부터 런타임 시 요청 버전 값을 얻을 수 있다. 그렇지 않으면, 네이티브 클라이언트는 상기 도메인 레벨로부터 요청 버전 값을 얻는다.
도 5에서 도시된 것처럼, 예를 들어, MACH1(501) 상의 서버 XASVR_L1(532)를 요청하는 네이티브 클라이언트는 상기 특정된 그룹, 예를 들어, XAGRP_L1을 갖는 애플리케이션에 조인할 수 있다. 따라서, 상기 네이티브 클라이언트는 런타임 시 그룹 구성으로부터 요청 버전 값을 얻을 수 있고 상기 값은 11이다. 반면에, 네이티브 클라이언트가 특정된 그룹이 없이 애플리케이션에 조인하면, 상기 네이티브 클라이언트는 실행 시간에서 그룹/도메인 계층 트리로부터 상기 요청 버전 값을 얻을 수 있다.
본 발명의 일 실시예 따라서, 서버/서비스가 새로운 요청을 시작할 때, 상기 서버/서비스는 상기 서버가 속하는 그룹 레벨로부터 요청 버전 값을 얻을 수 있거나, 또는 상기 서버/서비스는 어떤 요청 버전도 실행 시간에서 그룹 레벨에서 정의되지 않을 때 상기 도메인 레벨로부터 요청 버전 값을 얻을 수 있다.
사용자 정의형 서버에 대해, 암시 버전은 도메인 레벨에서 RESOURCES 내의 REQUEST_VERSION 값 및 서버 그룹의 REQUEST_VERSION 값에 의해 결정될 수 있다. 이러한 버전은, 상기 서버가 서버 초기화 또는 서버 종료 동안 다른 서비스들을 호출할 때 상기 요청 버전으로 사용될 수 있다.
서비스에 대해, 상기 암시 버전은 상기 도메인 레벨에서 RESOURCES 내의 상기 REQUEST_VERSION 값 및 서버 그룹의 REQUEST_VERSION 값에 의해 결정될 수 있다. 이러한 버전은, 상기 서비스가 상기 서비스 수명 동안 다른 서비스들을 호출할 때 상기 요청 버전으로 사용될 수 있다. 상기 서비스가 상기 인입하는 요청 버전을 전파하면, 상기 서비스는, 다른 서비스들을 호출할 때 초기 요청 버전으로서 인입하는 요청 버전을 사용한다.
추가적으로, 시스템 서버들(예를 들어, DBBL(535), BBL(536 및 542), BRIDGE(510 및 520), DMGRP:GWT(534), 및 이벤트 브로커들), TMS 서버(예를 들어, TMS_XAGRP_L1(531)), TLISTEN 프로세스들(551 및 561), 및 다른 인터페이스 프로세드들(예를 들어, CLI_L1_1(552), CLI_L1_1(562), CLI_L1_2(553) 및 CLI_L1_2(563))은 버저닝되지 않을 수 있다. 이러한 시스템 서버들은 항상 상기 디폴트 버전 값을 사용할 수 있는데, 이것은 임의의 값일 수 있다.
또한, 턱시도 통신(conversation) 호출에 대해, 상기 요청 버전 및 버전 범위는 통신 접속 설정 위상 동안(즉, tpconnect()에서) 설정된다. 설립된 접속 상의 통신 과정에서(즉, tpsend()/tprecv()에서) 버전 검사가 존재하지 않을 수 있다. 턱시도/Q에 대해, 시스템은 FORWARD 큐 - 상기 큐에/로부터 클라이언트들이 tpenqueue()/tpdequeue() 메시지들을 전송할 수 있다 - 내의 버전 개념을 지원할 수 있다. 따라서, 상기 클라이언트가 메시지를 상기 FORWARD 큐에 넣을 때, 상기 FORWARD 큐는 상기 클라이언트 요청 버전을 지원하는 상기 서비스에 상기 큐잉된 메시지를 전달할 수 있다.
버전 기반 라우팅(
Version
Based
Routing
)
본 발명의 일 실시예에 따라, 버전 기반 라우팅(VBR)은 트랜잭셔널 미들웨어 기계 환경에서 지원될 수 있다.
도 6은 본 발명의 일 실시예에 따라, 트랜잭셔널 미들웨어 기계 환경에서 버전 기반 라우팅(VBR)을 지원하는 예를 도시한다. 도 6에 도시된 것처럼, 트랜잭셔널 미들웨어 기계 환경(600) 내의 트랜잭셔널 서비스 제공자(609)는 서로 다른 트랜잭셔널 서버들, 예를 들어, 트랜잭셔널 서버들 A-B(601-602) 상에 트랜잭셔널 서비스 A(610)를 제공할 수 있다.
예를 들어, 트랜잭셔널 서버 A(601)는 (즉, 1-2의 버전 범위를 갖는) 버전들 I-II(611-612)의 서비스 엔트리들을 제공할 수 있고, 트랜잭셔널 서버 B(602)는 (즉, 3-4의 버전 범위를 갖는) 버전들 III-IV(613-614)의 서비스 엔트리들을 제공할 수 있다.
더욱이, 트랜잭셔널 서비스 제공자(609)는 서로 다른 서비스 요청자들, 예를 들어, 서비스 요청자들 A-B(605-606)로부터 서비스 요청들을 수신할 수 있다. 트랜잭셔널 서비스 제공자(609)는, 서비스 요청자들 A-B(605-606)로부터 수신된 상기 서비스 요청들 내의 요청된 서비스 이름을 이용가능한 여러 서비스 엔트리들과 매칭할 수 있다. 도 6에서 도시된 것처럼, 트랜잭셔널 서비스 제공자(609)는, 트랜잭셔널 서버들 A-B(601-602) 모두가 트랜잭셔널 서비스 A(610)를 제공할 수 있기 때문에 트랜잭셔널 서버들 A-B(601-602)의 위치를 찾을(locate) 수 있다.
이후, 트랜잭셔널 서비스 제공자(609)는, 서비스 요청 내의 상기 요청된 서비스 이름과 매칭하는 하나 이상의 서비스 엔트리들이 발견가능한 후에, 서비스 라우팅을 결정하는 버전 기반 라우팅(VBR)(620) 메커니즘을 사용할 수 있다. 예를 들어, VBR(620)은, 서비스 요청자, 예를 들어, 서비스 요청자 A(605) 또는 서비스 요청자 B(606)로부터 수신된 서비스 요청의 요청 버전 번호와 트랜잭셔널 서버 A(601) 및 트랜잭셔널 서버 B(602) 모두에 대한 버전 범위의 경계 값들과의 수치 비교를 수행할 수 있다.
여기에서, 서비스 요청자 A(605) 또는 서비스 요청자 B(606)로부터 수신된 상기 서비스 요청은 상기 요청 버전 번호를 명시적으로 특정하지 않을 수 있다. 상기 암시 버저닝 구성에 기반하여, 트랜잭셔널 서비스 제공자(609)는 각 서비스 요청에 관련된 요청된 서비스 버전을 결정할 수 있다. 도 6에서 도시된 것처럼, 애플리케이션 존 A(603) 내의 서비스 요청자 A(605)는 요청 버전 A(615)(예를 들어, 버전 I)과 관련될 수 있는 반면에, 애플리케이션 존 B(604) 내의 서비스 요청자 B(606)은 요청 버전 B(616)(예를 들어, 버전 III)과 관련된다.
도 6에 도시된 것처럼, VBR(620)는 애플리케이션 존 A(603) 내의 서비스 요청자 A(605)로부터 트랜잭셔널 서버 A(601)로 수신된 상기 서비스 요청을 라우팅할 수 있고, 트랜잭셔널 서버 A(601)는 트랜잭셔널 서비스 A(610)의 버전 I(611)을 제공한다. 또한, VBR(620)는 애플리케이션 존 B(604) 내의 서비스 제공자 B(606)로부터 트랜잭셔널 서버B(602)로 수신된 상기 서비스 요청을 라우팅할 수 있고, 트랜잭셔널 서버 B는 트랜잭셔널 서비스 A(610)의 버전 III(613)을 제공한다. 추가적으로, 요청된 서비스 이름과 매칭하는 모든 서비스들이 버저닝된 서비스 요청에 대해 적합하지 않을 때, VRB는 호출자에 "어떤 엔트리도 발견되지 않는다(no entry is found)" 에러를 리턴시킬 수 있다.
추가적으로, VBR(620)은 다른 라우팅 메커니즘들과 함께 사용될 수 있다. 예를 들어, 턱시도에서, VBR(620)은 DDR(Data Dependent Routing)(621), TAR(Transacion Affinity Routing)(622) 및 RAR(Request Affinity Routing)(623)과 같은 여러 라우팅 메커니즘들과 함께 사용될 수 있다.
예를 들어, VBR(620)은 기존의 라우팅 알고리즘들을 위한 기능들과 유사한 기능들을 사용하여 구현될 수 있다. 턱시도는, 다수의 라우팅 메커니즘들이 존재할 때 모든 기준과 매칭하는 서비스들을 선택할 수 있다. 또한, 상기 사용자는, 다수의 라우팅 메커니즘들이 함께 사용될 때 이러한 라우팅 메커니즘들이 상호작용하는 방법의 이해에 기반하여 더 복잡한 라우팅 기법을 구현할 수 있다.
본 발명의 일 실시예에 따라, 사용자들이 애플리케이션들을 계획하고, 개발하고, 스케일링하고, 디플로이하고 그리고 업그레이드할 수 있도록, 트랜잭셔널 서비스 제공자, 예를 들어, 턱시도는 여러 서비스 선택 및 라우팅 알고리즘들을 상기 사용자들에게 제공할 수 있다. 애플리케이션 버저닝은 특별한 라우팅 콘텍스트들의 사용을 피하고 그리고 여러 분할 요건들을 충족하기 위해 사용될 수 있다. 예를 들어, 오라클 퓨전 미들웨어 페밀리 내의 기반구조 제품들의 일부로서, 턱시도는 코어 프레임워크 내의 서비스 버저닝 개념을 지원할 수 있다.
도 7은 본 발명의 일 실시예에 따라, 분포된 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 시퀀스 차트를 도시한다. 도 7에서 도시된 것처럼, 트랜잭셔널 미들웨어 기계 환경(700)은, 여러 서비스들(예를 들어, SVC1, SVC2 및 SVC3)를 서로 다른 클라이언트들(예를 들어, 클라이언트(711))에 제공할 수 있는 여러 트랜잭셔널 서버들(예를 들어, SERVER1(712), SERVER2(713) 및 SERVER3(714))을 포함할 수 있다.
더욱이, 턱시도 UBB 구성 파일 및 턱시도 DUBB 구성 파일과 같은 하나 이상의 구성 파일들은 트랜잭셔널 미들웨어 기계 환경(700)을 구성하기 위해 사용될 수 있다.
하기의 리스트 4는 예시적인 턱시도 BB 구성 파일이다.
리스트 4
하기의 리스트 5는 예시적인 턱시도 DUBB 구성 파일이다.
리스트 5
도 7에서 도시된 것처럼, 단계 701에서, SERVER1(712)이 시작하고 "1-2"의 버전 범위를 갖는 서비스들 SVC1 및 SVC2를 광고하고; 그리고 단계 702에서, SERVER2(713)은 시작하고 "3-4"의 버전 범위를 갖는 서비스들 SVC1, SVC2 및 SVC3를 광고한다.
단계 703에서, SERVER3(714)가 시작하고, 예를 들어, "tpcall SVC2"를 호출하는 것을 통해 SVC2의 서비스를 요청할 수 있다. 상기의 리스트 4에 기초하여, SERVER3(714)는 그룹 "GRP3"에 속하고, SERVER3(714)의 요청 버전은 "3"으로 평가된다. 따라서, 상기 시스템은 상기 서비스 요청을 SERVER2(713)에 라우팅할 수 있고, 이는 상기 서비스 요청과 관련된 요청 버전, "3"이 SERVER2(713)에 의해 광고된 SVC2의 버전 범위에 매칭하기 때문이다. 이후, 단계 704에서, SERVER2(713)는, SERVER3(714)가 "1-3"의 버전 범위를 갖는 서비스들 SVC2 및 SVC3를 광고하기 전에 SVC2를 실행할 수 있다.
더욱이, 단계 705에서, 클라이언트(711)은, 예를 들어, 상기 요청 버전 "1"을 갖는 "tpcall SVC1"를 호출하는 것을 통해 SVC1에 대한 서비스 요청을 갖는 트랜잭션을 개시할 수 있다. 상기 시스템은 이러한 서비스 요청을 SERVER1(712)에 라우팅할 수 있고, SEVER1의 버전 범위는 클라이언트(711)로부터 수신된 서비스 요청의 요청 버전 "1"과 매칭한다.
이후, 단계 706에서, SERVER1(712)은 SVC1을 실행할 수 있고, SVC1는 또한 "tpcall SVC3"을 호출한다. 상기 시스템은 이러한 호출을 SERVER3(714)로 라우팅할 수 있다. 단계 707에서, SERVER3(714)은 SVC3을 실행할 수 있고, 그리고 예를 들어, 요청 버전 3을 갖는 "tpcall R_SVC1"를 호출함을 통해 서비스, R_SVC1를 위해 REMOTEDOM 1(715)에 호출을 배치할 수 있다. 따라서, 상기 시스템은 리스트 5에서 표시된 것처럼 REMOTEDOM 1(715)에 이러한 서비스 요청을 라우팅할 수 있다. 단계(708)에서, REMOTEDOM 1(715)은 원격 서비스 R_SVC1을 실행시킬 수 있다.
추가적으로, 상기 로컬 도메인은 원격 도메인들(예를 들어, REMOTEDOM1(715) 및 REMOTEDOM2(716))로부터 서비스 요청들을 수신할 수 있다. 도 7에서 도시된 것처럼, REMOTEDOM1(715) 및 REMOTEDOM2(716) 모두는, 단계들 709 및 710 각각에서 "tpcall SVC1"의 서비스 요청 동작을 개시한다.
리스트 5의 구성에 기초하여, 원래의 요청 버전인 "2"를 갖는 REMOTEDOM1(715)로부터 수신된 서비스 요청이 전파될 수 있다. 따라서, 상기 시스템은 이러한 서비스 요청을 SERVER1(712)에 라우팅할 수 있다. 이후, 상기 시스템은, 상기 요청된 서비스를 REMOTEDOM1(715) 내의 서비스 요청자에 제공하기 위해 단계들(706-708)을 수행할 수 있다.
또한, 원래의 요청 버전인 "6"를 갖는 REMOTEDOM2(716)로부터 수신된 서비스 요청이 요청 버전 "4"를 갖도록 변경될 수 있다. 따라서, 상기 시스템은, 단계 724에서, 이러한 서비스 요청을 SERVER2(703)에 라우팅할 수 있고 그리고 상기 요청된 서비스 SVC1을 실행할 수 있다.
도 8은 본 발명의 일 실시예에 따라, 트랜잭셔널 미들웨어 기계 환경 내의 버전 기반 라우팅(VBR)을 지원하는 예시적인 흐름도를 도시한다. 도 8에서, 도시된 것처럼, 단계 801에서, 트랜잭셔널 서비스 제공자는 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치할 수 있다. 더욱이, 단계 802에서, 상기 트랜잭셔널 서비스 제공자는, 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정할 수 있다. 이후, 단계 803에서, 상기 트랜잭셔널 서비스 제공자는 상기 서비스 요청자로 하여금 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는 서비스 엔트리에 액세스하도록 한다.
상기 실시예들로부터 알 수 있는 것처럼, 서비스들의 여러 버전들은 상기 클라이언트들과 병렬로 제공될 수 있고, 그리고 상기 시스템은 상기 클라이언트 요청들을 서로 다른 버전들의 서비스들에 빠르게 라우팅할 수 있다. 따라서, (예를 들어, 컴퓨터 시스템 내에서 또는 컴퓨터 시스템으로서 구현되는) 상기 시스템의 동작 효율이 개선된다.
일부 실시예들에 따라, 도 9는 상기에서 기술된 본 발명의 원리들에 따라 구성된 트랜잭셔널 서비스 제공자(900)의 기능적 블록도를 나타낸다. 상기 디바이스의 기능적 블럭들은 본 발명의 원리들을 수행하기 위해 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 도 9에 서술된 기능 블록들은 상기에서 서술된 본 발명의 원리들을 구현하도록 결합될 수 있거나 서브-블록들로 분할될 수 있다. 따라서, 여기에서의 서술은 여기에서 서술된 기능적인 블록들의 임의의 가능한 조합 또는 분할 또는 추가적인 정의를 지원할 수 있다.
도 9에서 도시된 것처럼, 본 발명의 예시적인 실시예들은 트랜잭셔널 서비스 제공자(900)를 제공한다. 트랜잭셔널 서비스 제공자(900)는 상기에서 서술된 것처럼 트랜잭셔널 미들웨어 기계 환경에서 애플리케이션 버저닝을 지원하기 위한 시스템에서 사용될 수 있다. 트랜잭셔널 서비스 제공자(900)는 디스패칭 유닛(910), 매칭 유닛(920) 및 액세스 유닛(930)을 포함할 수 있다. 상기 디스패칭 유닛(910)은 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치하는 동작을 할 수 있다. 매칭 유닛(920)은, 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정하는 동작을 할 수 있다. 다른 실시예에서, 상기 매칭 유닛(920)은 서비스 엔트리의 서비스 이름을 상기 서비스 요청자로부터 수신된 상기 서비스 요청 내의 요청된 서비스 이름과 매칭하도록 동작할 수 있다. 상기 액세스 유닛(930)은, 상기 서비스 요청자로 하여금, 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는 상기 서비스 엔트리에 액세스하도록 동작할 수 있다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자(900)는 리턴 유닛(940)을 더 포함할 수 있고, 상기 리턴 유닛(940)은, 매칭 이름을 갖는 모든 서비스 엔트리들이 상기 요청된 서비스 버전과 매칭할 수 없을 때, 에러 메시지를 상기 서비스 요청자들에 리턴하도록 동작한다.
다른 실시예에서, 상기 트랜잭셔널 서비스 제공자(900)는 파티셔너(partitioner)(950)를 더 포함할 수 있고, 상기 파티셔너(950)는 하나 이상의 애플리케이션들을 하나 이상의 애플리케이션 존들로 분할하도록 동작한다. 상기 애플리케이션 존 각각은 상기 적어도 하나의 서비스의 특별한 요청 버전과 관련된다.
다른 실시예에서, 트랜잭셔널 서비스 제공자(900)는 비교 유닛(960)을 더 포함할 수 있고, 상기 비교 유닛(960)은 상기 요청된 서비스 버전 번호와 상기 버전 범위의 모두 경계값들 사이의 수치 비교를 수행하도록 동작한다.
다른 실시예에서, 트랜잭셔널 서비스 제공자(900)는 버전 결정 유닛(970)을 더 포함할 수 있고, 상기 버전 결정 유닛(970)은 상기 서비스 요청과 관련된 상기 요청된 서비스 버전을 결정하는 동작을 한다.
다른 실시예에서, 트랜잭셔널 서비스 제공자(900)는 구성 제공 유닛(980)을 더 포함할 수 있고, 상기 구성 제공 유닛(980)은 상기 트랜잭셔널 서비스 애플리케이션 구성을 제공하기 위해 적어도 하나의 구성 파일을 사용하기 위해 동작한다.
다른 실시예에서, 트랜잭셔널 서비스 제공자(900)는 구성 변경 유닛(990)을 더 포함할 수 있고, 상기 구성 변경 유닛(990)은 실행 시간에서 상기 트랜잭셔널 서비스 애플리케이션 구성을 변경하기 위해 관리 인터페이스를 사용하도록 동작한다.
도 10은 본 발명의 일 실시예에 따라, 트랜잭셔널 서비스 제공자(110)의 예시적인 블록도를 나타낸다. 트랜잭셔널 서비스 제공자(110)는 디스패처(1010), 결정 모듈(1020) 및 액세스 제어기(1030)를 포함한다. 트랜잭셔널 서비스 제공자(110)는 서비스 요청자(1060)로부터 서비스 요청을 수신하도록 구성된다.
디스패처(1010)는 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스(1040)을 디스패치한다. 결정 모듈(1020)은, 서비스 엔트리(1040)와 관련된 서비스 버전이 서비스 요청자(1060)로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정한다. 액세스 제어기(1030)는 서비스 요청자(1060)로 하여금, 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는 서비스 엔트리(1050)에 액세스하도록 한다.
본 발명은, 하나 이상의 프로세서들, 메모리 그리고/또는 본 발명의 개시들에 따라 프로그래밍된 컴퓨터 판독가능한 저장 매체를 포함하는, 하나 이상의 종래의 범용 또는 특수용 디지털 컴퓨터, 컴퓨팅 디바이스, 기계 또는 마이크로 프로세서를 이용하여 편리하게 구현될 수 있다. 적절한 소프트웨어 코딩은, 소프트웨어 분야의 통상의 기술자에게 명백한 것으로, 본 발명의 개시들에 기초하여 통상의 프로그래머들에 의해 용이하게 준비될 수 있다.
일부 실시예들에서, 본 발명은 명령어들이 저장된 저장 매체 또는 컴퓨터 판독가능한 매체(매체들)인 컴퓨터 프로그램 제품을 포함하고, 상기 명령어들은 본 발명의 임의의 프로세스들을 수행하도록 컴퓨터를 프로그래밍하도록 사용될 수 있다. 상기 저장 매체는 플로피 디스크들, 광 디스크들, DVD, CD-ROM들, 마이크로드라이브 및 자기-광 디스크들을 포함하는 임의의 타입의 디스크, ROM들, RAM들, EPROM들, EEPROM들, DRAM들, VRAM들, 플래시 메모리 디바이스들, 마그네틱 또는 광학 카드들, 나노시스템들(분자 메모리 IC들을 포함), 또는 명령어들 그리고/또는 데이터를 저장하기에 적합한 임의의 타입의 매체 또는 디바이스를 포함할 수 있지만, 이에 제한되지 않는다.
본 발명의 이전의 서술은 예시 및 설명의 목적으로 제공된다. 개시된 정확한 형태들로 본 발명을 총망라하거나 제한하도록 의도되지 않는다. 많은 수정들 및 변형들이 본 기술 분야의 통상의 기술자에게 명백할 것이다. 변형들 및 수정들은 개시된 기술 특징의 임의의 관련된 조합을 포함할 수 있다. 상기 실시예들은 본 발명의 원리들 및 실제적인 애플리케이션을 가장 잘 설명하기 위해 선택되고 서술되어, 그 결과 당업자로 하여금 고려되는 특별한 사용에 적합한 여러 실시예들을 통해 그리고 여러 변형들을 갖는 본 발명을 이해하도록 한다. 본 발명의 범위는 하기의 청구 범위들 및 그것의 균등물에 의해 정의되도록 의도된다.
Claims (23)
- 트랜잭셔널 미들웨어 기계 환경(transactional middleware machine environment)에서 서비스 관리를 지원하는 방법에 있어서,
트랜잭셔널 서비스 제공자를 통해, 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치(dispatch)하는 단계;
상기 트랜잭셔널 서비스 제공자를 통해, 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정하는 단계; 및
상기 트랜잭셔널 서비스 제공자를 통해, 상기 서비스 요청자로 하여금 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는 상기 서비스 엔트리에 액세스하도록 하는 단계를 포함하는, 서비스 관리를 지원하는 방법. - 제1항에 있어서,
상기 트랜잭셔널 서비스 제공자를 통해, 서비스 엔트리의 서비스 이름을 상기 서비스 요청자로부터 수신된 상기 서비스 요청 내의 요청된 서비스 이름과 매칭하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제2항에 있어서,
매칭하는 이름을 갖는 모든 서비스 엔트리들이 상기 요청된 서비스 버전과 매칭할 수 없을 때, 에러 메시지를 상기 서비스 요청자에 리턴하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
하나 이상의 애플리케이션들을 하나 이상의 애플리케이션 존들로 분할(partition)하도록 버전 범위를 사용하는 단계를 더 포함하고, 상기 애플리케이션 존 각각은 상기 적어도 하나의 서비스의 특별한 요청 버전과 관련되는, 서비스 관리를 지원하는 방법. - 제4항에 있어서,
상기 트랜잭셔널 서비스 제공자를 통해, 상기 요청된 서비스 버전 번호와 상기 버전 범위의 경계값들 모두 간에 수치 비교(numeric comparison)를 수행하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 서비스 요청자가 클라이언트 애플리케이션과 리모트 서비스 중 하나가 되도록 하는 것을 더 포함하는, 서비스 관리를 지원하는 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
데이터 의존 라우팅(DDR: data dependent routing) 알고리즘,
트랜잭션 친화도 라우팅(TAR: transaction affinity routing) 알고리즘, 및
요청 친화도 라우팅(RAR: request affinity routing) 알고리즘 중 적어도 하나를 사용하여 서비스 라우팅을 수행하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제1항 내지 제7항 중 어느 한 항에 있어서,
상기 서비스 요청과 관련된 상기 요청된 서비스 버전을 결정하도록 트랜잭셔널 서비스 애플리케이션 구성을 사용하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 트랜잭셔널 서비스 애플리케이션 구성을 제공하도록 적어도 하나의 구성 파일을 사용하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 제9항에 있어서,
런타임(runtime) 시 상기 트랜잭셔널 서비스 애플리케이션 구성을 변경시키도록 관리 인터페이스를 사용하는 단계를 더 포함하는, 서비스 관리를 지원하는 방법. - 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 제1항 내지 제10항 중 어느 한 항의 방법을 수행하도록 하는 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램.
- 기계 판독가능한 매체에 저장된 제11항의 컴퓨터 프로그램을 포함하는 컴퓨터 제품.
- 네트워크 환경에서 네트워크 관리를 지원하는 시스템에 있어서,
하나 이상의 마이크로프로세서들; 및
상기 하나 이상의 마이크로프로세서들에서 실행되는 트랜잭셔널 서비스 제공자를 포함하고, 상기 트랜잭셔널 서비스 제공자는,
서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치하고,
서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정하고, 그리고
상기 서비스 요청자로 하여금 상기 서비스 엔트리에 액세스하는 동작을 하도록 하며,
상기 서비스 엔트리는 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는, 네트워크 관리를 지원하는 시스템. - 제13항에 있어서,
상기 트랜잭셔널 서비스 제공자는 서비스 엔트리의 서비스 이름을 상기 서비스 요청자로부터 수신된 상기 서비스 요청 내의 요청된 서비스 이름과 매칭하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 제14항에 있어서,
상기 트랜잭셔널 서비스 제공자는, 매칭하는 이름을 갖는 모든 서비스 엔트리들이 상기 요청된 서비스 버전과 매칭할 수 없을 때, 에러 메시지를 상기 서비스 요청자에 리턴하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 제13항 내지 제15항 중 어느 한 항에 있어서,
하나 이상의 애플리케이션들은 하나 이상의 애플리케이션 존들로 분할될 수 있고, 상기 애플리케이션 존 각각은 상기 적어도 하나의 서비스의 특별한 요청 버전과 관련되는, 네트워크 관리를 지원하는 시스템. - 제16항에 있어서,
상기 트랜잭셔널 서비스 제공자는, 상기 요청된 서비스 버전 번호와 상기 버전 범위의 경계값들 모두 간에 수치 비교를 수행하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 제13항 내지 제17항 중 어느 한 항에 있어서,
상기 서비스 요청자는 클라이언트 애플리케이션과 리모트 서비스 중 하나인, 네트워크 관리를 지원하는 시스템. - 제13항 내지 제18항 중 어느 한 항에 있어서,
상기 트랜잭셔널 서비스 제공자는,
데이터 의존 라우팅(DDR: data dependent routing) 알고리즘,
트랜잭션 친화도 라우팅(TAR: transaction affinity routing) 알고리즘, 및
요청 친화도 라우팅(RAR: request affinity routing) 알고리즘 중 적어도 하나를 사용하여 서비스 라우팅을 수행하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 제13항 내지 제19항 중 어느 한 항에 있어서,
상기 트랜잭셔널 서비스 제공자는, 상기 서비스 요청과 관련된 상기 요청된 서비스 버전을 결정하기 위해 트랜잭셔널 서비스 애플리케이션 구성을 사용하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 제20항에 있어서,
상기 트랜잭셔널 서비스 제공자는,
상기 트랜잭셔널 서비스 애플리케이션 구성을 제공하기 위해 적어도 하나의 구성 파일을 사용하는 것, 그리고
런타임 시 상기 트랜잭셔널 서비스 애플리케이션 구성을 변경시키도록 관리 인터페이스를 사용하는 것 중 적어도 하나를 수행하도록 동작하는, 네트워크 관리를 지원하는 시스템. - 명령어들이 저장된 비일시적인 기계 판독가능한 저장 매체로서, 상기 명령어들은 실행될 때 시스템으로 하여금,
트랜잭셔널 서비스 제공자를 통해, 서로 다른 서비스 버전들을 갖는 복수의 서비스 엔트리들을 사용하여 적어도 하나의 서비스를 디스패치하는 단계;
상기 트랜잭셔널 서비스 제공자를 통해, 서비스 엔트리와 관련된 서비스 버전이 서비스 요청자로부터 수신된 서비스 요청과 관련된 요청된 서비스 버전과 매칭하는지 여부를 결정하는 단계; 및
상기 트랜잭셔널 서비스 제공자를 통해, 상기 서비스 요청자로 하여금 상기 서비스 엔트리에 액세스하도록 하는 단계를 수행하도록 하고,
상기 서비스 엔트리는 상기 서비스 요청과 관련된 상기 요청된 서비스 버전과 매칭하는, 명령어들이 저장된 비일시적인 기계 판독가능한 저장 매체. - 컴퓨터로 하여금 제1항 내지 제10항 중 어느 한 항에 기재된 방법을 구현하도록 하는 프로그램.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261659307P | 2012-06-13 | 2012-06-13 | |
US61/659,307 | 2012-06-13 | ||
US13/915,495 | 2013-06-11 | ||
US13/915,482 US10291486B2 (en) | 2012-06-13 | 2013-06-11 | System and method for supporting implicit versioning in a transactional middleware machine environment |
US13/915,482 | 2013-06-11 | ||
US13/915,495 US10263854B2 (en) | 2012-06-13 | 2013-06-11 | System and method for supporting version based routing in a transactional middleware machine environment |
PCT/US2013/045723 WO2013188697A1 (en) | 2012-06-13 | 2013-06-13 | System and method for supporting version based routing in a transactional middleware machine environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150023335A true KR20150023335A (ko) | 2015-03-05 |
KR102103493B1 KR102103493B1 (ko) | 2020-04-23 |
Family
ID=49775383
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147033885A KR102103493B1 (ko) | 2012-06-13 | 2013-06-13 | 트랜잭셔널 미들웨어 기계 환경에서 버전 기반 라우팅을 지원하는 시스템 및 방법 |
KR1020147034348A KR102072727B1 (ko) | 2012-06-13 | 2013-06-13 | 트랜잭셔널 미들웨어 머신 환경에서 묵시적 버저닝을 지원하기 위한 시스템 및 방법 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147034348A KR102072727B1 (ko) | 2012-06-13 | 2013-06-13 | 트랜잭셔널 미들웨어 머신 환경에서 묵시적 버저닝을 지원하기 위한 시스템 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10263854B2 (ko) |
KR (2) | KR102103493B1 (ko) |
CN (2) | CN104272258B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016001733A1 (de) | 2015-02-16 | 2016-08-18 | Mando Corporation | Erweitertes Notbremssystem und Verfahren zur Steuerung und Regelung eines Bremsens davon |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262150B2 (en) * | 2012-09-22 | 2016-02-16 | Avaya Inc. | Services versioning |
US9325624B2 (en) * | 2013-11-12 | 2016-04-26 | Twilio, Inc. | System and method for enabling dynamic multi-modal communication |
US9519509B2 (en) * | 2014-10-21 | 2016-12-13 | Oracle International Corporation | System and method for supporting transaction affinity based request handling in a middleware environment |
US10284646B2 (en) | 2014-12-17 | 2019-05-07 | International Business Machines Corporation | Application multi-versioning in a traditional language environment |
US10447103B2 (en) | 2015-06-28 | 2019-10-15 | Linear Labs, LLC | Multi-tunnel electric motor/generator |
US10476362B2 (en) | 2015-06-28 | 2019-11-12 | Linear Labs, LLC | Multi-tunnel electric motor/generator segment |
US9736259B2 (en) * | 2015-06-30 | 2017-08-15 | Iheartmedia Management Services, Inc. | Platform-as-a-service with proxy-controlled request routing |
US10305731B2 (en) | 2015-07-07 | 2019-05-28 | Oracle International Corporation | System and method for provisioning cloud services across heterogeneous environments using partitioned provisioning instructions stored on a configuration management server |
US10530892B2 (en) * | 2015-09-28 | 2020-01-07 | Microsoft Technology Licensing, Llc | Processing request for multi-versioned service |
US20170228252A1 (en) * | 2016-02-10 | 2017-08-10 | Qualcomm Incorporated | System and method for multi-tile data transactions in a system on a chip |
US10353750B2 (en) | 2017-03-03 | 2019-07-16 | International Business Machines | Discovery and exposure of transactional middleware server-based applications as consumable service endpoints |
CN108628642B (zh) * | 2017-03-20 | 2021-07-30 | 北京京东尚科信息技术有限公司 | 切换系统的版本的方法和装置以及存储介质 |
CN110704295B (zh) * | 2018-07-10 | 2023-04-11 | 阿里巴巴集团控股有限公司 | 一种数据调用方法、装置、设备及系统 |
US11755311B1 (en) | 2023-02-15 | 2023-09-12 | Snowflake Inc. | Versioned schema |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050057910A (ko) * | 2003-12-11 | 2005-06-16 | (주)엠엑스텐 | 실시간 트랜잭션을 지원하는 모바일 미들웨어 시스템 및모바일 비즈니스 방법, 그리고 모바일 비즈니스 개발 지원방법 |
US20060161563A1 (en) * | 2004-11-18 | 2006-07-20 | Besbris David G | Service discovery |
US7506336B1 (en) * | 2005-06-29 | 2009-03-17 | Emc Corporation | System and methods for version compatibility checking |
US20090296711A1 (en) * | 2008-05-30 | 2009-12-03 | International Business Machines Corporation | Affinity-based transaction processing |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212557B1 (en) * | 1990-01-29 | 2001-04-03 | Compaq Computer Corporation | Method and apparatus for synchronizing upgrades in distributed network data processing systems |
US5572675A (en) * | 1991-05-29 | 1996-11-05 | Alcatel N.V. | Application program interface |
US20080281969A1 (en) * | 2000-12-15 | 2008-11-13 | Horton John C | Controlling access to versions of application software by a server, based on site ID |
US7478148B2 (en) | 2001-01-16 | 2009-01-13 | Akamai Technologies, Inc. | Using virtual domain name service (DNS) zones for enterprise content delivery |
FI20010828A (fi) * | 2001-04-23 | 2002-10-24 | Nokia Corp | Erilaisten palveluversioiden käsitteleminen palvelimessa |
WO2004054152A1 (en) * | 2002-12-09 | 2004-06-24 | Bea Systems, Inc. | System and method for single security administration |
US7277453B2 (en) * | 2003-05-30 | 2007-10-02 | Motorola, Inc. | Inter private network communications between IPv4 hosts using IPv6 |
WO2005010650A2 (en) | 2003-07-03 | 2005-02-03 | Ebay Inc. | Method and system for managing data transaction requests |
US8135759B2 (en) * | 2003-08-07 | 2012-03-13 | Teamon Systems, Inc. | Communications system including protocol interface device for use with multiple operating protocols and related methods |
CN100432998C (zh) | 2003-08-07 | 2008-11-12 | 蒂蒙系统公司 | 包括使用多种操作协议的协议接口设备的通信系统及相关方法 |
US7124062B2 (en) * | 2003-12-30 | 2006-10-17 | Sap Ag | Services search method |
US7797698B2 (en) | 2004-11-17 | 2010-09-14 | International Business Machines Corporation | Method and apparatus for dynamic middleware assembly |
KR100894813B1 (ko) | 2004-12-23 | 2009-04-24 | 에스지어드밴텍(주) | 특정 프로그램의 효율적 자동 배포 및 설치를 위한 네트워크 배포 영역의 피어-투-피어(Peer To Peer) 분산 방법 및 시스템 |
US20060155857A1 (en) | 2005-01-06 | 2006-07-13 | Oracle International Corporation | Deterministic session state management within a global cache array |
AU2006302674A1 (en) | 2005-10-07 | 2007-04-19 | Citrix Systems, Inc. | Methods for selecting between a predetermined number of execution methods for an application program |
US7779034B2 (en) | 2005-10-07 | 2010-08-17 | Citrix Systems, Inc. | Method and system for accessing a remote file in a directory structure associated with an application program executing locally |
US7783666B1 (en) * | 2007-09-26 | 2010-08-24 | Netapp, Inc. | Controlling access to storage resources by using access pattern based quotas |
US8117317B2 (en) | 2008-12-31 | 2012-02-14 | Sap Ag | Systems and methods for integrating local systems with cloud computing resources |
US8301717B2 (en) | 2009-06-09 | 2012-10-30 | Deshpande Enterprises, Inc. | Extended virtual memory system and method in a computer cluster |
US8543676B2 (en) | 2009-06-16 | 2013-09-24 | International Business Machines Corporation | Delegated resource use in a content based routing environment |
CN101977220B (zh) | 2010-10-14 | 2015-06-03 | 中兴通讯股份有限公司 | 一种功能子系统间不同版本功能模块的匹配方法及装置 |
US9391949B1 (en) | 2010-12-03 | 2016-07-12 | Amazon Technologies, Inc. | Request routing processing |
-
2013
- 2013-06-11 US US13/915,495 patent/US10263854B2/en active Active
- 2013-06-11 US US13/915,482 patent/US10291486B2/en active Active
- 2013-06-13 KR KR1020147033885A patent/KR102103493B1/ko active IP Right Grant
- 2013-06-13 CN CN201380024077.6A patent/CN104272258B/zh active Active
- 2013-06-13 KR KR1020147034348A patent/KR102072727B1/ko active IP Right Grant
- 2013-06-13 CN CN201380024093.5A patent/CN104272259B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050057910A (ko) * | 2003-12-11 | 2005-06-16 | (주)엠엑스텐 | 실시간 트랜잭션을 지원하는 모바일 미들웨어 시스템 및모바일 비즈니스 방법, 그리고 모바일 비즈니스 개발 지원방법 |
US20060161563A1 (en) * | 2004-11-18 | 2006-07-20 | Besbris David G | Service discovery |
US7506336B1 (en) * | 2005-06-29 | 2009-03-17 | Emc Corporation | System and methods for version compatibility checking |
US20090296711A1 (en) * | 2008-05-30 | 2009-12-03 | International Business Machines Corporation | Affinity-based transaction processing |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016001733A1 (de) | 2015-02-16 | 2016-08-18 | Mando Corporation | Erweitertes Notbremssystem und Verfahren zur Steuerung und Regelung eines Bremsens davon |
Also Published As
Publication number | Publication date |
---|---|
CN104272258B (zh) | 2018-06-05 |
CN104272258A (zh) | 2015-01-07 |
KR102072727B1 (ko) | 2020-03-02 |
US10291486B2 (en) | 2019-05-14 |
US10263854B2 (en) | 2019-04-16 |
US20130346607A1 (en) | 2013-12-26 |
CN104272259B (zh) | 2018-01-02 |
KR102103493B1 (ko) | 2020-04-23 |
CN104272259A (zh) | 2015-01-07 |
KR20150023354A (ko) | 2015-03-05 |
US20140033190A1 (en) | 2014-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102103493B1 (ko) | 트랜잭셔널 미들웨어 기계 환경에서 버전 기반 라우팅을 지원하는 시스템 및 방법 | |
US11385939B2 (en) | Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment | |
KR102059251B1 (ko) | 노드 시스템, 서버 장치, 스케일링 제어 방법 및 프로그램 | |
US8010651B2 (en) | Executing programs based on user-specified constraints | |
US9015177B2 (en) | Dynamically splitting multi-tenant databases | |
US20120102480A1 (en) | High availability of machines during patching | |
US9262148B2 (en) | Modular architecture for distributed system management | |
US11870842B2 (en) | System and method for dynamic auto-scaling based on roles | |
JP2005524147A (ja) | 分散形アプリケーションサーバおよび分散された機能を実施するための方法 | |
US20120102220A1 (en) | Routing traffic in an online service with high availability | |
WO2022007908A1 (zh) | 网元设备间业务协同的方法和网元设备 | |
US12073258B2 (en) | Configuration map based sharding for containers in a machine learning serving infrastructure | |
US20190097895A1 (en) | System and method for dynamic auto-scaling based on roles | |
US10129084B1 (en) | Centralized parameter management system | |
US11656957B1 (en) | Managing nodes of a DBMS | |
WO2013188697A1 (en) | System and method for supporting version based routing in a transactional middleware machine environment | |
CN111221620A (zh) | 存储方法、装置及存储介质 | |
CN117009063A (zh) | 一种任务执行方法和装置 | |
WO2018120222A1 (zh) | 一种管理vnffg的方法、装置和系统 | |
US12073263B1 (en) | Dynamic processing of API requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |