KR20100136507A - 사용자 솔루션들의 스케일가능한 호스팅 - Google Patents

사용자 솔루션들의 스케일가능한 호스팅 Download PDF

Info

Publication number
KR20100136507A
KR20100136507A KR1020107023007A KR20107023007A KR20100136507A KR 20100136507 A KR20100136507 A KR 20100136507A KR 1020107023007 A KR1020107023007 A KR 1020107023007A KR 20107023007 A KR20107023007 A KR 20107023007A KR 20100136507 A KR20100136507 A KR 20100136507A
Authority
KR
South Korea
Prior art keywords
server
software
application
software application
module
Prior art date
Application number
KR1020107023007A
Other languages
English (en)
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 KR20100136507A publication Critical patent/KR20100136507A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 the load
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

사용자 솔루션들의 스케일가능한 호스팅이 제공된다. 애플리케이션 소프트웨어를 호스트하기 위한 시스템은 로컬 서버, 하나 이상의 원격 서버, 구성 데이터베이스 및 컨텐츠 데이터베이스를 포함한다. 로컬 서버는 서버 상에서 애플리케이션 소프트웨어를 호스트하기 위한 인터넷을 통한 클라이언트 컴퓨터로부터의 요청을 처리하는 웹 프론트엔드 모듈을 포함한다. 웹 프론트엔드 모듈은 로컬 서버 또는 하나 이상의 원격 서버가 애플리케이션 소프트웨어를 호스트할 것인지를 결정한다. 원격 서버는 원격 서버에서 호스트되는 애플리케이션 소프트웨어의 설치 및 동작을 관리하는 백엔드 모듈을 포함한다. 구성 데이터베이스는 애플리케이션 소프트웨어를 호스트할 수 있는 서버 컴퓨터들의 설명을 갖는 토폴로지 정보를 포함한다. 컨텐츠 데이터베이스는 서버 컴퓨터에서 호스트되는 소프트웨어 애플리케이션의 컨텐츠에 관한 정보를 포함한다.

Description

