KR101548003B1 - 서비스 지향 파이프라인 기반 아키택쳐 - Google Patents

서비스 지향 파이프라인 기반 아키택쳐 Download PDF

Info

Publication number
KR101548003B1
KR101548003B1 KR1020107006786A KR20107006786A KR101548003B1 KR 101548003 B1 KR101548003 B1 KR 101548003B1 KR 1020107006786 A KR1020107006786 A KR 1020107006786A KR 20107006786 A KR20107006786 A KR 20107006786A KR 101548003 B1 KR101548003 B1 KR 101548003B1
Authority
KR
South Korea
Prior art keywords
plug
budget
service
pipeline
child
Prior art date
Application number
KR1020107006786A
Other languages
English (en)
Other versions
KR20100075458A (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 KR20100075458A publication Critical patent/KR20100075458A/ko
Application granted granted Critical
Publication of KR101548003B1 publication Critical patent/KR101548003B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Abstract

기존의 기능을 확장 또는 추가적인 기능을 제공하기 위한 제3자 확장을 수용하는(accomodate) 파이프라인 아키텍쳐를 이용하는 서비스 지향 시스템이 제공된다. 사용자 또는 제3자에 의해서 제공된 플러그인은 메타데이터를 통해 등록되며 플랫폼 작업과 함께 파이프라인에서 실행된다. 파이프라인은 새롭게 업로드된 플러그인으로 즉시 확장가능하다. 동기식 또는 비동기식 파이프라인 작업에 순서를 정하기 위한 의존성 분석은 복수의 주체가 시스템을 확장하게 하는 것을 가능하게 하고 작업을 예측가능하게 하는 것을 가능하게 한다. 넌디제너렛 무한 루프에 대한 예외를 갖는 루프 감지 메커니즘은 실수 또는 고의로 생성된 무한 루프로 인한 시스템 리소스의 오(誤)사용을 방지한다.

Description

서비스 지향 파이프라인 기반 아키택쳐{SERVICE-ORIENTED PIPELINE BASED ARCHITECTURE}
본 발명은 컴퓨터 기술에 관한 것으로 더 구체적으로는 서비스 지향 파이프라인 기반 아키택쳐에 관한 것이다.
공유된 하드웨어(멀티 테넌트 시스템(multi-tenant system)으로 지칭됨)상에서 다양한 어플리케이션에 의해 다수의 고객들이 서비스를 받는 호스팅 서비스(hosted services)가 점차 일반화되고 있다. 호스팅 서비스는 복수의 서비스를 하나의 클라이언트에게 제공하거나 같은 종류의 서비스를 다수의 클라이언트에 제공할 수 있다. 위와 같은 호스팅 서비스는 상당한 복합 시스템일 수 있다. 복합 호스팅 서비스 시스템의 대표적인 예는 웹에 기반한 고객 관계 관리(Customer Relationship Management; CRM) 서비스이다.
일반적으로 호스팅 컴퓨터 어플리케이션 환경(hosted computer application environment)에서 CRM 솔루션은 고객과의 첫 접촉부터 구매와 사후 판매(post-sales)에 이르기까지의 고객에 대한 전체적인 정보를 유지하고 생성하는데 필요한 도구를 제공한다. 마케팅과 판매 조직들이 새로운 고객을 목표대상으로 정하게 하고, 마케팅 캠페인을 관리하고, 판매활동을 추진하는 것을 개선하기 위하여 CRM 시스템은 복합적인 테넌트를 위하여 다양한 기능과 가능성을 제공할 수 있다. CRM 시스템은 다수의 구성요소, 하드웨어, 및 소프트웨어를 포함할 수 있으며, 테넌트에 대해서 내부 또는 외부에 있는 사용자가 이를 개별적 또는 공유의 형태로 이용할 수 있다.
호스팅 CRM 서비스와 같은 복합 시스템은 클라이언트 요구에 응답하여 일련의 작업들을 수행해야 하는 필요성이 있다. 이러한 작업들은 동기식(synchronous) 또는 비동기식(asynchronous)일 수 있고 순서 의존적일 수 있으며 이질적인 주체(disparate parties)에 의해서 구현될 수 있다. 그러한 시스템을 구현하고자 할 때 당면하는 문제점은 복합적인 시스템을 관리해야 한다는 것이며, 특히 제3의 공급자(third party providers)가 추가적인 작업을 덧붙이는 경우가 이에 해당한다. 이러한 문제는 제3자에 의한 확장(third party extensions)이 서비스 공급자에 의해서 전적으로 신뢰를 얻지 못하는 사스(Software as a Service; SaaS) 어플리케이션에서 더 악화된다.
본 요약은 하기의 상세한 설명 부분에서 더 자세하게 설명될 여러 개념(selection of concepts)들을 간단한 형태로 소개하기 위해 제공된다. 본 요약은 특허청구범위에 청구된 청구 대상의 주요한 특징(features)이나 본질적인 특징을 알아보기 위한 의도로 작성되었다거나 특허청구범위에 청구된 청구 대상의 권리범위를 판단하는데 도움을 주기 위한 의도로 작성된 것은 아니다.
본 명세서의 실시예들은 파이프라인 아키택쳐를 이용한 호스팅 서비스를 제공하기 위한 실시예들이다. 기존의 기능을 확장하거나 또는 추가적인 기능을 제공하기 위한 제3자 확장(third party extensions)을 위한 정보는 메타데이터를 통해 등록되며 이러한 정보는 플랫폼 작업(platform operations)과 파이프라인에서 순차적으로(serially) 실행되는데, 이때 시스템 기능(system functionality) 및 사용자 정의 기능(custom functionality)이 대등하게 다루어지도록(treated symmetrically) 작업의 순서 및 각 작업의 단계가 메타 데이터를 통해서 교환된다. 실수 또는 고의로 생성한 무한 루프로(infinite loop) 인한 시스템 리소스의 오(誤)사용을 방지하기 위해 루프 감지 메커니즘(loop detection mechanisms)이 사용될 수 있다.
이러한 기타 특징 및 장점들은 발명의 상세한 설명과 관련 도면의 검토를 통하여 명백하게 알 수 있다. 앞서 기술한 일반적인 설명과 후술할 상세한 설명은 단지 설명의 목적으로만 제시된 것이며 첨부된 특허청구범위를 제한하지 않는다.
도 1은 멀티 테넌트 서비스 시스템 아키택쳐의 예를 도시하는 도면.
도 2는 파이프라인 아키택쳐를 갖는 서비스 지향 시스템의 주요 구성요소를 도시하는 도면.
도 3은 파이프라인 아키택쳐를 갖는 서비스 지향 시스템(CRM)의 예를 도시하는 도면.
도 4는 실시예가 구현될 수 있는 네트워크 환경의 예를 도시하는 도면.
도 5는 실시예가 구현될 수 있는 컴퓨팅 작업 환경의 예를 도시하는 블록도.
도 6은 파이프라인 아키택쳐를 갖는 서비스 지향 시스템에서의 작업 관리 프로세스를 도시하는 논리 흐름도.
도 7은 파이프라인 아키택쳐를 갖는 서비스 지향 시스템에서의 루프 감지 프로세스를 도시하는 논리 흐름도.
상기에서 간단하게 설명한 바와 같이, 파이프라인 아키택쳐는 제3자 플러그인 기능(third party plug-in functionality)의 관리를 위해 서비스 지향 시스템에서 구현될 수 있다. 후술할 발명의 상세한 설명에서는 참조도면에 나타난 발명의 내용이 구체적인 실시예와 함께 상세히 설명될 것이다. 이러한 발명의 실시예는 결합되어 나타날 수 있고, 발명의 실시예의 일부 특징만이 이용될 수도 있으며 본 발명의 사상과 범위를 벗어나지 않는 한도 내에서 구조적인 변화도 가해질 수 있다. 따라서 후술할 발명의 상세한 설명에 의해서 발명의 범위가 제한되는 것으로 해석되어서는 아니되며, 본 발명의 범위는 첨부된 특허청구범위 및 그것의 균등 범위에 의해서 해석되어야 할 것이다.
한편 본 발명의 실시예는 개인 컴퓨터의 운영체제에서 실행되는 어플리케이션 프로그램과 함께 실행되는 프로그램 모듈과 관련해서 설명될 것이지만, 해당 분야의 당업자는 본 발명이 다른 프로그램 모듈과 결합해서도 구현될 수 있다는 것을 인식할 수 있을 것이다.
일반적으로 프로그램 모듈은 루틴, 프로그램, 구성요소, 데이터 구조, 및 특정 작업을 수행하거나 특정 추상적 데이터 타입(abstract data type)을 구현하기 위한 기타 구조를 포함한다. 더 나아가, 당업자는 본 발명의 실시예가 소형 기기(hand-held devices), 멀티프로세서 시스템, 마이크로프로세서를 기반으로 하는 전자기기 또는 프로그래밍가능 전자 기기, 미니 컴퓨터, 중앙 컴퓨터(mainframe computers), 및 기타 유사 기기와 같은 컴퓨터 시스템 구성에 의해서 발명이 실시될 수 있음을 인식할 수 있다. 발명의 실시예는 통신 네트워크를 통하여 링크된 원격 처리 장치에 의해서 작업이 수행되는 분산 컴퓨팅 환경(distributed computing environments)에서도 실시될 수 있다. 분산 컴퓨팅 환경에서 프로그램 모듈은 로컬 메모리 저장 기기 또는 원격 메모리 저장 기기 모두에 위치할 수 있다.
발명의 실시예는 컴퓨터 프로세스(방법), 컴퓨팅 시스템, 컴퓨터 프로그램 제품 또는 컴퓨터 판독가능 매체와 같은 제조물로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능한 컴퓨터 저장 매체와 컴퓨터 프로세스를 실행하기 위하여 컴퓨터 프로그램의 명령어를 인코딩한 것일 수 있다. 컴퓨터 프로그램 제품은 컴퓨팅 시스템에 의해서 판독가능한 캐리어의 전파 신호(propagated signal)와 컴퓨터 프로세스를 실행하기 위하여 컴퓨터 프로그램의 명령어를 인코딩한 것일 수 있다.
도 1에는 멀티 테넌트 서비스 시스템 아키택쳐의 도면(100)이 도시되어 있다. 일반적인 멀티 테넌트 시스템에서, 다른 테넌트와 관련이 되어 있는 사용자는 테넌트의 구체적 정보(tenant-specific information)가 관련된 동기식 및 비동기식 작업을 수행하는 서비스에 특정 작업을 요청할 수 있다.
상기에서 설명된 바와 같이, 호스팅 서비스는 다양한 어플리케이션과 공유된 하드웨어상의 수 많은 고객 사이의 상호작용을 다양한 기본 기능 및 사용자 정의 기능(default and customized functionality)을 통하여 용이하게 한다. 예를 들어, 고객 관계 관리(CRM) 서비스는 각각의 테넌트에 보안 기능과 사용자 정의 기능(security and custom functionality)을 제공하면서 동시에 복수의 테넌트와 관련된 사용자가 기록, 점검(follow-up), 분석, 및 콘택트를 처리(process contacts), 세일즈 리드(sales leads) 등을 가능하게 한다. 소위 사스(SaaS) 어플리케이션을 위한 일부 사용자 정의(또는 기본) 기능은 코어 플랫폼 작업(core platform operations)과 함께 등록되고 실행되는 제3자 확장 또는 플러그인의 형태로 제공될 수 있다.
일반적인 호스팅 서비스 환경에서, 중복되는 웹 서비스 서버(112)의 그룹은 테넌트 데이터 저장소(114)와 함께 서비스를 이용하는 개별적인 테넌트와 관련된 데이터를 저장하고 처리한다. 추가 서비스(116)도 다른 그룹의 서버 및/또는 데이터 저장소를 통해 제공될 수 있다. 예를 들어, 분산 최적화 시스템 성능(distributed manner optimizing system performance)내의 다른 그룹의 서버에 의해 동기식 및 비동기식 프로세스가 수행될 수 있다.
독립적인 동기식 및 비동기식 프로세스의 분배, 서버 및 데이터 베이스간의 상호작용을 이용함으로써 호스팅 서비스 그룹의 임의의 부분도 확장 가능하게 만들 수 있다. 따라서, 서버(및/또는 데이터베이스)의 복수의 인스턴스는 증가된 부하작업, 추가적인 테넌트, 데이터 용량 등을 처리하기 위해 제공될 수 있다.
작업 중에 호스팅 서비스는 사용자(102)로부터 입력 데이터(예를 들어, CRM 서비스의 새로운 콘택트 정보) 및 프로세스 요청을 수신한다. 사용자(102)는 호스팅 서비스를 사용자 정의에 맞추기 위한 사용자 어플리케이션, 도구, 및/또는 플러그인(104)의 개별적인 시스템과 관련될 수 있다. 개별적인 시스템과 관련된 데이터는 사용자 데이터 저장소(106)에 저장될 수 있다. 사용자(102)는 추가 기능 또는 사용자 정의 기능을 위하여 호스팅 서비스에 확장(플러그인)을 제공할 수 있으며, 상기 플러그인은 코어 플랫폼 작업과 함께 등록되고 실행된다. 일부 실시예에 따르면, 그러한 플러그인은 추가 기능을 제공할 뿐만 아니라 기존의 서비스의 기본 기능을 확장하기도 한다.
사용자(102)는 스스로 플러그인을 제공하거나 호스팅 서비스에 의해 등록될 제3자(도시되지 않음)로부터 플러그인을 요구할 수 있다. 위와 같은 시나리오에서 호스팅 서비스는 플랫폼에 플러그인을 등록시키기 위해 제3자 공급자와 직접적으로 상호작용할 수 있다. 더 나아가, 제3자 공급자는 사용자(테넌트)의 요청에 의해 호스팅 서비스에 접촉하여 하나 이상의 확장을 등록하고 호스팅 서비스에 제공된 플러그인이 진정으로 사용자에 의해서 요청된 것임을 보장하는 신임을(credentials) 제공한다.
이러한 복잡한 상호작용은 서비스로 하여금 작업의 무결성과 사용자 데이터의 보안을 제어하도록 하는 결과를 가져올 것이다. 모든 제3자 공급자가 신뢰할 수 있는 소스가 될 수 있는 것은 아니며, 서비스 플랫폼과 플러그인(들)과 관련한 호환성 문제가 있을 수 있으며, 서비스의 작업 구조(operational structure) 내에 플러그인을 통합시키는 것이 단순한 작업이 아닐 수 있다.
일부 실시예에 따르면, 플러그인 기능을 가지며 파이프라인 아키텍쳐에 기반한 유연성 및 확장성을 가진 플랫폼은 클라이언트의 요청에 응답하여 순차적으로 실행될 수 있다. 요청 객체(request object)는 파라미터로서 각각의 파이프라인 내의 플러그인에 전달될 수 있으며, 각각의 플러그인은 응답 객체(response object)를 생성 또는 조정할 수 있다. 플러그인 사이에 데이터를 전송하기 위하여 임의의 상태(Arbitrary state)도 파이프라인을 통해 전달될 수 있다.
도 2는 파이프라인 아키텍쳐를 갖는 서비스 지향 시스템의 주요 구성요소를 도시하고 있다. 실시예에 따른 시스템은 클라이언트의 요청에 따라 플러그인 기능을 이용하여 유연성 및 확장성을 가지는 플랫폼을 정의하는 파이프라인 아키텍쳐를 이용할 수 있다. 응답 객체는 파이프라인 내의 각각의 플러그인에 파라미터로서 전달되며, 이들 파라미터는 응답 객체를 생성하거나 조정할 수 있다. 만약에 2개의 클라이언트 요청이 동일한 파이프라인과 작업한다면 그들의 성향은 동일할 것이다. 그러한 시스템에 테스팅될 매트릭스의 경우(the matrix of cases)는 하드 코드 성향(hard-code behavior)에 의한 시스템과 비교했을 때보다 감소할 것이다.
일 실시예에 따른 시스템에서, 클라이언트의 요청에 응답하여 실행되어야 하는 동작의 순서들이(sequence of actions) 파이프라인 구성에 의해 나타난다. 파이프라인 내에서의 동작의 순서는 의존성 그래프 분석(dependency graph analysis)을 통해서 판단할 수 있다. 파이프라인 구성에서 "플러그인"의 등록을 통하여 시스템의 재컴파일 없이도 새로운 동작들을 구성할 수 있다. 이렇게 함으로써, 새로운 기능이 추가될 수 있고 기존의 기능이 수정될 수 있으며, 역동적이고 확장가능한 실행 모델이 형성될 수 있다. 더 중요하게는, 파이프라인 구성은 실제 플러그인 코드 모듈(actual plug-in code module)은 물론 실행되어야 하는 동작의 순서를 정의하는 의존성 정보(dependency information)를 포함한다.
서비스 지향 파이프라인 아키텍쳐에서의 동작도 비동기식일 수 있는데, 이 경우 파이프라인의 상태는 프로세스되기 위해 저장되고 복원될 수 있다. 따라서, 비동기식 동작은 응답에 영향을 줄 수 없다. 일부 실시예에 따르면, 현재의 파이프라인 구성과 일관된 클러스터 기반 시스템은 플러그인 구성(플러그인 코드를 포함함)을 중심에 저장할(stored centrally) 수 있게 한다.
일 실시예에 따르면, 서비스 지향 아키텍쳐는 파이프라인 아키텍쳐 시스템의 호출(invocation)을 위한 프론트 엔드(front end)로서 구현될 수 있다. 그런 다음에 파이프라인 구성(플러그인 코드를 포함함)은 서비스 지향 시스템의 어플리케이션 프로그래밍 인터페이스(Application Programming Interface; API)를 통하여(예를 들어, 웹 서비스를 통하여) 구성될 수 있다. 플러그인 실행(Plug-in execution)은 플러그인의 작성자가 누구냐에 따라 (예를 들어 코드 사이닝(code signing)에 의해 판단됨) 플러그인을 위하여 제한된 트러스트(trust)를 실시하기 위하여 관리 실행 환경(managed execution environment)을 이용할 수 있다.
실시예에 따른 서비스 지향 시스템을 위한 플러그인을 형성하기 위하여 설계자들은 호출되어야 할 플러그인 코드를 통하여 인터페이스를 설계할 수 있다. 플러그인을 호출할 때에 시스템은 파이프라인의 현재 상태와 함께 콘텍스트 객체(context object)를 전달할 수 있다. 이 콘텍스트 객체로부터 플러그인은 추가적인 시스템 기능이 실행될 수 있는 인터페이스를 획득할 수 있다.
도면에 나타난 바와 같이, 웹 서비스(212)는 사용자 요청을 처리하기 위하여 어플리케이션(222), 도구(224), 및 작업흐름(비즈니스 프로세스; 226)과 상호작용한다. 추가적으로, 웹 서비스(212)는 사용자 정의 동작(user-defined actions)을 수행하기 위해 사용자 플러그인(예를 들어 231, 232, 235, 236)을 수신한다. 플러그인을 통한 사용자 정의 동작은 사용자 정의에 의한 기존의 기능의 확장 또는 기존의 기능과 유사한 신기능을 포함할 수 있다. 플러그인은 메타데이터를 통하여 API에 등록되며, 여기에는 플러그인(예를 들어, 다른 플러그인이 활성화되기 전에 작업이 취소되거나 완료된 경우 등)의 순서나 단계가 포함될 수 있다. 플러그인은 그런 다음에 플랫폼 작업(234)과 함께 실행(파이프라인(230)에 의해 실행)되는데 메타데이터에 의해 정의된 등록의 순서에 따라 일부는 그 이전에(예를 들어, 231, 232), 일부는 그 이후에(예를 들어, 235, 236) 실행된다.
예시적인 시나리오에서, 하나의 플러그인은 새로운 정보가 추가되거나 기존의 정보가 수정(삭제)됨에 따라 콘택트 정보를 업데이트하도록 구성될 수 있으며 한편, 첫 번째 플러그인과 연속하여 실행되는 다른 플러그인은 사용자의 콘택트 기록을 첫 번째 플러그인에 의해 수행된 업데이트에 기반하여 감사(audit)하는데에 이용된다. 실시예에 따른 시스템에서, 플러그인은 유연성 및 확장성을 가진 시스템을 가능하게 하는 트랜잭션 경계(transaction boundary)를 스스로 정의할 수 있는 능력이 부여된다. 플러그인은 연속하여 또는 병행하여(series or in parallel) 실행될 수 있다. 실시예는 특정 실행 방법에 의해 제한되지 않는다.
상기에서 언급된 바와 같이, 실시예에 따른 시스템은 개별적인 서버 및 프로세스 호스트(예를 들어, 비동기식 프로세스 호스트(processing host))의 복수의 인스턴스를 포함할 수 있다. 긴 실행 요청은(long running requests) 나중에 처리되기 위해 개별적인 서버에 의해 대기하게 되는 신뢰할 수 있는 프로세스의 큐(reliable queue of the processes)를 구현함에 따라 각각의 서버 클러스터는 독립적으로 스케일링(scaled) 될 수 있다.
심지어 관리 실행 환경하에서도 이런 플러그인으로부터 시스템 성향을 호출할 수 있는 능력은 무한 루프의 가능성을 존재하게 한다. 이는 시스템의 성능의 저하로 이어질 수 있으며 특히, 멀티 테넌트 시스템 내의 다른 테넌트의 경우에 위와 같은 결과가 나타날 수 있다. 이러한 루프는 실수 또는 고의로 무한한 양의 데이터를 생성하는 디제너렛 루프(degenerate loop) 또는 무한하지만 디제너렛이 아닌(예를 들어, 불확정적 기간 동안 1년에 한 번씩 처리되어야 하는 생일 알림(birthday reminders)) 넌디제너렛 루프(non-degenerate loop)를 포함할 수 있다. 이러한 루프를 종료(또는 제어)시키기 위하여, 클라이언트 요청이 수신되었을 때 기본 "예산(budget)" 및 상관 구분자(correlation id)를 설정하도록 할 수 있다. 플러그인 내에서 시스템 메소드(system method)를 호출할 때 상관 구분자(correlation identifier) 및 예산의 부분(portion of the budget)이 전달될 수 있다. 차일드 호출(child invocation)이 불충분한 예산을 가지는 경우 루프를 종료시킬 때 에러가 발생하는 결과가 나타날 수 있다.
실시예에 따른 시스템은 차일드 작업(child operations) 중에 분배되는 설정된 예산(set budget)에 대하여 각각의 작업에 비용(cost)을 할당한다. 따라서, 호출자(caller)에 의해서 독립적으로 시작된 동작이 그 동작 이전에 연관된 콘텍스트(context)가 없는 동작인 경우 및 물려받은 콘텍스트를 갖는 다른 동작(예를 들어, 차일드 동작(child action))의 결과로 나타난 동작인 경우에는 호출자와 연관된 작업을 위한 계정을 이용하여 추적할 수 있다. 예를 들어, 사용자는 웹 서비스를 통하여 새로운 계정을 생성하기 위하여 호출을 할 수 있으며 그 계정의 생성은 플러그인으로 하여금 작업(task)을 생성하는 호출을 촉발(invoke)하게 할 수 있다. 작업을 생성하기 위한 호출에는 원래 계정의 생성으로부터 물려받은 콘텍스트가 포함된다. 새 계정이 생성되는 시기와 그 계정을 위해 작업이 수행될 때마다 예산이 설정될 수 있으며 새로운 계정이 생성된다면 예산은 감소할 것이다. 또 다른 실시예에 따르면, 무한 루프를 종료시키기 위하여 깊이 파라미터(depth parameter)가 이용될 수 있다. 작업의 수(칠드런; children)는 초기에 설정될 수 있으며 추가적인 작업이 수행(칠드런 생성)됨에 따라 증가할 수 있다. 초기에 설정된 깊이 제한(set depth limit)에 도달한 경우, 루프는 종료된다.
다른 실시예에 따르면, 생일 알림 전까지 1년 동안 활동을 정지하도록 시간 작동이 된 비동기식 사건과 같이 넌디제너렛한 무한 루프를 허용하기 위하여 예산을 시간에 기반하여 재설정하는 것이 이용될 수 있다. 작업 순서에 사전 정의된 지연이 있는 경우에 시스템은 예산 또는 깊이를 재설정할 수 있다. 그럼에도 다른 실시예에서는 무한 루프 감지 및 종료에서의 유한 트리 구조(finite tree structured)를 갖는 작업(칠드런)을 위한 예외를 이용한다. 예를 들어, 지역 계정(regional account)을 생성하는 것은 동일하지 않을 수 있으며(각각의 주는 다양한 수의 판매 지역이 있다) 이는 결과적으로 유한 트리 구조를 낳는다. 예산에 기반한 루프 감지 알고리즘은 예산(또는 깊이)이 모든 칠드런에게 고정된 방식으로 분배된다면 작업을 종료시키도록 시도할 수 있다. 시스템은 그러한 유한 트리 구조의 경우에 루프 감지가 수행될 때 이를 제외시키고 수행되도록 구성할 수 있다.
도 3은 파이프라인 아키텍쳐를 갖는 서비스 지향 시스템(CRM)의 예를 도시하고 있다. CRM 시스템은 고객들이 그들이 속해 있는 조직(테넌트), 논리적으로는 그들 자신의 CRM 데이터의 데이터베이스에 기록하는 멀티 테넌트 시스템의 한 예이다. 고객은 계정을 생성, 이메일을 전송, 또는 콘택트를 삭제하는 등의 요청을 할 수 있다. 이러한 요청은 서버의 클러스터에서 프로세스된다.
도 3에 도시된 시스템(300)의 예에서, 사용자에 의해 서비스가 사용자 정의되도록 허용하는 확장 기능 또는 대안 기능을 제공하는 플러그인(331, 332, 335, 336)과 함께 플랫폼 코어 작업(334)(기본 기능)을 실행시킴으로써 CRM 웹 서비스(312)는 사용자의 요청에 대한 프로세스를 한다. 플러그인은 CRM 실행 파이프라인(330)에서 순차적으로 실행되며 그들의 순서는 사용자(331, 332, 335, 336)에 의해서 정의될 수 있다. 일 실시예에 따르면, 코어 기능에 의해서 다루어지는 사전 처리 데이터(pre-processing data) 또는 사후 처리 데이터(post-processing data)를 위하여 플러그인은 사건 이전 작업(pre-event operations)과 사건 이후 작업(post-event operations)으로 그룹화될(grouped) 수 있으나 이러한 그룹화에 구애될 필요는 없다. 일 실시예에 따른 시스템에서 플러그인 및 코어 작업은 임의의 방식으로 그룹화 되거나 전혀 그룹화가 되지 않을 수 있다.
CRM 웹 서비스(312)는 특정 CRM 어플리케이션(322)과 상호작용하고, CRM 도구(324)를 이용하고, 비즈니스 프로세스를 CRM 작업흐름(326)으로서 저장할 수 있다. 일 실시예에 따르면, CRM 웹 서비스(312)는 사용자 요청을 전송하는 것으로서 활용될 수 있다. 표준 질문 언어(Structured Query Language; SQL) 데이터베이스와 같은 상관적인 데이터베이스(relational databse)는 파이프라인 구성의 저장소로서 이용될 수 있고 다른 데이터베이스는 플러그인 코드 모듈의 저장소로서 이용될 수 있다.
도 2 및 도 3에 나타난 서비스 지향 시스템 및 작업은 예시적 목적을 위하여 설명된 것이다. 멀티 테넌트 서비스에서 파이프라인 아키텍쳐를 이용하는 시스템은 추가적인 또는 보다 적은 구성요소를 이용하여 구현될 수 있고 본 명세서에서 설명된 원리를 이용하여 다른 설계를 통해서 구현될 수도 있다.
도 4는 실시예가 구현될 수 있는 네트워킹 환경에 대한 예를 도시한 것이다. 파이프라인 아키텍쳐를 이용하는 서비스 지향 시스템은 복수의 실제 클라이언트, 가상의 클라이언트, 및 서버에 분배되는 방식으로 구현될 수 있다. 이들은 하나 이상의 네트워크(예를 들어, 네트워크(들); 450)에 걸쳐 통신하는 복수의 노드를 이용하는 클러스터된 시스템(clustered systems) 또는 클러스터되지 않은 시스템(un-clustered systems)에서도 구현될 수 있다.
이런 시스템은 임의의 서버의 토폴로지(topology of servers), 클라이언트, 인터넷 서비스 공급자, 및 통신 매체를 포함할 수 있다. 또한 시스템은 정적 또는 동적 토폴로지를 포함할 수 있다. "클라이언트"라는 용어는 클라이언트 어플리케이션 또는 클라이언트 장치를 지칭할 수 있다. 멀티 테넌트 서비스에서 파이프라인 아키텍쳐를 구현하는 네트워크 시스템은 복수의 구성요소가 관련될 수 있으며 관련이 있는 구성요소들은 이 도면과 관련하여 설명될 것이다. 더 나아가, 실시예에 따른 시스템은 단일한 테넌트(single tenant)와 관련된 사용자를 위한 단일 테넌트 시스템(single-tenant system)일 수도 있다.
프로세스를 위한 요청은 사용자의 개별적인 클라이언트 장치(441-443)를 통해 전달될 수 있다. 사용자 자신 또는 (서버(444)를 통한)제3자 공급자는 확장된 또는 추가적인 기능을 위한 플러그인을 하나 이상의 서버(예를 들어, 서버(452))에 의해서 관리되는 파이프라인 아키텍쳐 서비스에 제공할 수 있다. 서비스는 하나 이상의 서버에서 구현될 수도 있다. 테넌트 데이터베이스는 데이터 저장소(458)에서 구현될 수 있다. 전용 데이터베이스 서버(예를 들어, 데이터베이스 서버(456))는 하나 이상의 그러한 데이터 저장소 내의 데이터 회수를 조정하고 저장하기 위해 이용될 수 있다.
네트워크(들)(450)는 기업 네트워크(enterprise network)와 같은 안전한 네트워크와 무선 개방 네트워크(wireless open network) 또는 인터넷과 같은 안전하지 않은 네트워크를 포함할 수 있다. 네트워크(들)(450)는 본 명세서에서 설명한 노드 사이의 통신을 지원한다. 예를 들어, 네트워크(들)(450)는 유선 네트워크 또는 직접 유선 접속(direct-wired connection)과 같은 유선 매체는 물론 어쿠스틱(acoustic), RF, 적외선 및 기타 무선 매체를 포함할 수 있지만 반드시 위의 예에 한정되는 것은 아니다.
컴퓨팅 장치, 어플리케이션, 데이터 저장소, 데이터 분배 시스템의 다양한 구성이 서비스 지향 시스템에서 파이프라인 아키텍쳐를 구현하기 위해 이용될 수 있다. 더 나아가, 도 4에서 설명된 네트워크 환경에 대한 예는 예시적인 목적을 위한 것일 뿐이다. 본 발명의 구현이 예시된 어플리케이션, 모듈, 또는 프로세스에 한정되는 것은 아니다.
도 5와 그와 관련된 설명은 실시예가 구현될 수 있는 적절한 컴퓨팅 환경에 대한 간단하고 일반적인 설명을 제공하기 위한 것이다. 도 5에는 컴퓨팅 장치(500)와 같은 컴퓨팅 작업 환경에 대한 블록도가 도시되어 있다. 일반적인 구성의 경우, 컴퓨팅 장치(500)는 파이프라인 아키텍쳐를 이용하는 서비스 지향 시스템과 관련한 서비스를 제공하는 서버일 수 있으며 일반적으로는 적어도 하나의 프로세스 유닛(502) 및 시스템 메모리(504)를 포함한다. 컴퓨팅 장치(500)는 프로그램을 실행하는데 협동하는 복수의 프로세스 유닛을 포함할 수 있다. 정확한 구성 및 컴퓨팅 장치의 종류에 따라, 시스템 메모리(504)는 (RAM과 같이)휘발성, (ROM, 플래시 메모리 등과 같이)비휘발성, 또는 이들 두 가지의 조합일 수 있다. 시스템 메모리(504)는 일반적으로 네트워크된 개인 컴퓨터의 작업을 제어하는데 적합한 운영 체제(505), 예를 들어 Redmond, Washington에 위치하는
Figure 112010019573976-pct00001
의 운영 체제
Figure 112010019573976-pct00002
를 포함한다. 시스템 메모리(504)는 프로그램 모듈(506), 웹 서비스(522), 및 플러그인(524)과 같은 하나 이상의 소프트웨어 어플리케이션을 포함한다.
웹 서비스(522)는 컴퓨팅 장치(500)와 연관된 클라이언트 어플리케이션에 데이터 및 프로세스 서비스를 제공하는 별개의 어플리케이션 또는 호스팅 서비스 어플리케이션의 통합 모듈(integral module)일 수 있다. 이전에 설명된 바와 같이,플러그인(524)은 특정 사용자 및/또는 작업을 위한 웹 서비스(522)의 작업을 사용자 정의에 적합하게 하는 추가적인 기능을 제공할 수 있다. 이러한 일반적인 구성은 도 5의 점선 라인(508) 내부에 구성요소가 도시되어 있다.
컴퓨팅 장치(500)는 추가적인 특징 또는 기능을 포함할 수 있다. 예를 들어, 컴퓨팅 장치(500)는 자기 디스크, 광학 디스크, 또는 테이프와 같이 추가적인 데이터 저장 장치(이동식 및/또는 고정식)를 포함할 수 있다. 이러한 추가적인 저장소는 이동식 저장소(509) 및 고정식 저장소(510)로서 도 5에 도시되어 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 기타 데이터와 같이 정보를 저장하기 위한 임의의 방법 또는 기술에 의해서 구현될 수 있는 휘발성 및 비휘발성, 이동식 및 고정식 매체를 포함할 수 있다. 시스템 메모리(504), 이동식 저장소(509), 및 고정식 저장소(510)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 기타 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 기타 매체 등 컴퓨팅 장치(500)에 의해서 접근 가능하고 원하는 정보를 저장할 수 있는 모든 매체를 포함할 수 있지만 위의 예에만 한정되는 것은 아니다. 이러한 모든 컴퓨터 저장 매체는 컴퓨팅 장치(500)에 포함될 수 있다. 컴퓨팅 장치(500)는 키보드, 마우스, 팬, 음성 입력 장치(voice input device), 터치 입력 장치(touch input device) 등의 입력 장치(들)(512)도 포함할 수 있다. 디스플레이, 스피커, 프린터 등의 출력 장치(들)(514)도 포함될 수 있다. 이러한 장치들은 당업계에서 잘 알려진 것들로서 본 명세서에서 길게 설명하지는 않을 것이다.
컴퓨팅 장치(500)는 컴퓨팅 장치가 기타 컴퓨팅 장치(518)와 통신을 가능하게 하는 통신 연결(communication connections; 516)을 포함할 수 있는데, 가령, 분산 컴퓨팅 환경에서의 인트라넷 또는 인터넷과 같은 무선 네트워크를 들 수 있다. 기타 컴퓨팅 장치(518)는 다른 서비스와 관련된 어플리케이션을 실행하는 서버(들) 또는 플러그인을 제공하는 제3자 공급자를 포함할 수 있다. 통신 연결(516)은 통신 매체의 한 예이다. 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 캐리어 웨이브(carrier wave)와 같은 변조된 데이터 신호 내의 데이터, 또는 기타 전송 메커니즘에 의해서 일반적으로 구현될 수 있으며 통신 매체는 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호가 하나 이상의 신호의 특성 세트(characteristics set)를 갖는 신호 또는 신호가 위와 같은 방식으로 변화하여 그 신호에 정보를 인코딩해야 하는 신호를 의미한다. 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체 및 어쿠스틱, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있으며 여기서 언급한 예에만 국한되는 것은 아니다. 본 명세서에서 사용된 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함한다.
특허청구범위에 청구된 대상에는 방법도 포함된다. 이러한 방법은 본 명세서에서 설명된 구조를 포함하는 다양한 방법에 의해서 구현될 수 있다. 한가지 방법은 본 명세서에서 설명된 장치의 종류에 의한 머신 작업(machine operations)이다.
또 다른 선택적인 방법은 방법의 하나 이상의 개별적인 작업이 작업의 일부를 수행하는 하나 이상의 인간 오퍼레이터와(human operators) 함께 수행되는 것이다. 이러한 인간 오퍼레이터는 상호간에 배치될(collocated) 필요는 없지만 각각은 프로그램의 한 부분(portion)을 수행하는 머신과 함께 있어야 한다.
도 6은 파이프라인 아키텍쳐를 갖는 서비스 지향 시스템에서의 작업을 관리하는 프로세스(600)에 대한 논리 흐름도를 도시한다. 예를 들어, 프로세스(600)는 호스팅 CRM 서비스의 한 부분으로서 구현될 수 있다.
프로세스(600)는 작업(602)으로부터 시작되며, 사용자에 의해 설계된 스키마(및/또는 작업)는 파이프라인 아키텍쳐 서비스로부터 수신된다. 스키마(및/또는 작업)는 사용자 또는 사용자에 의해서 권한을 부여받은 제3자에 의해서 제공되는 하나 이상의 플러그인과 관련되어 있다. 프로세스는 작업(602)에서 다음 단계의 작업(604)으로 진행된다.
작업(604)에서 스키마는 자동적으로 구성된다. 예를 들어 SQL 데이터베이스를 이용하는 CRM 시스템에서 SQL 데이터(질의; queries)는 스키마, 관련된 메타데이터, 및 작업 그 자체를 기초로하여 생성될 수 있다. 사용자 데이터와 관련된 사용자에 의해서 아직 어떠한 동작에 대한 요청이 있지 않았기 때문에 시스템은 그전까지는 어떠한 아무런 작업도 수행하지 않는다. 프로세스는 작업(604)에서 다음 단계의 작업(606)으로 진행된다.
작업(606)에서 사용자 플러그인이 수신된다. 플러그인은 사용자에 의해 요청된 서비스의 코어 기능에 확장된 기능 또는 대안적인 기능을 대칭적인 형태로(in a symmetric fashion) 제공하는 동작을 수행한다. 프로세스는 작업(606)에서 다음 단계의 작업(608)으로 진행된다.
작업(608)에서는 사용자 동작들이 메타데이터를 통해 시스템 API에 등록되는데 여기에는 사용자 동작들이 파이프라인상에서 실행되었을 때의 순서 및 단계 또는 각각의 플러그인도 포함된다. 프로세스는 작업(608)에서 다음 단계의 작업(610)으로 진행되는데, 사용자가 요청을 하면 서비스는 사용자 데이터를 프로세스하기 위한 지정된 순서로 등록된 플러그인을 실행한다. 시스템은 복수의 주체가 시스템을 확장하게 하고 작업을 예측가능하게 수행하는 것을 가능하게 하는 파이프라인 작업에(플러그인이 업로드됨에 따라) 순서를 정하는 의존성 분석(dependency analysis)과 같은 추가적인 작업을 수행할 수 있다. 프로세스는 추가 작업을 위해 작업(610)에서 호출 프로세스(calling process)로 이동한다.
상기에서 언급된 바와 같이, 사용자가 그 자신의 확장을 임의의 순서(그리고 즉시)로 등록하고 실행하는 것을 허용하게 되면 시스템은 실수 또는 고의로 생성된 무한 루프로 인한 성능 저하에 취약해 질 수 있다. 그러므로, 무한 루프를 감지하고 종료시키기 위해 특정 쿼지-무한 (무한이기는 하지만 넌디제너렛한) 루프인 경우에만 종료로부터 제외되는 루프 감지 메커니즘이 이용될 수 있다. 이러한 메커니즘은 더 자세하게 후술될 것이다.
도 7은 파이프라인 아키텍쳐를 갖는 서비스 지향 시스템에서의 루프 감지 프로세스(700)에 대한 논리 흐름도이다. 프로세스(700)는 도 6의 작업 관리 프로세스(600) 내에서 구현될 수 있다.
프로세스(700)는 호출이 수신되는 작업(702)으로부터 시작된다. 호출은 첫 동작을 위한 것일 수도 있고 기존의 계정에 대한 동작을 위한 것일 수도 있다. 이는 호출과 함께 전달된 콘텍스트를 체크함으로써 시스템에 의해 결정된다. 프로세스는 작업(702)에서 판단 작업(704)으로 진행된다.
판단 작업(704)에서, 전달된 콘텍스트가 기존의 예산(깊이)을 포함하는지 여부를 결정한다. 만일 요청된 동작에 기존의 예산(깊이)이 없다면 작업(706)에서 하나가 생성된다. 만일 기존의 예산(깊이)이 호출과 관련되어있는 경우, 예산(또는 깊이)은 호출과 관련된 작업의 종류나 작업의 수에 기초하여 작업(708)에서 감소된다. 모든 작업은 예산에 대하여 비용을 가지며 비용은 칠드런 사이에 분배된다. 위에서 설명된 바와 같이 예산 대신에 칠드런의 수 또는 작업의 수에 기초한 깊이가 이용될 수 있다.
선택적인 작업(710, 712)을 건너뛰면 판단 작업(714)에서는 할당된 예산이 소진되었는지 여부를 결정한다. 만일 예산이 소진되었다면, 작업은 종료된다. 만일 이용가능한 예산이 아직 남아있는 경우라면, 호출과 관련된 작업은 이후의 작업(716)에서 수행된다.
실시예에 따른 시스템은 디제너렛 루프를 방지하면서 표준 작업 절차 내에서는 종료되지 않아야 하는 무한 루프처럼 보이는 루프에 대한 예외를 만드는 것도 용이하게 한다. 예를 들어, 콘택트를 위한 생일 알림 작업이 불확정 시간에 설정되는 것이 한 예이다. 그러므로, 시스템은 이를 무한 루프로 인식하고 종료를 시키기 위한 시도를 할 수 있다. 작업(708) 다음에 진행되는 선택적인 작업(710)은 그러한 예외를 만들기 위한 작업이다. 예산(깊이)은 작업이 사전 정의된 지연(예를 들어, 생일 알림 사이의 1년간의 지연)이 포함된 경우 재설정된다.
또 다른 예외의 예는 유한 트리 구조와 관련된 작업이다. 예를 들어, CRM 서비스를 위한 판매 지역은 불규칙적으로 분포할 수 있다. 하나의 주가 한 개의 판매 지역이 할당될 수 있는 반면, 다른 인구가 많은 주는 복수의 판매 지역이 할당될 수 있다. 만일 칠드런 사이에서 고정된 깊이 또는 예산의 할당이 적용된다면, 시스템은 이 동작을 무한하다고 인식해 종료를 시키려고 할 수 있다. 선택적인 작업(712)에서, 만일 호출이 유한 트리 구조와 관련한 경우라면 예산 또는 깊이는 재설정될 수 있으며, 그렇게 함으로써 작업이 성급하게 종료되는 것을 방지할 수 있다.
프로세스(600)와 프로세스(700)에 포함된 작업들은 예시를 위한 목적으로 나타낸 것이다. 파이프라인 아키텍쳐를 이용하는 호스팅 서비스를 제공하는 것은 본 명세서에서 설명한 유사한 프로세스에 특정 단계를 제거 또는 추가하는 경우에도 구현할 수 있고 본 명세서에서 설명된 원리를 이용하여 작업의 순서에 변화를 가한 경우에도 구현할 수 있다.
본 명세서와 여기에 나타난 예시 및 데이터는 실시예의 구성을 이용하고 제조를 하는데 필요한 완전한 설명을 제공한다. 비록 청구 대상이 구조적 특징 및/또는 방법론적 기능의 측면에서 설명되긴 하였으나, 첨부된 특허청구범위에 의해서 정의되는 청구 대상은 상기에서 설명된 구체적 특징 또는 기능에 한정되지 않음을 이해하여야 한다. 오히려, 구체적 특징 또는 기능은 특허청구범위의 실시예를 구현하는 하나의 예시로서 받아들여져야 할 것이다.

Claims (20)

  1. 서비스 지향 시스템(service-oriented system) 내의 파이프라인 아키텍쳐(pipeline architecture)를 구현하기 위하여 컴퓨팅 장치(computing device)에서 적어도 부분적으로 실행되는 방법으로서,
    사용자가 형성한 스키마(user constructed schema)를 자동적으로 구성하는 단계,
    상기 스키마와 연관된 플러그인(plug-in)을 수신하는 단계,
    상기 플러그인을 메타데이터를 통하여 등록하는 단계 - 상기 메타데이터는 상기 플러그인의 순서(order) 및 단계(stage) 중 적어도 하나를 포함함 - ,
    추가 플러그인(another plug-in)을 수신하는 단계,
    상기 추가 플러그인을 등록함으로써 컴파일(compilation) 없이 상기 스키마를 구성하는 단계,
    메타데이터에 의해 제공된 의존성 정보(dependency information)를 분석하여 상기 플러그인의 순서 및 코어 플랫폼 작업을 판정하는 단계,
    복수의 동작(actions)에 예산(budget)을 할당하는 단계 - 상기 할당된 예산의 일부는 복수의 차일드 동작(child action) 각각에 배분됨(apportioned) -,
    플러그인 내에서 시스템 메소드(system method)를 호출할 시에, 상기 예산의 일부를 각각의 차일드 동작에 할당된 상관 구분자(correlation identifier)와 함께 전달하는 단계,
    수행될 각각의 차일드 동작에 관한 상기 예산을 차일드 동작과 연관된 각각의 작업의 사전 지정된 비용에 기초하여 감소시키는 단계,
    상기 예산이 소진되면, 작업을 종료하고 오류 메시지를 제공하는 단계,
    사전 정의된 지연이 동작과 연관된 작업 순서(operational sequence)에 포함되는 경우에 상기 예산의 감소를 재설정하는 단계,
    상기 동작이 차일드 동작의 유한 트리 구조(finite tree structure)를 포함하는 경우에 상기 예산의 감소를 재설정하는 단계,
    상기 사용자로부터의 동작을 위한 호출(call)의 수신에 응답하여, 상기 플러그인을 상기 수신된 순서에 따라 실행 파이프라인(execution pipeline)의 하나 이상의 코어 플랫폼 작업(core platform operations)과 함께 실행하는 단계 - 상기 플러그인을 실행하는 단계는,
    상기 플러그인에 요청 객체(request object)를 전달하여 상기 플러그인이 응답 객체를 조작할 수 있도록 하는 단계와,
    상기 플러그인에 상기 실행과 연관된 임의의 상태(arbitrary state)를 전달하는 단계를 포함함 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 플러그인이 응답 객체(response object)를 조정(manipulate)할 수 있도록, 실행되는 동안에 상기 플러그인에 요청 객체(request object)를 전달하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 플러그인에 상기 실행과 연관된 임의의 상태(arbitrary state)를 전달하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 플러그인 및 상기 코어 플랫폼 작업은 연속적인 방식(a serial manner) 또는 병행하는 방식(a parallel manner) 중 하나의 방식으로 실행되는
    방법.
  5. 제1항에 있어서,
    상기 플러그인은 상기 서비스 지향 시스템의 기존의 기능을 확장하는 것 및 새로운 기능을 부가하는 것 중 하나를 위한 것인
    방법.
  6. 제1항에 있어서,
    상기 플러그인 구성 및 상기 플러그인 코드는 상기 서비스 지향 시스템에서 중앙 집중형으로 저장되는(stored centrally)
    방법.
  7. 제1항에 있어서,
    상기 서비스 지향 시스템은 동기식 프로세스(a synchronous process) 및 비동기식 프로세스(an asynchronous process) 중 적어도 하나를 실행하도록 구성되는
    방법.
  8. 제7항에 있어서,
    상기 비동기식 프로세스를 실행하는 단계는,
    상기 파이프라인의 상태를 저장하는(saving) 단계, 및
    프로세싱을 위하여 이후에 상기 파이프라인의 상태를 복원(restoring)하는 단계를 더 포함하는
    방법.
  9. 파이프라인 아키텍쳐를 구현하기 위한 적어도 하나의 프로세서를 포함하는 서비스 지향 시스템으로서,
    적어도 하나의 웹 서버 및 실행 파이프라인(execution pipeline)을 포함하고,
    상기 적어도 하나의 웹 서버는,
    사용자가 형성한 스키마를 수신하고,
    상기 스키마를 자동적으로 구성하고,
    상기 스키마와 연관된 서비스 지향 시스템의 기존의 기능의 확장 및 새로운 기능의 부가 중 하나를 위한 복수의 플러그인을 수신하고,
    상기 플러그인을 메타데이터를 통해 등록하고 - 상기 메타데이터는 상기 플러그인의 순서 및 단계 중 적어도 하나를 포함함 - ,
    상기 메타데이터에 의해서 제공된 의존성 정보(dependency information)를 분석하여 상기 플러그인 및 코어 플랫폼 작업의 순서를 판정하고,
    복수의 동작 각각에 예산 및 깊이 파라미터 중 하나를 할당하며 - 상기 예산 및 깊이 파라미터 중 할당된 하나의 일부가 복수의 차일드 동작(child action) 각각에 배분됨(apportioned) -,
    플러그인 내에서 시스템 메소드를 호출할 시에, 상기 예산 및 상기 깊이 파라미터 중 하나의 일부를 각각의 차일드 동작에 할당된 상관 구분자(correlation identifier)와 함께 전달하고,
    수행될 각각의 차일드 동작을 위한 상기 예산을 감소시키며 - 상기 예산은 차일드 동작과 연관된 각각의 작업의 비용에 기초하여 감소됨 - ,
    요청된 동작과 연관된 차일드 동작의 수에 기초하여 수행될 각각의 차일드 동작을 위한 깊이 파라미터를 증가시키고,
    상기 예산 및 상기 깊이 파라미터 중의 하나가 대응하는 사전 정의된 임계값에 도달하면, 작업을 종료하고 오류 메시지를 제공하며,
    상기 실행 파이프 라인은,
    상기 플러그인에 요청 객체를 전달하여 상기 플러그인이 응답 객체를 조정할 수 있도록 하는 것에 의해 그리고 실행과 연관된 임의의 상태를 상기 플러그인에 전달하는 것에 의해, 상기 사용자로부터의 요청의 수신시에 상기 수신된 순서에 따라 코어 플랫폼 작업과 함께 상기 플러그인을 실행하는
    시스템.
  10. 제9항에 있어서,
    상기 서비스 지향 시스템은 파이프라인 아키텍쳐 시스템의 호출(invocation)을 위한 프런트 앤드(front end)로서 구현되는
    시스템.
  11. 제9항에 있어서,
    상기 플러그인은 상기 서비스 지향 시스템의 어플리케이션 프로그래밍 인터페이스(Application Programming Interface; API)를 통하여 등록되며, 상기 파이프라인은 상기 API를 통해 구성되는
    시스템.
  12. 제9항에 있어서,
    상기 실행 파이프라인은 플러그인을 호출(invoking)할 시에, 상기 파이프라인의 현재 상태를 포함하는 콘텍스트 객체(context object)를 상기 플러그인에 전달하여 상기 플러그인이 추가적인 시스템 기능을 실행하기 위한 인터페이스를 획득할 수 있도록 하는
    시스템.
  13. 제9항에 있어서,
    상기 적어도 하나의 웹 서버는 확장가능하고(scalable), 상기 시스템은 상기 서버의 복수의 인스턴스(multiple instances)를 가능하게(facilitate) 하는
    시스템.
  14. 제13항에 있어서,
    상기 적어도 하나의 웹 서버는
    사전 정의된 지연이 동작과 연관된 작업의 순서에 포함되어 있으면, 상기 예산의 감소 및 상기 깊이 파라미터의 증가를 재설정하고,
    상기 동작이 차일드 동작의 유한 트리 구조(finite tree structure)를 포함하면, 상기 예산의 감소 및 상기 깊이 파라미터의 증가를 재설정하는
    시스템.
  15. 컴퓨터에 의해 실행되는 경우에 상기 컴퓨터로 하여금 서비스 지향 시스템 내의 파이프라인 아키텍처를 구현하는 방법을 수행하도록 하는 명령어가 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    사용자가 형성한 스키마를 수신하는 단계,
    상기 스키마를 자동적으로 구성하는 단계,
    서비스 지향 시스템의 기존의 기능의 확장 및 새로운 기능의 부가 중 하나를 위한 스키마와 연관된 플러그인을 수신하는 단계,
    상기 플러그인을 메타데이터를 통하여 등록하는 단계 - 상기 메타데이터는 상기 플러그인의 의존성 정보 및 단계(stage) 중 적어도 하나를 포함함 - ,
    상기 메타데이터에 의해 제공된 의존성 정보를 분석하여 등록된 플러그인의 순서 및 코어 플랫폼 작업을 판정하는 단계,
    복수의 동작(actions) 각각에 예산을 할당하는 단계 - 상기 할당된 예산의 일부는 복수의 차일드 동작(child action) 각각에 배분됨 -,
    플러그인 내에서 시스템 메소드를 호출할 때, 상기 예산의 일부를 각각의 차일드 동작에 할당된 상관 구분자와 함께 전달하는 단계,
    수행될 각각의 차일드 동작을 위한 상기 예산을 차일드 동작과 연관된 각각의 작업의 사전 지정된 비용에 기초하여 감소시키는 단계,
    상기 예산이 소진되면, 작업을 종료하고 오류 메시지를 제공하는 단계, 및
    상기 플러그인을 상기 수신된 순서에 따라 실행 파이프라인의 코어 플랫폼 작업과 함께 실행하는 단계 - 상기 플러그인을 실행하는 단계는,
    상기 플러그인에 요청 객체(request object)를 전달하여 상기 플러그인이 응답 객체를 조작할 수 있도록 하는 단계와,
    상기 실행과 연관된 임의의 상태(arbitrary state)를 상기 플러그인에 전달하는 단계를 포함함 -
    를 포함하는 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서,
    상기 방법은
    동작과 연관된 작업 순서에 사전 정의된 지연이 포함되어 있는 경우, 상기 예산의 감소를 재설정하는 단계, 및
    상기 동작이 차일드 동작의 유한 트리 구조를 포함하는 경우, 상기 예산의 감소를 재설정하는 단계
    를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107006786A 2007-09-27 2008-09-29 서비스 지향 파이프라인 기반 아키택쳐 KR101548003B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/862,648 US8146099B2 (en) 2007-09-27 2007-09-27 Service-oriented pipeline based architecture
US11/862,648 2007-09-27

Publications (2)

Publication Number Publication Date
KR20100075458A KR20100075458A (ko) 2010-07-02
KR101548003B1 true KR101548003B1 (ko) 2015-08-27

Family

ID=40509425

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107006786A KR101548003B1 (ko) 2007-09-27 2008-09-29 서비스 지향 파이프라인 기반 아키택쳐

Country Status (8)

Country Link
US (1) US8146099B2 (ko)
EP (1) EP2203841A4 (ko)
JP (1) JP2010541080A (ko)
KR (1) KR101548003B1 (ko)
CN (1) CN101809562B (ko)
BR (1) BRPI0814846A2 (ko)
RU (1) RU2488166C2 (ko)
WO (1) WO2009042995A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230097438A (ko) * 2021-12-24 2023-07-03 주식회사 아이디알소프트 대량의 사용자 행위 데이터 분석을 통해 검증 쿼리를 생성하고 실행하여, 요청 파라미터 변조의 위험을 탐지 및 모니터링하는 시스템

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7708205B2 (en) 2003-11-13 2010-05-04 Metrologic Instruments, Inc. Digital image capture and processing system employing multi-layer software-based system architecture permitting modification and/or extension of system features and functions by way of third party code plug-ins
US20110284625A1 (en) * 2005-12-16 2011-11-24 Taylor Smith Digital image capture and processing system supporting multiple third party code plug-ins with configuration files having conditional programming logic controlling the chaining of multiple third-party plug-ins
US8291490B1 (en) * 2008-06-30 2012-10-16 Emc Corporation Tenant life cycle management for a software as a service platform
US8793306B2 (en) 2008-10-03 2014-07-29 Infosys Limited System, wireless communication device and method for combining compatible services
US8255490B1 (en) * 2008-10-22 2012-08-28 Amazon Technologies, Inc. Dynamic service-oriented architecture using customization code
US9734466B2 (en) * 2008-11-11 2017-08-15 Sap Se Multi-tenancy engine
AU2011235138A1 (en) * 2010-03-31 2012-09-20 Welch Allyn, Inc. Extensibility for manipulation of medical data
US8544075B2 (en) * 2010-06-15 2013-09-24 Microsoft Corporation Extending a customer relationship management eventing framework to a cloud computing environment in a secure manner
US9223890B2 (en) * 2011-03-15 2015-12-29 Hewlett-Packard Development Company, L.P. System and method of processing content using a uniform resource identifier
US10642934B2 (en) 2011-03-31 2020-05-05 Microsoft Technology Licensing, Llc Augmented conversational understanding architecture
US9842168B2 (en) 2011-03-31 2017-12-12 Microsoft Technology Licensing, Llc Task driven user intents
US9760566B2 (en) 2011-03-31 2017-09-12 Microsoft Technology Licensing, Llc Augmented conversational understanding agent to identify conversation context between two humans and taking an agent action thereof
US9092167B2 (en) 2011-04-04 2015-07-28 Hewlett-Packard Development Company, L.P. Systems and methods for managing a print job
US9064006B2 (en) 2012-08-23 2015-06-23 Microsoft Technology Licensing, Llc Translating natural language utterances to keyword search queries
US9607336B1 (en) * 2011-06-16 2017-03-28 Consumerinfo.Com, Inc. Providing credit inquiry alerts
US8719919B2 (en) 2011-07-12 2014-05-06 Bank Of America Corporation Service mediation framework
US9369307B2 (en) 2011-07-12 2016-06-14 Bank Of America Corporation Optimized service integration
US8448237B2 (en) 2011-07-12 2013-05-21 Bank Of America Corporation Virtual private internet
US9015320B2 (en) 2011-07-12 2015-04-21 Bank Of America Corporation Dynamic provisioning of service requests
WO2013035904A1 (ko) * 2011-09-08 2013-03-14 한국과학기술정보연구원 생명 정보 분석 파이프라인 처리 시스템 및 방법
US20130124193A1 (en) * 2011-11-15 2013-05-16 Business Objects Software Limited System and Method Implementing a Text Analysis Service
CN103166787A (zh) * 2011-12-15 2013-06-19 中国移动通信集团浙江有限公司 信息分析方法及其设备
WO2013100992A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Context-state management
US20150006342A1 (en) * 2013-07-01 2015-01-01 Metratech Corp. Generating a Simulated Invoice
US9116866B2 (en) 2013-08-21 2015-08-25 Seven Bridges Genomics Inc. Methods and systems for detecting sequence variants
US9898575B2 (en) 2013-08-21 2018-02-20 Seven Bridges Genomics Inc. Methods and systems for aligning sequences
WO2015058095A1 (en) 2013-10-18 2015-04-23 Seven Bridges Genomics Inc. Methods and systems for quantifying sequence alignment
EP3058332B1 (en) 2013-10-18 2019-08-28 Seven Bridges Genomics Inc. Methods and systems for genotyping genetic samples
JP2016533182A (ja) 2013-10-18 2016-10-27 セブン ブリッジズ ジェノミクス インコーポレイテッド 疾患に誘導された変異を同定するための方法およびシステム
WO2015058120A1 (en) 2013-10-18 2015-04-23 Seven Bridges Genomics Inc. Methods and systems for aligning sequences in the presence of repeating elements
US9063914B2 (en) 2013-10-21 2015-06-23 Seven Bridges Genomics Inc. Systems and methods for transcriptome analysis
CN104657202A (zh) * 2013-11-19 2015-05-27 上海联影医疗科技有限公司 一种分布式信息处理结构
CN106068330B (zh) 2014-01-10 2020-12-29 七桥基因公司 将已知等位基因用于读数映射中的系统和方法
US9817944B2 (en) 2014-02-11 2017-11-14 Seven Bridges Genomics Inc. Systems and methods for analyzing sequence data
US9268597B2 (en) 2014-04-01 2016-02-23 Google Inc. Incremental parallel processing of data
WO2016018210A1 (en) 2014-07-28 2016-02-04 Hewlett-Packard Development Company, L.P. Detection of abnormal transaction loops
US9558321B2 (en) 2014-10-14 2017-01-31 Seven Bridges Genomics Inc. Systems and methods for smart tools in sequence pipelines
US10664535B1 (en) 2015-02-02 2020-05-26 Amazon Technologies, Inc. Retrieving log data from metric data
WO2016141294A1 (en) 2015-03-05 2016-09-09 Seven Bridges Genomics Inc. Systems and methods for genomic pattern analysis
US10275567B2 (en) 2015-05-22 2019-04-30 Seven Bridges Genomics Inc. Systems and methods for haplotyping
US10296383B2 (en) * 2015-07-10 2019-05-21 Samsung Electronics Co., Ltd. Computing system with resource management mechanism and method of operation thereof
US10793895B2 (en) 2015-08-24 2020-10-06 Seven Bridges Genomics Inc. Systems and methods for epigenetic analysis
US10584380B2 (en) 2015-09-01 2020-03-10 Seven Bridges Genomics Inc. Systems and methods for mitochondrial analysis
US10724110B2 (en) 2015-09-01 2020-07-28 Seven Bridges Genomics Inc. Systems and methods for analyzing viral nucleic acids
US9552203B1 (en) * 2015-10-01 2017-01-24 Successfactors, Inc. Configuration dependency manager for configurable applications
US11347704B2 (en) 2015-10-16 2022-05-31 Seven Bridges Genomics Inc. Biological graph or sequence serialization
US20170199960A1 (en) 2016-01-07 2017-07-13 Seven Bridges Genomics Inc. Systems and methods for adaptive local alignment for graph genomes
US10364468B2 (en) 2016-01-13 2019-07-30 Seven Bridges Genomics Inc. Systems and methods for analyzing circulating tumor DNA
US10460829B2 (en) 2016-01-26 2019-10-29 Seven Bridges Genomics Inc. Systems and methods for encoding genetic variation for a population
US10262102B2 (en) 2016-02-24 2019-04-16 Seven Bridges Genomics Inc. Systems and methods for genotyping with graph reference
EP3232667A1 (en) * 2016-04-12 2017-10-18 EVS Broadcast Equipment SA Modular software based video production server, method for operating the video production server and distributed video production system
US10672156B2 (en) 2016-08-19 2020-06-02 Seven Bridges Genomics Inc. Systems and methods for processing computational workflows
US11250931B2 (en) 2016-09-01 2022-02-15 Seven Bridges Genomics Inc. Systems and methods for detecting recombination
US10545792B2 (en) 2016-09-12 2020-01-28 Seven Bridges Genomics Inc. Hashing data-processing steps in workflow environments
US11055135B2 (en) 2017-06-02 2021-07-06 Seven Bridges Genomics, Inc. Systems and methods for scheduling jobs from computational workflows
US10678613B2 (en) 2017-10-31 2020-06-09 Seven Bridges Genomics Inc. System and method for dynamic control of workflow execution
US20210126986A1 (en) * 2018-01-08 2021-04-29 Here Global B.V. Distributed processing system and method for the provision of location based services
FR3079987A1 (fr) * 2018-04-06 2019-10-11 Orange Procede de traitement d'une transaction entre un terminal source et un terminal destinataire, systeme de services bancaires, terminal et programme d'ordinateur correspondants.
CN108846129B (zh) * 2018-07-02 2023-04-18 腾讯科技(深圳)有限公司 存储数据访问方法、装置及存储介质
CN111506304A (zh) * 2020-04-21 2020-08-07 科大国创云网科技有限公司 一种基于参数配置的流水线构建方法及系统
CN113296429A (zh) * 2020-07-24 2021-08-24 阿里巴巴集团控股有限公司 输送机系统、物联网控制器、控制方法及配置方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
US6377939B1 (en) * 1999-05-04 2002-04-23 Metratech Pipelined method and apparatus for processing communication metering data
US6985946B1 (en) * 2000-05-12 2006-01-10 Microsoft Corporation Authentication and authorization pipeline architecture for use in a web server
US20020035559A1 (en) * 2000-06-26 2002-03-21 Crowe William L. System and method for a decision engine and architecture for providing high-performance data querying operations
US6859798B1 (en) * 2001-06-20 2005-02-22 Microstrategy, Inc. Intelligence server system
US7600222B2 (en) * 2002-01-04 2009-10-06 Microsoft Corporation Systems and methods for managing drivers in a computing system
US7222148B2 (en) * 2002-05-02 2007-05-22 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US6993534B2 (en) * 2002-05-08 2006-01-31 International Business Machines Corporation Data store for knowledge-based data mining system
US20040148370A1 (en) * 2003-01-23 2004-07-29 Electronic Data Systems Corporation System and method for composing, configuring, deploying, and managing services using a graphical user interface
US20050234969A1 (en) * 2003-08-27 2005-10-20 Ascential Software Corporation Services oriented architecture for handling metadata in a data integration platform
US20060010195A1 (en) * 2003-08-27 2006-01-12 Ascential Software Corporation Service oriented architecture for a message broker in a data integration platform
KR100505970B1 (ko) 2003-11-28 2005-08-30 한국전자통신연구원 온톨로지 기반의 지식 모델링 방법 및 그 시스템
US20060031432A1 (en) * 2004-05-21 2006-02-09 Bea Systens, Inc. Service oriented architecture with message processing pipelines
US8631386B2 (en) * 2004-08-25 2014-01-14 Mohit Doshi System and method for automating the development of web services
US7698270B2 (en) * 2004-12-29 2010-04-13 Baynote, Inc. Method and apparatus for identifying, extracting, capturing, and leveraging expertise and knowledge
US8151282B2 (en) * 2005-04-15 2012-04-03 Yahoo! Inc. System and method for pipelet processing of data sets
US7447707B2 (en) * 2005-12-16 2008-11-04 Microsoft Corporation Automatic schema discovery for electronic data interchange (EDI) at runtime
US7779017B2 (en) * 2006-01-12 2010-08-17 Microsoft Corporation Employing abstract pipeline component connections to maintain data flow

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230097438A (ko) * 2021-12-24 2023-07-03 주식회사 아이디알소프트 대량의 사용자 행위 데이터 분석을 통해 검증 쿼리를 생성하고 실행하여, 요청 파라미터 변조의 위험을 탐지 및 모니터링하는 시스템
KR102654479B1 (ko) * 2021-12-24 2024-04-04 주식회사 아이디알소프트 대량의 사용자 행위 데이터 분석을 통해 검증 쿼리를 생성하고 실행하여, 요청 파라미터 변조의 위험을 탐지 및 모니터링하는 시스템

Also Published As

Publication number Publication date
EP2203841A4 (en) 2011-01-26
WO2009042995A2 (en) 2009-04-02
CN101809562A (zh) 2010-08-18
US8146099B2 (en) 2012-03-27
RU2010111740A (ru) 2011-10-10
KR20100075458A (ko) 2010-07-02
BRPI0814846A2 (pt) 2015-01-27
WO2009042995A3 (en) 2009-05-28
RU2488166C2 (ru) 2013-07-20
JP2010541080A (ja) 2010-12-24
EP2203841A2 (en) 2010-07-07
US20090089128A1 (en) 2009-04-02
CN101809562B (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
KR101548003B1 (ko) 서비스 지향 파이프라인 기반 아키택쳐
US11321085B2 (en) Meta-indexing, search, compliance, and test framework for software development
CN107690623B (zh) 自动异常检测和解决系统
US9317542B2 (en) Declarative specification of data integration workflows for execution on parallel processing platforms
US11134085B2 (en) Cloud least identity privilege and data access framework
US10394633B2 (en) On-demand or dynamic diagnostic and recovery operations in conjunction with a support service
US11734061B2 (en) Automated software robot creation for robotic process automation
US20150019284A1 (en) Dynamically modifying business processes based on real-time events
AU2021227744B2 (en) Providing customized integration flow templates
US11089000B1 (en) Automated source code log generation
US10877805B2 (en) Optimization of memory usage by integration flows
US9059992B2 (en) Distributed mobile enterprise application platform
US20180314741A1 (en) Managing asynchronous analytics operation based on communication exchange
Pervez et al. Dual validation framework for multi-tenant saas architecture
US11556507B2 (en) Processing metrics data with graph data context analysis
US10701009B1 (en) Message exchange filtering
US11868349B2 (en) Row secure table plan generation
US11700177B2 (en) Cloud computing infrastructure pipelines with run triggers
US20180039955A1 (en) Meeting time polling
US20230315514A1 (en) Configuration-driven data processing pipeline for an extensibility platform
US20120144367A1 (en) Events fired pre- and post-method execution

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 5