사용자 솔루션들의 스케일가능한 호스팅{SCALABLE HOSTING OF USER SOLUTIONS}
점점 더 많은 소프트웨어 애플리케이션들이 인터넷에서 호스트되고 있다. 고객들이 자신의 애플리케이션에 대한 구체적인 요구사항들을 갖거나 맞춤화된(tailored) 커스터마이제이션을 필요로 하는 경우가 많으므로, 인터넷에서 커스텀 소프트웨어 애플리케이션을 지원할 필요가 있다. 그러므로, 인터넷 기반구조 제공자들은 광범위하게 다양한 커스텀 솔루션들 및 애플리케이션들을 호스트할 수 있어야 한다.
보안 및 성능(performance)은 소프트웨어 애플리케이션들을 호스트할 때 인터넷 기반구조 제공자들이 고려해야 하는 두가지 인자이다. 다수의 소프트웨어 애플리케이션이 하나의 컴퓨터에서 호스트될 수 있기 때문에, 애플리케이션들의 신뢰성을 보장하기 어려운 경우가 많다. 한 불량한 소프트웨어 애플리케이션은 시스템 보안을 포함할 수 있는 악성 코드를 포함할 수 있다. 또한, 불량하게 설계된 소프트웨어 애플리케이션은 시스템 성능을 저하시킬 수 있고, 호스트 컴퓨터 상에서 실행되는 다른 소프트웨어 애플리케이션들에 영향을 줄 수 있다.
요약
본 개시는 소프트웨어 애플리케이션 코드를 로컬 서버 및 원격 서버들 상에서 안전하고 스케일가능한 방식으로 호스팅하기 위한 시스템 및 방법에 관한 것이다.
일 실시예에 따르면, 호스팅 시스템은 로컬 서버, 하나 이상의 원격 서버, 구성 데이터베이스 및 컨텐츠 데이터베이스를 포함한다. 로컬 서버는 서버 컴퓨터 상에서 애플리케이션 소프트웨어를 호스트하기 위한 인터넷을 통한 클라이언트 요청들을 처리하는 웹 프론트엔드 모듈을 포함한다. 애플리케이션 소프트웨어는 전형적으로 사용자의 비지니스(예를 들어, 병원)에 커스터마이즈되고, 인터넷을 통해 로컬 서버에 업로드된다. 각각의 원격 서버는 해당 서버에서 호스트되는 애플리케이션 소프트웨어의 설치 및 동작을 관리하는 백엔드 모듈을 포함한다.
로컬 서버는 애플리케이션 소프트웨어가 어느 서버 상에서 호스트되어야 하는지를 결정하기 위해 구성 데이터베이스 및 컨텐츠 데이터베이스의 자원들을 이용한다. 애플리케이션 소프트웨어는 로컬 서버에서 호스트될 수 있고, 또는 원격 서버들 중 하나에서 호스트될 수 있다. 호스팅 서버의 선택은 전체적인 호스팅 솔루션을 스케일가능하고(scalable) 안전하게 하는 방식으로 행해진다.
다른 실시예에 따르면, 서버 상에서 애플리케이션 소프트웨어를 호스트하는 방법이 제공된다. 애플리케이션 소프트웨어가 클라이언트로부터 로컬 컴퓨터로 업로드되고 있는 경우에 서버에서 애플리케이션 소프트웨어를 실행하기 위한 클라이언트 컴퓨터로부터의 요청이 수신될 때, 소프트웨어 애플리케이션이 유효성 검사된다. 소프트웨어 애플리케이션에 대한 성능 계층(performance tier)이 결정되고, 소프트웨어 애플리케이션에 대한 솔루션 유형이 결정되고, 이용가능한 호스트 컴퓨터들의 토폴로지가 결정된다. 부하 분산(load balancing) 알고리즘과 함께, 성능 계층, 솔루션 유형 및 토폴로지 정보를 이용하여, 로컬이든 원격이든 간에, 소프트웨어 애플리케이션이 실행되어야 하는 서버에 대한 결정이 이루어진다. 소프트웨어 애플리케이션이 서버 상에서 실행될 때, 그 소프트웨어 애플리케이션의 동작이 모니터링된다.
다른 실시예에 따르면, 소프트웨어 애플리케이션이 서버 상에서 호스트될 것을 요청하는 방법이 제공된다. 애플리케이션 프로그램을 서버에서 호스트하기 위한 요청이 로컬 서버로 개시된다. 소프트웨어 애플리케이션 프로그램은 로컬 서버에 업로드되는데, 여기에서 소프트웨어 애플리케이션 프로그램은 애플리케이션 솔루션에 특정한 커스터마이즈된 특징들(features)을 포함한다. 부하 분산 알고리즘은 로컬 서버에 업로드되고, 부하 분산 알고리즘은 소프트웨어 애플리케이션이 호스트되어야 하는 서버를 결정하기 위한 메소드를 제공한다. 유효성 검사 메커니즘이 로컬 서버에 업로드되고, 유효성 검사 메커니즘은 소프트웨어 애플리케이션이 호스트되어야 하는지를 결정하는 메소드를 제공한다.
본 개요는 이하의 상세한 설명에서 더 설명되는 개념들 중 선택된 것을 간략한 형태로 소개하기 위해 제공된 것이다. 본 개요는 청구되는 발명의 주제의 핵심적인 특징 또는 본질적인 특징을 식별하도록 의도된 것이 아니고, 또는 청구되는 발명의 주제의 범위를 제한하기 위해 사용되도록 의도된 것도 아니다.
여기에 포함되고 본 명세서의 일부를 형성하는 첨부 도면들은 본 개시의 수개의 양태들을 도시하며, 그 설명과 함께 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 서버 상에서 소프트웨어 애플리케이션을 호스트하기 위한 예시적인 시스템을 도시한다.
도 2는 서버 상에서 소프트웨어 애플리케이션을 호스트하기 위한 다른 예시적인 시스템을 도시한다.
도 3은 로컬 서버를 위한 예시적인 기능 모듈들을 도시한다.
도 4는 원격 서버를 위한 예시적인 기능 모듈들을 도시한다.
도 5는 로컬 서버의 예시적인 웹 프론트엔드 모듈을 위한 예시적인 기능 모듈들을 도시한다.
도 6은 서버의 예시적인 백엔드 모듈을 위한 예시적인 기능 모듈들을 도시한다.
도 7은 서버 상에서 소프트웨어 애플리케이션을 호스트하기 위한 예시적인 방법의 흐름도를 도시한다.
본 출원은 소프트웨어 애플리케이션들을 스케일가능하고 안전한 방식으로 호스트하기 위한 시스템 및 방법에 관한 것이다. 소프트웨어 애플리케이션은 솔루션 유형 및 성능에 의해 계층화된 원격 호스트들 상에서 실행된다. 소프트웨어 애플리케이션들은 호스트 컴퓨터, 및 호스트 컴퓨터 상에서 실행되는 다른 소프트웨어 애플리케이션들의 자원들에 영향을 주는 것으로부터 잠재적으로 악성인 소프트웨어의 능력을 제한하는 샌드박스된(sandboxed) 환경에서 실행된다.
도 1은 클라이언트 컴퓨터들(클라이언트들)(102), 로컬 서버들(104) 및 원격 서버들(106)을 포함하는 예시적인 컴퓨터 시스템(100)을 도시하고 있다. 실시예에서, 클라이언트(102)는 커스텀 소프트웨어 애플리케이션을 로컬 서버(104)에 업로드하고, 애플리케이션 소프트웨어가 서버 상에서 호스트될 것을 요청한다. 로컬 서버(104)는 요청을 처리하고, 애플리케이션 소프트웨어를 호스트하는 데에 어느 서버가 적합한지를 결정한다. 일부 실시예들에서는, 요청을 수신하는 로컬 서버(104)가 또한 애플리케이션 소프트웨어를 호스트할 것이다. 다른 실시예들에서, 로컬 서버(104)는 소프트웨어 애플리케이션이 원격 서버(106)에서 호스트되어야 한다고 결정한다. 로컬 서버(104)는 소프트웨어 애플리케이션의 솔루션 유형, 소프트웨어 애플리케이션의 성능 특성, 및 시스템 내의 로컬 서버들과 원격 서버들의 토폴로지에 기초하여 이러한 결정을 내린다. 최종 결과는, 시스템이 부하 분산되어, 유사한 성능의(similar performing) 소프트웨어 애플리케이션들 및 유사한 솔루션 유형을 제공하는 소프트웨어 애플리케이션들이 서버에 대해 매칭되고, 소프트웨어 오버헤드가 최소화되는 스케일가능한 시스템이다.
실시예에서, 로컬 서버들(104) 및 원격 서버들(106)은 Microsoft Windows SharePoint Service(WSS)와 같은 인터넷 기반 협업 및 문서 관리 시스템의 일부이다. 다른 실시예에서, 로컬 서버들(104) 및 원격 서버들(106)은 Microsoft Office의 일부이다. 다른 실시예에서, 로컬 서버(106)는 Microsoft SharePoint 서버이다. 다른 구성들도 가능하다.
실시예들에서, 클라이언트(102)는 데스크탑 또는 랩탑 컴퓨터, PDA(personal data assistant) 또는 셀룰러 전화기와 같은 개인용 컴퓨팅 장치일 수 있다. 클라이언트(102)는 입력/출력 장치, 중앙 처리 장치("CPU"), 데이터 저장 장치 및 네트워크 장치를 포함할 수 있다. 전형적인 입력/출력 장치들은 키보드, 마우스, 디스플레이, 마이크로폰, 스피커, 디스크 드라이브, CD-ROM 드라이브 및 플래시 드라이브를 포함한다. 데이터 저장 장치와 같은 컴퓨터 판독가능한 매체는 데이터 보존을 제공한다. 예를 들어, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의 이동식 및 비이동식 매체를 포함한다. 전형적으로, 통신 매체는 반송파 또는 기타 전송 매체와 같은 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 그 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 데이터 저장 장치에 저장된 복수의 정보 중에는, 클라이언트 운영 체제("OS") 및 클라이언트 애플리케이션들이 있다. 클라이언트 OS는 클라이언트 시스템의 하드웨어 및 소프트웨어 자원을 관리하는 프로그램이다. 클라이언트 애플리케이션은 사용자에 의해 지정된 태스크들을 직접 수행하기 위해 클라이언트(102)의 자원을 이용한다. 클라이언트들(102)을 위한 다른 구성들도 가능하다.
도 2는 소프트웨어 애플리케이션들을 호스트하기 위한 예시적인 시스템(200)을 도시하고 있다. 예시적인 시스템(200)은 로컬 서버(202), 원격 서버들(204 및 206), 컨텐츠 데이터베이스(208) 및 구성 데이터베이스(210)를 포함한다. 로컬 서버(202)는 소프트웨어 애플리케이션을 호스트하기 위한 로컬 클라이언트로부터의 요청을 처리한다. 로컬 서버(202)는 도 2에서 단일 서버로서 도시되어 있지만, 로컬 서버들의 웹 팜을 형성하기 위해 다수의 로컬 서버(202)가 이용될 수 있음을 알아야 한다. 따라서, 서버라는 용어가 본 명세서의 임의의 맥락에서 사용될 때, 그것은 임의의 주어진 시스템(200)에 대하여 용량 및 성능 요구가 지시하는 대로, 서버들의 조합 또는 웹 팜으로서 이용될 수 있는 하나 이상의 서버를 의미하는 것으로 이해되어야 한다. 로컬 서버(202)에 의해 처리되는 요청들은 종종, 자신들의 비지니스에 맞춤화된 소프트웨어 애플리케이션들이 인터넷을 통해 자신들의 고객들에게 이용가능하게 되기를 원하는 비지니스들로부터 기원한다. 일부 예시적인 비지니스들은 치과 의원, 세탁소 및 꽃집이다. 이러한 비지니스들을 위하여 호스트되는 소프트웨어 애플리케이션들은 솔루션 유형들로 분류될 수 있다. 예를 들어, 치과 의원을 위한 소프트웨어 애플리케이션은 꽃집을 위한 소프트웨어 애플리케이션과 다른 특징들을 갖는다. 또한, 공통의 솔루션 유형을 갖는 비지니스들은 자신의 소프트웨어 애플리케이션들을 커스터마이즈하고, 예를 들어 특정한 디스플레이 효과를 제공하기 위해 또는 특정한 비지니스 로직을 핸들링하기 위한 이벤트 핸들러 또는 커스텀 컨트롤들을 추가하기 위해, 자신의 비지니스에 특정한 특징들을 추가하기를 원할 수 있다. 시스템에서 사용되는 소프트웨어 애플리케이션들을 위한 솔루션 유형들에 관한 정보는 하나 이상의 컨텐츠 데이터베이스를 포함할 수 있는 컨텐츠 데이터베이스(208)에 저장된다.
로컬 서버(202)가 호스팅 요청을 처리할 때, 로컬 서버(202)는 소프트웨어 애플리케이션이 어디에서 호스팅되어야 하는지에 대한 결정을 내린다. 이 결정은 몇가지 인자를 고려한다. 대규모의 시스템에서는, 수천개의 애플리케이션이 호스트될 수 있다. 이러한 애플리케이션들 중 다수가 동일한 솔루션 유형을 갖기 때문에, 공통의 솔루션 유형을 갖는 애플리케이션들이 함께 호스트된다면 시스템 효율을 향상시킨다. 또한, 소프트웨어 애플리케이션이 클라이언트들로부터의 요청들을 처리하는 로컬 서버에서 호스트되지 않는다면, 시스템 효율을 향상시킨다. 이를 위해, 그리고 시스템 스케일가능성을 향상시키기 위해, 소프트웨어 애플리케이션들은 원격 서버들(204 및 206)과 같은 원격 서버들 상에서 호스트될 수 있다. 대규모 시스템에서는 수천개의 원격 서버가 존재할 수 있지만, 도 2의 예시적인 시스템에서는 2개만이 도시되어 있음을 이해할 것이다.
계속하여 도 2를 참조하면, 구성 데이터베이스(210)는 소프트웨어 애플리케이션이 로컬 서버(202) 및 원격 서버들(204 및 206) 상에서 호스트되는 것을 포함하는, 시스템의 토폴로지에 관한 정보를 포함한다. 컨텐츠 데이터베이스(208)는 솔루션 유형, 및 각 솔루션 유형의 성능 특성에 관한 정보를 포함한다. 로컬 서버(202)는 소프트웨어 애플리케이션이 로컬 서버(202) 상에서 호스트되어야 할지, 또는 원격 서버(204 및 206) 상에서 호스트되어야 할지를 결정하기 위해, 부하 분산 알고리즘과 함께 컨텐츠 데이터베이스(208) 및 구성 데이터베이스(210)로부터 획득된 정보를 이용한다. 이러한 결정이 내려지고 나면, 로컬 서버(202)는 소프트웨어 애플리케이션을 적합한 목적지로 라우팅한다.
도 3은 예시적인 로컬 서버(300)의 모듈들 중 일부를 도시하고 있다. 웹 프론트엔드 모듈(302), 소프트웨어 애플리케이션 모듈(304) 및 백엔드 모듈(306)이 포함되어 있다. 웹 프론트엔드 모듈(302)은 소프트웨어 애플리케이션을 호스트하기 위한 클라이언트들로부터의 요청을 처리하고, 소프트웨어 애플리케이션이 어디에서 호스트될지에 대한 결정을 내리고, 소프트웨어 애플리케이션을 적합한 목적지로 라우팅한다. 또한, 로컬 서버는 그 자체가 소프트웨어 애플리케이션(304)을 호스트할 수 있으며, 따라서 백엔드 모듈(306)을 포함한다. 백엔드 모듈(306)은 로컬 서버(300) 상에서의 소프트웨어 애플리케이션(304)의 실행을 관리한다.
도 4는 예시적인 원격 서버(400)의 모듈들 중 일부를 도시하고 있다. 소프트웨어 애플리케이션 모듈(402) 및 백엔드 모듈(404)이 포함되어 있다. 원격 서버(400)는 웹 프론트엔드를 포함하지 않고, 따라서 웹 인터페이스에 연관된 소프트웨어 오버헤드를 갖지 않는다. 백엔드 모듈(404)은 원격 서버(400) 상에서의 소프트웨어 애플리케이션(402)의 실행을 관리한다.
도 5는 예시적인 웹 프론트엔드 모듈(500)을 도시하고 있다. 웹 프론트엔드 모듈(500)은 웹 인터페이스 모듈(502), 유효성 검사(validation) 모듈(504) 및 부하 분산 모듈(506)을 포함한다. 웹 인터페이스 모듈(502)은 애플리케이션 소프트웨어를 호스트하기 위한 클라이언트들로부터의 요청을 수신하고, 소프트웨어가 어디에서 호스트될지의 할당을 관리한다. 유효성 검사 모듈(504)은 애플리케이션 소프트웨어가 실행하기에 안전한지, 및 서버 컴퓨터 상에서 호스트되도록 허가되어야하는지를 결정한다. 예를 들어, 유효성 검사 모듈은 알려진 안전한 소프트웨어 애플리케이션들의 목록을 검사하고, 호스트될 소프트웨어 애플리케이션이 그 목록에 있음을 확실하게 할 수 있다. 또한, 유효성 검사 모듈은 고객들이 그들의 소프트웨어 애플리케이션 솔루션에 고유한 커스텀 솔루션 유효성 검사기(validator)들을 공급하는 것을 허가 또는 허용하는 확장가능성(extensibility) 특징을 포함한다. 이러한 방식으로, 고객이 그들이 관심을 갖고 있는 그들의 소프트웨어 애플리케이션 코드의 영역(예를 들어 보안)을 식별하는 경우, 그들은 보안을 검사하기 위해 커스텀 유효성 검사 로직을 제공할 수 있다. 실시예에 따르면, 그러한 솔루션 유효성 검사기는 커스터마이즈된 솔루션들일 수 있고, 또는 제3자 공급업체(vendor)로부터 획득될 수 있다.
부하 분산 모듈(506)은 효율적이고 스케일가능한 방식으로 소프트웨어 애플리케이션들을 호스트들에게 할당하기 위해 하나 이상의 알고리즘을 이용한다. 일 실시예에서, 부하 분산 알고리즘은 소프트웨어 애플리케이션의 사용 빈도에 기초한다. 이 예에서, 부하 분산 모듈(506)은 들어오는 요청들을 추적하여, 솔루션 유형, 및 소프트웨어 애플리케이션이 호스트되기 위해 어디에 할당되는지를 저장한다. 지정된 수의 요청에 대해 각 솔루션 유형에 대한 요청들의 빈도에 관한 계산이 이루어진다. 따라서, 예를 들어, 가장 최근의 10000개의 요청에 대하여, 솔루션 유형 A가 이러한 10000개의 요청 중 60%를 차지한 경우, 솔루션 유형 A에 대하여 새로운 요청이 수신된다면, 이 요청에 대한 소프트웨어 애플리케이션은 솔루션 유형 A에 대한 이전의 요청들에 대한 것과 동일한 호스트 컴퓨터들의 분포에 따라 호스트 컴퓨터들에 맵핑된다. 따라서, 새로운 요청은 솔루션 유형 A를 이용하는 다른 애플리케이션들을 이미 호스트하고 있는 호스트 컴퓨터로 지향될 가능성이 높다.
다른 실시예에서, 부하 분산 알고리즘은 사용의 비용에 기초하여 소프트웨어 애플리케이션 솔루션들을 성능 계층들에 할당한다. 예를 들어, 이전의 자원 사용에 의해 측정될 때 최악의 성능 특성을 갖는 솔루션들은 가장 낮은 성능 계층에 라우팅된다. 소프트웨어 애플리케이션 솔루션들은 성능에 기초하여 사용 패널티를 할당받아서, 최악의 성능을 갖는 솔루션들은 실행하기에 너무 비용이 많이 들게 된다. 이와 같이 성능이 불량한 솔루션들을 "워싱아웃(washing out)"하는 것은 전체적인 시스템 건강을 고무시킨다. 또한, 성능이 불량한 솔루션들은 다른 성능이 불량한 솔루션들과 계층을 공유하므로, 서비스에 대한 임의의 장애(즉, 불량한 성능으로 인해 종료되는 솔루션)은 다른 성능이 불량한 솔루션들에 영향을 주는 것으로 고립된다.
부하 분산 메커니즘은 확장가능하다. 고객들은 부하 분산을 자신의 요구에 더 명확하게 맞출 수 있는 일반적 템플릿에 기초한 자기 자신의 부하 분산 알고리즘을 제공할 수 있다.
호스팅 시스템에서 스케일링을 보장하기 위한 추가의 수단으로서, 솔루션들은 해싱 알고리즘을 이용하여서도 부하 분산될 수 있다. 해싱 알고리즘은 솔루션들을 식별하고, 부하 분산 모듈은 그러한 해시에 기초하여 솔루션들을 서버 컴퓨터들에 라우팅한다. 예를 들어, 호스트될 소프트웨어 애플리케이션이 서버 컴퓨터에서 이미 호스트되고 있는 솔루션을 나타내는 경우, 해싱 알고리즘은 동일한 솔루션이 다른 서버에서 호스트되는 것을 방지한다. 이는 동일한 소프트웨어 애플리케이션이 2개의 서로 다른 호스트 컴퓨터에서 호스트되게 하는 것의 오버헤드를 감소시킨다.
도 6은 예시적인 백엔드 모듈(600)을 도시하고 있다. 백엔드 모듈(600)은 자원 할당량(resource quota) 모듈(602), 자원 모니터링 모듈(604) 및 어셈블리 캐시 관리 모듈(608)을 포함한다. 자원 할당량 모듈(602)은 시스템 자원들을 추적하고 호스트 사이트들에게 책임을 부과하기 위해 이용된다. 사이트가 자원 할당량을 초과하는 경우, 사이트 관리자들은 패널티를 받고 솔루션들은 실행되지 않으므로, 사이트 관리자는 그들이 사용하는 솔루션들이 적절하게 실행하고 있을 것을 보장하도록 동기를 부여받는다. 애플리케이션들을 호스트하는 서버 컴퓨터(호스트 사이트)는 CPU 사용량, 데이터베이스 사용량, 메모리 사용량 등과 같은 시스템 자원에 대한 자원 할당량을 제공받고, 이러한 자원들은 일간 배당값(daily allotted value)에 대해 추적된다. 예시적인 할당량은 가장 많이 사용되는 자원의 일간 배당값의 백분율로서 사용자에게 제시된다. 예를 들어, 솔루션이 그것의 데이터베이스 자원의 70% 및 그것의 CPU 자원의 60%를 사용한다면, 그날의 할당량은 70%로서 사용자에게 제시된다.
자원 모니터링 모듈(604)은 소프트웨어 애플리케이션 솔루션에 의해 사용되는 자원들을 모니터링하고, 자원 할당량이 초과되었는지를 결정한다. 자원 할당량이 초과되는 경우, 예를 들어, 솔루션이 그것의 메모리 할당량보다 많이 사용하는 경우, 솔루션은 종료된다. 이러한 방식의 자원 모니터링을 사용하는 것은 시스템 문제들에 대한 선제적인(proactive) 방식이다. 예를 들어, 프로세스가 무한 루프로 가서 잠재적으로 몇시간 동안 쉬지 않고 계속하여 실행되는 경우, 자원 모니터링의 사용은, 전체 시스템 성능이 악화되기 전에, 그리고 시스템 자원들이 격감되기 전에, 그 프로세스를 종료시킬 것이다.
어셈블리 캐시 관리 모듈(608)은 클라이언트로부터의 커스텀 소프트웨어 애플리케이션들의 설치 및 실행을 관리한다. 어셈블리들은 커스텀 코드의 컨테이너들이다. 어셈블리 캐시 관리 모듈(608)에서, 호스트 서비스 프로세스는 커스텀 코드의 어셈블리들을 관리하고, 그 코드가 서버 컴퓨터에서 어떻게 실행되어야 하는지를 관리한다. 어셈블리 캐시 관리 모듈(608)은 어셈블리가 필요할 때는 원격 서버에 로드되고, 필요하지 않을 때는 언로드되는 것을 보장한다. 또한, 작업자(worker) 프로세스는 그 코드의 실제 실행을 관리한다.
백엔드 모듈(600)은 소프트웨어 애플리케이션들이 안전한 방식으로 실행될 것을 보장하기 위해, 고립된 기반구조를 이용하여 샌드박스된 환경에서 실행된다. 작업자 프로세스는 시스템 자원들 및 다른 소프트웨어 애플리케이션들로의 액세스를 제한하는 제한된 보안 토큰으로 생성된다. 이러한 방식으로, 악성 애플리케이션 코드의 시스템 충격이 제한된다.
도 7은 서버에서 소프트웨어 애플리케이션들을 호스트하는 예시적인 방법을 보여주는 흐름도이다. 동작(702)에서, 소프트웨어 애플리케이션을 호스트하기 위한 요청이 로컬 서버에서 수신된다. 일례는, 커스텀 소프트웨어 애플리케이션을 SharePoint 사이트에 업로드하는 Microsoft SharePoint의 사용자이다. 동작(704)에서, 로컬 서버는 애플리케이션 소프트웨어의 유효성을 검사하여, 서버 상에서 사용하기에 안전한지를 확인하기 위해 검사한다. 예를 들어, 소프트웨어 애플리케이션은 소프트웨어 애플리케이션들의 안전 리스트 상에 있음을 확인하기 위해 검사함으로써, 또는 코드 기반의 유효성 검사 프로그램을 이용함으로써 유효성 검사될 수 있다.
소프트웨어 애플리케이션의 유효성이 검사되고 나면, 로컬 호스트는 어느 서버가 애플리케이션 소프트웨어를 호스트해야 하는지에 대한 결정을 내린다. 이것은 다중 동작 프로세스이다. 첫번째로, 동작(706)에서, 소프트웨어 애플리케이션에 대해 성능 계층이 결정된다. 효율성의 관점에서 볼 때, 유사한 성능의 소프트웨어 애플리케이션들을 동일한 서버에서 호스트하는 것이 가장 바람직하다. 이러한 방식으로, 성능이 불량한 애플리케이션이 동일한 서버에서 더 빠르게 실행하는 애플리케이션에 영향을 주지 않을 것이다. 다음으로, 동작(708)에서, 소프트웨어 애플리케이션에 대하여 솔루션 유형이 결정된다. 또한, 유사한 애플리케이션들을 함께 그룹짓는 것이 효율적이고 스케일가능성을 향상시킨다. 또한, 호스트될 소프트웨어 애플리케이션이 시스템 상에서 이미 호스트되고 있는지를 아는 것이 중요하다. 이러한 결정을 내리는 한가지 방식은 각각의 소프트웨어 애플리케이션에 대해 고유한 해시값을 결정하는 해싱 알고리즘을 통하는 것이다. 이미 호스트되고 있는 애플리케이션을 호스트하기 위한 요청이 이루어지는 경우, 해시 수치들이 일치하여, 로컬 서버에 이 애플리케이션이 이미 호스트되고 있음을 알려줄 것이다.
다음으로, 동작(710)에서, 로컬 서버는 어느 소프트웨어 애플리케이션들이 어느 원격 서버들에서 호스트될지를 결정하기 위해, 구성 데이터베이스로부터 토폴로지 정보를 획득한다. 동작(712)에서, 로컬 서버는 어느 원격 서버가 소프트웨어 애플리케이션을 호스트해야할지를 결정하기 위해, 부하 분산 알고리즘과 함께, 성능 계층, 솔루션 유형 및 토폴로지 정보를 이용한다. 이러한 결정의 결과는 유사한 솔루션 유형들 및 유사한 성능의 애플리케이션들이 함께 그룹지어지는 것이다. 동작(714)에서, 이러한 결정에 기초하여, 애플리케이션 소프트웨어를 호스트하기 위해 원격 서버가 할당된다. 또한, 이 결정에 기초하여, 소프트웨어 애플리케이션이 원격 서버 대신에 로컬 서버에서 호스트되는 것도 가능하다.
동작(716)에서 애플리케이션 소프트웨어가 실행되고, 동작(718)에서 애플리케이션 소프트웨어가 모니터링된다. 애플리케이션 소프트웨어를 모니터링하는 것은 소프트웨어에 할당된 자원 할당량이 초과되고 있지 않은지를 결정하는 것을 포함한다. 자원 할당량이 초과되고 있는 것으로 결정되는 경우, 소프트웨어 애플리케이션이 종료된다.
발명의 주제가 구조적 특징 및/또는 방법론적 단계에 특정한 언어로 기술되었지만, 첨부되는 청구항들에 정의되는 발명의 주제는 위에서 기술된 특정한 특징 또는 단계로 반드시 제한되는 것이 아니라는 점을 이해할 것이다. 오히려, 위에서 기술된 특정한 특징 또는 단계는 청구항들을 구현하는 예시적인 형태로서 개시된 것이다.

Claims (20)

  1. 애플리케이션 소프트웨어(304, 402)를 호스트하기 위한 시스템(100)으로서,
    로컬 서버(204) - 상기 로컬 서버(204)는 서버(202, 204, 206) 상에서 애플리케이션 소프트웨어(304, 402)를 호스트하기 위한 인터넷을 통한 클라이언트 컴퓨터(102)로부터의 요청을 처리하는 웹 프론트엔드 모듈(302)을 포함하고, 상기 애플리케이션 소프트웨어(304, 402)는 사용자의 비지니스에 커스터마이즈되며, 상기 애플리케이션 소프트웨어(304, 402)는 인터넷을 통해 상기 로컬 서버(202)에 업로드되고, 상기 애플리케이션 소프트웨어(304, 402)는 상기 로컬 서버(202) 또는 원격 서버(204, 206)에 설치될 수 있는 커스텀 코드 모듈들 내에 포함됨 -;
    하나 이상의 원격 서버(204, 206) - 원격 서버(204, 206)는 상기 원격 서버(204, 206)에서 호스트되는 애플리케이션 소프트웨어(402)의 설치 및 동작을 관리하는 백엔드 모듈(404)을 포함함 -;
    토폴로지 정보를 포함하는 구성 데이터베이스(210) - 상기 토폴로지 정보는 애플리케이션 소프트웨어(304, 402)를 호스트할 수 있는 서버들(202, 204, 206)의 설명(description)을 포함함 -; 및
    컨텐츠 데이터베이스(208) - 상기 컨텐츠 데이터베이스(208)는 서버(202, 204, 206) 상에서 호스트될 상기 소프트웨어 애플리케이션들(304, 402)의 컨텐츠에 관한 정보를 포함함 -
    를 포함하고,
    상기 웹 프론트엔드 모듈(302)은 상기 로컬 서버(202) 또는 상기 하나 이상의 원격 서버(204, 206) 중 어느 것이 상기 애플리케이션 소프트웨어(304, 402)를 호스트할 것인지를 결정하는 시스템.
  2. 제1항에 있어서,
    상기 로컬 서버(202)는 부하 분산(load balancing) 모듈(506)을 더 포함하고, 상기 부하 분산 모듈(506)은 상기 소프트웨어 애플리케이션의 성능 비용(performance cost)에 기초하여 소프트웨어 애플리케이션들(304, 402)을 서버들(202, 204, 206)에 할당하는 시스템.
  3. 제2항에 있어서,
    상기 소프트웨어 애플리케이션들(304, 402)은 그들의 성능 특성들(performance characteristics)에 기초하는 계층들(tiers)에 따라 그룹지어지는 시스템.
  4. 제2항에 있어서,
    상기 부하 분산 모듈(506)은 확장가능하고, 상기 부하 분산 모듈(506)은 소프트웨어 애플리케이션들(304, 402)을 특정 서버들(202, 204, 206)에 할당하기 위해, 사용자 공급된 프레임워크(user supplied framework)를 이용하는 시스템.
  5. 제1항에 있어서,
    상기 로컬 서버(202)는 유효성 검사 모듈(504)을 더 포함하고, 상기 유효성 검사 모듈(504)은 제3자들로부터의 솔루션 유효성 검사기들(solution validators)을 포함하고, 상기 솔루션 유효성 검사기들은 소프트웨어 애플리케이션(304, 402)이 서버(202, 204, 206)에 로드되어야할지를 결정하는 시스템.
  6. 제5항에 있어서,
    상기 솔루션 유효성 검사기들은 보안 검사들을 수행하는 것 및 가격 모델들(pricing models)을 구현하는 것으로 이루어진 그룹으로부터의 태스크들을 수행하는 시스템.
  7. 제1항에 있어서,
    상기 백엔드 모듈(404)은 자원 할당량 모듈(602)을 포함하고, 상기 자원 할당량 모듈(602)은 각 서버(204, 206)에 대해 시스템 자원들을 위한 할당량을 제공하는 시스템.
  8. 제8항에 있어서,
    상기 백엔드 모듈(404)은 자원 모니터링 모듈(604)을 포함하고, 상기 자원 모니터링 모듈(604)은 서버(204, 206) 상의 자원들이 자원 할당량을 초과하는지를 결정하는 시스템.
  9. 제1항에 있어서,
    상기 백엔드 모듈(404)은 어셈블리 캐시 관리 모듈(606)을 포함하고, 상기 어셈블리 캐시 관리 모듈(606)은 커스텀 코드 모듈들이 필요할 때는 로드되고 필요하지 않을 때는 언로드되는 것을 보장하기 위해 상기 커스텀 코드 모듈들을 관리하는 시스템.
  10. 제1항에 있어서,
    소프트웨어 애플리케이션(304, 402)이 고립된 기반구조를 이용하여 실행되고, 상기 고립된 기반구조는 서버(202, 204, 206) 상에서 실행되는 소프트웨어 애플리케이션(304, 402)이 상기 서버(202, 204, 206) 상의 시스템 자원들에 부정적인 영향을 주는 것을 방지하는 시스템.
  11. 서버(202, 204, 206) 상에서 소프트웨어 애플리케이션(304, 402)을 호스트하기 위한 방법으로서,
    서버(202, 204, 206) 상에서 소프트웨어 애플리케이션(304, 402)을 실행하기 위한 클라이언트 컴퓨터(102)로부터의 요청을 수신하는 단계 - 상기 소프트웨어 애플리케이션(304, 402)은 커스터마이즈된 컴포넌트들을 포함하고, 상기 커스터마이즈된 컴포넌트들은 상기 소프트웨어 애플리케이션(304, 402)이 특정 비지니스에 맞춤화될 수 있게 해 줌 -;
    상기 소프트웨어 애플리케이션(304, 402)을 유효성 검사하는 단계;
    상기 소프트웨어 애플리케이션(304, 402)에 대한 성능 계층을 결정하는 단계;
    상기 소프트웨어 애플리케이션(304, 402)에 대한 솔루션 유형을 결정하는 단계;
    이용가능한 호스트 컴퓨터들(202, 204, 206)의 토폴로지를 결정하는 단계;
    상기 성능 계층, 상기 솔루션 유형, 상기 토폴로지 및 부하 분산 알고리즘을 이용하여, 상기 소프트웨어 애플리케이션(304, 402)이 실행되어야 하는 원격 서버(204, 206)를 결정하는 단계;
    상기 소프트웨어 애플리케이션(304, 402)이 실행되어야 하는 원격 서버(204, 206)에 대한 결정에 기초하여, 상기 소프트웨어 애플리케이션(304, 402)을 원격 서버(204, 206)에 할당하는 단계;
    상기 소프트웨어 애플리케이션(304, 402)을 할당된 원격 서버(204, 206)에서 실행하는 단계; 및
    상기 원격 서버(204, 206) 상에서의 상기 소프트웨어 애플리케이션(304, 402)의 실행을 모니터링하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    제3자에 의해 제공되는 유효성 검사 기준을 이용하여 상기 소프트웨어 애플리케이션(304, 402)을 유효성 검사하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 유효성 검사 기준은 보안 검사들을 수행하는 것 및 가격 모델들을 구현하는 것을 포함하는 방법.
  14. 제11항에 있어서,
    상기 성능 계층은 제3자에 의해 제공되는 프레임워크를 이용하여 결정되는 방법.
  15. 제11항에 있어서,
    상기 솔루션 유형은 해싱 알고리즘에 의해 결정되는 방법.
  16. 제11항에 있어서,
    원격 서버(204, 206) 상의 시스템 자원들에 대하여 자원 할당량이 제공되는 방법.
  17. 제16항에 있어서,
    상기 원격 서버(204, 206) 상의 자원들은 상기 자원들이 자원 할당량을 초과하는지를 결정하기 위해 모니터링되는 방법.
  18. 제17항에 있어서,
    소프트웨어 애플리케이션(402)의 자원이 자원 할당량을 초과하는 경우, 상기 소프트웨어 애플리케이션이 종료되는 방법.
  19. 제11항에 있어서,
    커스터마이즈된 컴포넌트들의 실행을 관리하는 호스트 서비스 프로세스, 및 상기 커스터마이즈된 컴포넌트들과 연관된 코드를 실행하는 작업자(worker) 프로세스를 더 포함하는 방법.
  20. 실행될 때, 소프트웨어 애플리케이션들(304, 402)이 서버(202, 204, 206) 상에서 호스트될 것을 요청하는 방법을 수행하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 매체로서,
    상기 방법은,
    서버(202, 204, 206) 상에서 애플리케이션 프로그램(304, 402)을 호스트하기 위한 요청을 로컬 서버(202)에 의해 개시하는 단계;
    소프트웨어 애플리케이션 프로그램(304, 402)을 상기 로컬 서버(202)에 업로드하는 단계 - 상기 소프트웨어 애플리케이션 프로그램(304, 402)은 애플리케이션 솔루션에 특정한 커스터마이즈된 특징들(features)을 포함함 -;
    부하 분산 알고리즘을 상기 로컬 서버(402)에 업로드하는 단계 - 상기 부하 분산 알고리즘은 상기 소프트웨어 애플리케이션이 호스트되어야 하는 서버(202, 204, 206)를 결정하기 위한 메소드(method)를 제공함 -; 및
    유효성 검사 메커니즘을 상기 로컬 서버(402)에 업로드하는 단계 - 상기 유효성 검사 메커니즘은 상기 소프트웨어 애플리케이션(304, 402)이 호스트되어야 하는지를 결정하는 메소드를 제공함 -
    를 포함하는 컴퓨터 판독가능 매체.
KR1020107023007A 2008-03-15 2009-02-13 사용자 솔루션들의 스케일가능한 호스팅 KR20100136507A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/049,316 US20090235353A1 (en) 2008-03-15 2008-03-15 Scalable Hosting of User Solutions
US12/049,316 2008-03-15

Publications (1)

Publication Number Publication Date
KR20100136507A true KR20100136507A (ko) 2010-12-28

Family

ID=41064472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107023007A KR20100136507A (ko) 2008-03-15 2009-02-13 사용자 솔루션들의 스케일가능한 호스팅

Country Status (9)

Country Link
US (1) US20090235353A1 (ko)
EP (1) EP2266049A4 (ko)
KR (1) KR20100136507A (ko)
CN (1) CN101971164A (ko)
AU (1) AU2009229115A1 (ko)
BR (1) BRPI0908180A2 (ko)
MX (1) MX2010009898A (ko)
RU (1) RU2010138121A (ko)
WO (1) WO2009120421A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316101B2 (en) * 2008-03-15 2012-11-20 Microsoft Corporation Resource management system for hosting of user solutions
CN102377598B (zh) * 2010-08-26 2015-07-01 中国移动通信集团公司 一种互联网应用托管系统、设备和方法
CN102405471A (zh) * 2010-12-10 2012-04-04 华为技术有限公司 Web托管审查方法、装置及Web托管系统
KR20120072138A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 맞춤형 소프트웨어 제공 장치 및 방법, 그리고 소프트웨어 맞춤화 방법
US20130074064A1 (en) * 2011-09-15 2013-03-21 Microsoft Corporation Automated infrastructure provisioning
US9342333B2 (en) * 2013-03-14 2016-05-17 Microsoft Technology Licensing, Llc Backend custom code extensibility
US10255063B2 (en) * 2013-03-15 2019-04-09 Microsoft Technology Licensing, Llc Providing source control of custom code for a user without providing source control of host code for the user
EP2992415A4 (en) * 2013-04-30 2016-12-21 Hewlett Packard Entpr Dev Lp COORDINATION OF AN APPLICATION INSERT WITH A PLATFORM LEVEL
US9953299B2 (en) 2013-12-04 2018-04-24 PowWow, Inc. Systems and methods for sharing image data
US9661054B2 (en) * 2013-12-04 2017-05-23 PowWow, Inc. Systems and methods to configure applications
US9350792B2 (en) * 2014-04-16 2016-05-24 Go Daddy Operating Company, LLC Method for location-based website hosting optimization
CN104834562B (zh) * 2015-04-30 2018-12-18 上海新储集成电路有限公司 一种异构数据中心及该数据中心的运行方法
US10101981B2 (en) * 2015-05-08 2018-10-16 Citrix Systems, Inc. Auto discovery and configuration of services in a load balancing appliance
US20190146835A1 (en) * 2017-11-13 2019-05-16 International Business Machines Corporation Implementing cognitive dynamic logical processor optimization service
US10831638B2 (en) * 2018-08-21 2020-11-10 International Business Machines Corporation Automated analytics for improving reuse of application solutions

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961341B1 (en) * 1996-07-02 2005-11-01 Microsoft Corporation Adaptive bandwidth throttling for network services
US6108703A (en) * 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6532488B1 (en) * 1999-01-25 2003-03-11 John J. Ciarlante Method and system for hosting applications
US7590739B2 (en) * 1999-11-22 2009-09-15 Akamai Technologies, Inc. Distributed on-demand computing system
US20020194251A1 (en) * 2000-03-03 2002-12-19 Richter Roger K. Systems and methods for resource usage accounting in information management environments
US6816882B1 (en) * 2000-05-31 2004-11-09 International Business Machines Corporation System and method for automatically negotiating license agreements and installing arbitrary user-specified applications on application service providers
US20030018694A1 (en) * 2000-09-01 2003-01-23 Shuang Chen System, method, uses, products, program products, and business methods for distributed internet and distributed network services over multi-tiered networks
US7050963B2 (en) * 2000-09-12 2006-05-23 Progress Software Corporation Method and apparatus for flash load balancing
US20020062377A1 (en) * 2000-11-20 2002-05-23 Hillman Matthew F. Scalable directory, master and slave server based architecture for hosting application services
US7178143B2 (en) * 2001-03-09 2007-02-13 Bea Systems, Inc. Multi-version hosting of application services
US7325047B2 (en) * 2001-05-23 2008-01-29 International Business Machines Corporation Dynamic undeployment of services in a computing network
US7213065B2 (en) * 2001-11-08 2007-05-01 Racemi, Inc. System and method for dynamic server allocation and provisioning
EP1461679A4 (en) * 2001-11-12 2006-01-18 Worldcom Inc SYSTEM AND METHOD FOR THE FLUID IMPLEMENTATION OF MICRO-PAYMENTS RELATING TO CONSUMABLE SERVICES
US20030101113A1 (en) * 2001-11-26 2003-05-29 Dang Hong M. Intelligent system infrastructure for financial data computation, report remittance and funds transfer over an interactive communications network
US7085837B2 (en) * 2001-12-04 2006-08-01 International Business Machines Corporation Dynamic resource allocation using known future benefits
US20030135509A1 (en) * 2002-01-11 2003-07-17 Davis Andrew Thomas Edge server java application framework having application server instance resource monitoring and management
US7228326B2 (en) * 2002-01-18 2007-06-05 Bea Systems, Inc. Systems and methods for application deployment
US7058924B2 (en) * 2002-04-12 2006-06-06 International Business Machines Corporation Facilitating hosting of applications
US7290262B2 (en) * 2002-05-21 2007-10-30 International Business Machine Corporation Method and apparatus for dynamically determining information for deploying a web service
US7305431B2 (en) * 2002-09-30 2007-12-04 International Business Machines Corporation Automatic enforcement of service-level agreements for providing services over a network
US7831693B2 (en) * 2003-08-18 2010-11-09 Oracle America, Inc. Structured methodology and design patterns for web services
US7503031B2 (en) * 2004-02-19 2009-03-10 International Business Machines Corporation Method of transforming an application into an on-demand service
US7383271B2 (en) * 2004-04-06 2008-06-03 Microsoft Corporation Centralized configuration data management for distributed clients
US7747698B2 (en) * 2004-05-25 2010-06-29 Sap Ag Transaction model for deployment operations
US7478361B2 (en) * 2004-06-17 2009-01-13 International Business Machines Corporation Method and system for managing application deployment
CA2584269A1 (en) * 2004-10-06 2006-04-20 Digipede Technologies, Llc Distributed processing system
US20060080273A1 (en) * 2004-10-12 2006-04-13 International Business Machines Corporation Middleware for externally applied partitioning of applications
US7574490B2 (en) * 2004-11-20 2009-08-11 Microsoft Corporation Strategies for configuring a server-based information-transmission infrastructure
US7716254B2 (en) * 2005-09-12 2010-05-11 Infosys Technologies Ltd. System for modeling architecture for business systems and methods thereof
US20070282992A1 (en) * 2006-06-01 2007-12-06 Sun Microsystems, Inc. Method and system for service management in a zone environment
US8099454B2 (en) * 2007-08-03 2012-01-17 International Business Machines Corporation Staging a file within a distributed computing system
US9331919B2 (en) * 2007-11-30 2016-05-03 Solarwinds Worldwide, Llc Method for summarizing flow information of network devices

Also Published As

Publication number Publication date
CN101971164A (zh) 2011-02-09
MX2010009898A (es) 2010-09-30
BRPI0908180A2 (pt) 2015-08-18
EP2266049A4 (en) 2012-12-12
EP2266049A1 (en) 2010-12-29
AU2009229115A1 (en) 2009-10-01
US20090235353A1 (en) 2009-09-17
RU2010138121A (ru) 2012-03-20
WO2009120421A1 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
KR20100136507A (ko) 사용자 솔루션들의 스케일가능한 호스팅
US8316101B2 (en) Resource management system for hosting of user solutions
US10603584B2 (en) Dynamic resource allocation for gaming applications
US9722886B2 (en) Management of cloud provider selection
JP2021526751A (ja) 自己監視ブロックチェーンのための安全な合意に基づくエンドースメント
KR101063667B1 (ko) 분산된 환경에서의 계층화된 용량에 근거한 프로비저닝
US20080239985A1 (en) Method and apparatus for a services model based provisioning in a multitenant environment
US11017387B2 (en) Cryptographically assured zero-knowledge cloud services for elemental transactions
US10411977B2 (en) Visualization of workload distribution on server resources
US20140201371A1 (en) Balancing the allocation of virtual machines in cloud systems
US12001886B2 (en) Allocation of cloud-based resources for backup/recovery services
US11902102B2 (en) Techniques and architectures for efficient allocation of under-utilized resources
US10884818B2 (en) Increasing processing capacity of virtual machines
US11418583B2 (en) Transaction process management by dynamic transaction aggregation
US11308428B2 (en) Machine learning-based resource customization to increase user satisfaction
Keshavarzi et al. Adaptive Resource Management and Provisioning in the Cloud Computing: A Survey of Definitions, Standards and Research Roadmaps.
US9563419B2 (en) Managing deployment of application pattern based applications on runtime platforms
US20140351821A1 (en) Strategic Placement of Jobs for Spatial Elasticity in a High-Performance Computing Environment
US11487750B2 (en) Dynamically optimizing flows in a distributed transaction processing environment
KR102672580B1 (ko) 비정상 이벤트에 대한 가상 머신의 처리 용량 증가
Israr Architecture level mapping of cloud computing with grid computing
US11902178B2 (en) System and method to effectively allocate computing resources to end users
US11113119B2 (en) Managing computer resources
US20230153457A1 (en) Privacy data management in distributed computing systems
Richa A Review of SaaS Profit Maximization in Cloud Computing

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid