KR102359792B1 - 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법 - Google Patents

가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102359792B1
KR102359792B1 KR1020210095961A KR20210095961A KR102359792B1 KR 102359792 B1 KR102359792 B1 KR 102359792B1 KR 1020210095961 A KR1020210095961 A KR 1020210095961A KR 20210095961 A KR20210095961 A KR 20210095961A KR 102359792 B1 KR102359792 B1 KR 102359792B1
Authority
KR
South Korea
Prior art keywords
test
virtual server
code
request
average
Prior art date
Application number
KR1020210095961A
Other languages
English (en)
Other versions
KR20210138520A (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 KR20210138520A publication Critical patent/KR20210138520A/ko
Application granted granted Critical
Publication of KR102359792B1 publication Critical patent/KR102359792B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

가상 서버 상의 계산 코드의 테스트 전개를 위한 방법 및 시스템이 개시된다. 일 실시예에서, 예시적인 방법은 자원을 제공하도록 프로그래밍된 테스트 계산 코드를 수신하는 것; 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것; 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것; 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것; 테스트 가상 서버 및 복수의 가상 서버의 나머지의 계산 성능 측정을 수신하는 것; 수신된 계산 성능 측정에 기초하여 테스트 가상 서버의 테스트 점수를 계산하는 것; 및 테스트 점수가 설정 범위 밖인 경우 테스트 계산 코드를 정지하는 것을 포함한다.

Description

가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법{SYSTEMS AND METHODS FOR TEST DEPLOYMENT OF COMPUTATIONAL CODE ON VIRTUAL SERVERS}
본 개시는 일반적으로 가상 서버 상의 계산 코드(computational code)의 테스트 전개(test deployment)를 위한 컴퓨터화된 시스템 및 방법에 관한 것이다. 특히, 본 개시의 실시예는 테스트 계산 코드를 수신하고 테스트 가상 서버 상에 코드를 전개하는 시스템에 관한 것이다. 시스템은 또한 테스트 가상 서버의 리소스 사용량을 추적하고, 테스트 가상 서버의 리소스 사용을 다른 가상 서버의 리소스 사용량에 비교한다. 이러한 방법으로, 새로운 코드 변형은 사용자 경험(user experiences)에 대한 해로운 영향의 위험을 또한 최소화하면서, 실제 사용자 상호 작용으로 테스트될 수 있다.
가상 서버의 확산은 저비용으로 큰 컴퓨팅 리소스(computing resources)로의 액세스를 확대하였다. 다양한 기업은 클라우드 컴퓨팅(cloud computing)으로도 알려진, 가상 서버 리소스를 제공한다. 또한, 회사, 대학, 및 정부 조직은 다른 서비스 중에서도, 웹사이트를 호스팅(host)하고, 복잡한 컴퓨터 시뮬레이션을 수행하고, 큰 데이터베이스를 저장하기 위해 가상 서버를 이용한다. 가상 서버는 클라이언트에 안전하고, 신뢰할 수 있고, 확장 가능한(scalable) 계산 리소스를 제공하여, 클라이언트가 서버 성능을 유지하기보다 제품을 생산하는데 집중할 수 있게 한다.
하지만, 가상 서버 리소스를 관리하기 위한 전통적인 시스템은 사용자 경험을 표준화하고 리소스 관리를 단순화하기 위해 가상 서버에 계산 코드를 미러링한다(mirror). 이는 다수의 가상 서버를 관리하는 어려움을 감소시킬 수 있지만, 미러링은 새로운 버전의 코드가 동작의 광범위한 혼란을 초래하는 발견되지 않은 오류를 포함할 수 있다는 위험을 도입한다. 예를 들어, 새로운 버전의 웹사이트는 오류 없이 소규모의 테스트를 통과할 수 있다. 하지만, 높은 CPU 및 메모리 사용량과 같은, 치명적인 오류는 새로운 버전의 웹사이트가 더욱 높은 용량 및 더욱 큰 복잡성의 실제 사용자 상호 작용과 상호 작용할 때 나타날 수 있다. 이는 대량 웹사이트 중단(outages), 비용 증가, 및 사용자 및 판매 손실을 야기할 수 있다. 감소한 신뢰성은 또한 서비스의 미래 사용을 어렵게 할 수 있다.
따라서, 가상 서비스에 대한 소프트웨어의 테스트를 할 수 있게 하면서 예기치 않은 소프트웨어 장애의 영향을 제한하는 시스템 및 방법이 필요하다.
본 개시의 일 양상은 가상 서버 상의 계산 코드의 테스트 전개를 위한 컴퓨터 구현된 시스템에 관한 것이다. 시스템은 명령어를 저장하는 메모리 및: 테스트 계산 코드를 수신하는 것; 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것; 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것; 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것; 테스트 가상 서버 및 복수의 가상 서버의 나머지의 계산 성능 측정을 수신하는 것; 수신된 계산 성능 측정에 기초하여 테스트 가상 서버의 테스트 점수를 계산하는 것; 및 테스트 점수가 설정 범위 밖이면 테스트 계산 코드를 정지하는 것을 포함하는 동작을 수행하기 위한 명령어를 실행하도록 구성된 적어도 하나의 프로세서를 포함한다.
본 개시의 다른 양상은 가상 서버 상의 계산 코드의 테스트 전개를 위한 컴퓨터 구현된 방법에 관한 것이다. 방법은: 테스트 계산 코드를 수신하는 것; 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것; 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것; 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것; 테스트 가상 서버 및 복수의 가상 서버의 나머지의 계산 성능 측정을 수신하는 것; 수신된 계산 성능 측정에 기초하여 테스트 가상 서버의 테스트 점수를 계산하는 것; 및 테스트 점수가 설정 범위 밖이면 테스트 계산 코드를 정지하는 것을 포함한다.
본 개시의 다른 양상은 가상 서버 상의 계산 코드의 테스트 전개를 위한 컴퓨터 구현된 시스템에 관한 것이다. 시스템은 명령어를 저장하는 메모리 및: 테스트 계산 코드 및 베이스라인 계산 코드(baseline computational code)를 수신하는 것; 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것; 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것; 복수의 가상 서버의 나머지에 베이스라인 계산 코드를 업로드하는 것; 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것; 복수의 가상 서버의 나머지 상의 베이스라인 계산 코드를 초기화하는 것; 테스트 가상 서버 및 복수의 가상 서버의 나머지의 CPU 사용량의 측정을 수신하는 것; 설정된 기간 동안 테스트 가상 서버의 CPU 사용량의 측정의 제1 평균을 계산하는 것; 설정된 기간 동안 복수의 가상 서버의 나머지의 CPU 사용량의 측정의 제2 평균을 계산하는 것; 제2 평균에 대한 제1 평균의 비율을 계산하는 것; 비율이 임계치를 초과하면 테스트 계산 코드를 정지하는 것을 포함하는 동작을 수행하기 위한 명령어를 실행하도록 구성된 적어도 하나의 프로세서를 포함한다.
다른 시스템, 방법, 및 컴퓨터 판독 가능 매체가 또한 본 명세서에서 논의된다.
도 1은, 개시된 실시예와 일치하는, 가상 서버로 액세스를 가능하게 하는 네트워크를 도시한다.
도 2는, 개시된 실시예와 일치하는, 테스트 계산 코드 전개 프로세스의 흐름도이다.
도 3은, 개시된 실시예와 일치하는, 테스트 점수의 계산을 도시한다.
도 4는, 개시된 실시예와 일치하는, 요청 우선 순위(request priority)에 기초하여 요청을 다른 버전의 테스트 서버로 보내는 것의 흐름도이다.
도 5는, 개시된 실시예와 일치하는, 요청 우선 순위에 기초하여 요청을 테스트 서버로 보내는 것의 흐름도이다.
다음의 상세한 설명은 첨부 도면을 참조한다. 어디서든 가능하다면, 도면과 다음의 설명에서 동일한 참조 번호가 동일하거나 유사한 부분을 지칭하기 위해 사용된다. 수개의 예시적인 실시예가 본 명세서에 설명되어 있지만, 수정, 개조 및 다른 구현이 가능하다. 예를 들어, 도면에 도시된 구성 요소 및 단계에 대한 대체, 추가 또는 수정이 이루어질 수 있고, 본 명세서에 설명된 예시적인 방법은 개시된 방법에서 단계를 대체하거나, 재정렬하거나, 제거하거나 추가함으로써 수정될 수 있다. 따라서, 다음의 상세한 설명은 개시된 실시예 및 예시로 제한되지 않는다. 대신에, 본 발명의 적절한 범주는 첨부된 청구항에 의해 정의된다.
본 개시의 실시예는 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법에 관한 것이다. 가상 서버는 전통적인 서버 동작에서 사용할 수 없는 동작 중복(operation redundancy)을 제공한다. 예를 들어, 조직이 웹사이트를 호스팅하면, 웹사이트의 코드는 다수의 가상 서버에 복제될 수 있다. 하나의 가상 서버에 장애가 발생하면, 사용자가 오류의 존재에 대해 알림을 받지 않은 채로, 웹사이트에 대한 사용자의 요청이 다른 서버로 원활하게(seamlessly) 다시 보내질 수 있다. 이 중복은 새로운 버전의 코드의 실시간 테스트(live testing)를 더 할 수 있게 한다. 테스트 코드는 가상 서버의 하위 집합 상에서 실행될 수 있고, 성능 메트릭(performance metrics)은 서버 간에 비교될 수 있다. 예를 들어, 새로운 웹사이트가 하나의 가상 서버 상에서 전개될 수 있는 한편, 남은 가상 서버들은 이전 버전의 웹사이트를 계속 호스팅(hosting)한다. 사용자 경험을 방해하는(interrupts) 결함이 새로운 웹사이트에 발생하면, 사용자는 사용자에 대한 최소의 혼란으로 이전 버전의 웹사이트를 호스팅하는 가상 서버로 이전될(transferred) 수 있다. 추가적으로, 테스트로부터 파생된 데이터는 테스트 계산 코드의 완전한 동작 전개에 대한 결정을 알릴 수 있다.
도 1은 가상 서버 테스트 전개 시스템(102)을 포함하는 네트워크(100)를 도시한다. 시스템(102)은 적어도 하나의 프로세서(104), 데이터가 송신되게 하는 입출력(input/output, I/O) 디바이스(106), 및 적어도 하나의 메모리(108)를 포함한다. 메모리(108)는 가상 서버 테스트 전개 시스템(102)을 동작시키기 위한 프로그램을 저장한다. 메모리(108)는 또한, 그래픽 사용자 인터페이스(graphical user interface, GUI)에 대한 명령어를 저장할 수 있다. 시스템(102)은 가상 서버로서 구현될 수 있다. 일부 실시예에서, 시스템(102)은 또한 가상 서버에 대한 구성 관리 데이터베이스(configuration management database)로서 동작할 수 있다.
또한, 프로세서(104)는 정보를 조작하거나 처리할 수 있는 일반 또는 특정 전자 디바이스일 수 있다. 예를 들어, 프로세서는 임의의 수의 중앙 처리 장치(또는 “CPU”), 그래픽 처리 장치(또는 “GPU”), 광학 프로세서, 프로그래머블 로직 컨트롤러(programmable logic controller), 마이크로컨트롤러, 마이크로프로세서, 디지털 신호 프로세서, 지적 재산권(intellectual property, IP) 코어, 프로그래머블 로직 어레이(Programmable Logic Array, PLA), 프로그래머블 어레이 로직(Programmable Array Logic, PAL), 일반 어레이 로직(Generic Array Logic, GAL), 복합 프로그래머블 로직 디바이스(Complex Programmable Logic Device, CPLD), 필드 프로그래머블 게이트 어레이(Field-Programmable Gate Array, FPGA), 단일 칩 시스템(System On Chip, SoC), 주문형 집적 회로(Application-Specific Integrated Circuit, ASIC), 및 데이터 처리가 가능한 임의의 타입의 회로의 임의의 조합을 포함할 수 있다. 프로세서는 또한, 네트워크를 통해 결합된 다수의 기계 또는 디바이스에 걸쳐 분산된 하나 이상의 프로세서를 포함하는 가상 프로세서일 수 있다.
추가적으로, 메모리(108)는 프로세서에 의해(예를 들어, 버스를 통해, 미도시) 액세스 가능한 코드 및 데이터를 저장할 수 있는 일반 또는 특정 전자 디바이스일 수 있다. 예를 들어, 메모리는 임의의 수의 랜덤 액세스 메모리(random-access memory, RAM), 읽기 전용 메모리(read-only memory, ROM), 광학 디스크, 자기 디스크, 하드 드라이브, 솔리드 스테이트(solid-state) 드라이브, 플래시 드라이브, 보안 디지털(security digital, SD) 카드, 메모리 스틱, 컴팩트 플래시(compact flash, CF) 카드, 또는 임의의 타입의 저장 디바이스의 임의의 조합을 포함할 수 있다. 코드는 운영 체제(operating system, OS) 및 특정 작업을 위한 하나 이상의 애플리케이션 프로그램(또는 “apps”)을 포함할 수 있다. 메모리(108)는 또한 네트워크를 통해 결합된 다수의 기계 또는 디바이스에 걸쳐 분산된 하나 이상의 메모리를 포함하는 가상 메모리일 수 있다.
시스템(102)은 컴퓨터 네트워크(112)에 연결된다. 예를 들어, 컴퓨터 네트워크(112)는 임의의 수의 인터넷, 인트라넷, 근거리 네트워크(Local-Area Network, LAN), 광역 네트워크(Wide-Area Network, WAN), 도시권 네트워크(Metropolitan-Area Network, MAN), 가상 사설 네트워크(virtual private network, VPN), (예를 들어, IEEE 802.11a/b/g/n 표준을 준수하는) 무선 네트워크, 유선 네트워크, 전용선(leased line), 셀룰러 데이터 네트워크(cellular data network), 및 블루투스(Bluetooth) 연결, 적외선 연결, 또는 근거리 무선 통신(Near-Field Communication, NFC) 연결을 사용하는 네트워크의 임의의 조합을 포함할 수 있다.
시스템(102)은 고객 디바이스(110)에 직접 또는 컴퓨터 네트워크(112)를 통해 더 연결된다. 고객 디바이스(110)는 랩탑, 독립형 컴퓨터(standalone computer), 휴대전화 등을 포함할 수 있다. 사용자는 고객 디바이스(110)를 사용하여 가상 서버 상의 계산 코드의 테스트 전개와 관련된 웹페이지를 선택함으로써, 네트워크(112)를 통해 가상 서버 리소스에 대한 요청을 전송할 수 있다.
추가적으로, 시스템(102)은 개발자 디바이스(114)에 직접 또는 컴퓨터 네트워크(112)를 통해 연결된다. 개발자 디바이스(114)는 랩탑, 독립형 컴퓨터, 휴대전화 등일 수 있다. 개발자는 가상 서버 상에 실행될 계산 코드를 작성하거나, 또는 가상 서버 상에 저장될 데이터베이스를 구축하기 위해 개발자 디바이스(114)를 사용할 수 있다. 또한, 개발자 디바이스(114)는 가령, 종합 사용자 상호 작용(synthetic user interactions)으로 예비 테스트를 수행하는 데 사용될 수 있다. 예를 들어, 개발자 디바이스(114)는 웹사이트와의 과거의(historical) 사용자 상호 작용의 데이터베이스를 포함할 수 있다. 개발자는 전개 이전에 새로운 코드의 초기 테스트를 수행하기 위해 데이터베이스를 사용할 수 있다.
시스템(102)은 가상 서버 제공자(116)와 통신한다. 제공자(116)는, 예를 들어, 임대 또는 구매를 위해 이용 가능한, 서버 팜(server farm)과 같은, 복수의 서버 또는 범용(general purpose) 컴퓨터를 동작시키는 서비스일 수 있다. 일부 실시예에서, 제공자(116)는 처리 시간, 프로세서 성능(capability), 저장, 또는 대역폭과 같은 연결성에 대해 사용자에게 청구할 수 있다. 제공자(116)는 또한 미래 액세스를 보장하기 위한 착수금(retainer)으로서, 사용 수준에 관계 없이, 가상 서버로의 연결을 위해 설정된 베이스라인(baseline)을 사용자에게 청구할 수 있다. 제공자(116)는 다양한 성능의 서버 및 컴퓨터를 가질 수 있고, 유지 비용을 청구하면서 사용자에게 시스템을 판매할 수 있다. 제공자(116)에 의한 가상 서버 리소스를 판매하기 위한 다른 배열도 가능하다.
일부 실시예에서, 고객 디바이스(110)는 네트워크(112)를 통해 제공자(116)의 가상 서버에 의해 호스팅되는 서비스에 접속할 수 있다. 예를 들어, 회사는 전자상거래 웹사이트를 호스팅하기 위해 제공자(116)에 의해 운영되는 서버를 사용할 수 있다. 고객 디바이스(110)는 그후 네트워크(112)를 통해 전자상거래 웹사이트에 접속할 수 있다. 이러한 방법으로, 고객은 제공자(116)에 의해 운영되는 가상 서버와 상호 작용함으로써 회사의 웹사이트에 액세스할 수 있다. 이는 회사에 서버를 운영하는 유기적인 종업원을 갖지 않는 편의를 제공할 수 있고, 회사가 필요로 하는 연산력(computing power)의 금액에 대해서만 지불함으로써 비용을 감소시킬 수 있다. 대안적으로, 고객 디바이스(110)는 예를 들어, 서버를 유지 및 운영하지 않는 연산력 또는 제공자(116)의 가상 서버에 의해 저장되는 공통 데이터를 공유할 수 있는, 연구 협력자일 수 있다.
일부 실시예에서, 개발자 디바이스(114)는 테스트 계산 코드의 테스트를 조정하기 위해 시스템(102)과 통신한다. 예를 들어, 개발자는 실시간 사용자 상호 작용으로 테스트할 준비가 된 코드의 예비 테스트를 마칠 수 있다. 개발자는 리소스를 테스트하기 위해 개발자 디바이스(114)를 사용하여 요청을 제출할 수 있다. 요청은 네트워크(112)를 통해 시스템(102)으로 송신될 수 있다. 그 후, 시스템(102)은 예를 들어, 오류 상태를 트리거(trigger)하도록 시도하기 위해 사용 케이스와 함께 코드를 실행하는 것, 또는 실행 시간 및 리소스 사용량이 임계치 아래를 유지하도록 보장하는 것과 같은, 품질 보증 검사가 완료되었음을 확인함으로써, 또는 품질 보증 검사를 수행함으로써, 테스트가 진행될 수 있음을 확인할 수 있다. 시스템(102)은 또한 제공자(116)의 가상 서버 리소스 중에서 테스트 리소스를 선택하고 선택된 테스트 리소스에 테스트 계산 코드를 업로드할 수 있다. 대안적으로, 개발자 디바이스(114)는 시스템(102)으로부터, IP 주소, MAC 주소, 또는 가상 서버 식별자와 같은, 테스트 리소스 식별자를 수신한 이후 테스트 계산 코드를 업로드할 수 있다.
또한, 시스템(102)은 고객 디바이스(110)로부터 요청을 보낼 수 있다. 예를 들어, 일부 실시예에서, 많은 가상 서버는 웹사이트를 중복적으로 호스팅할 수 있다. 웹사이트에 대한 요청이 고객 디바이스로부터 수신될 때, 시스템(102)은 어느 가상 서버가 요청을 처리하고 고객 디바이스와 통신할지 결정할 수 있다. 추가적으로, 가상 서버 중 하나가 테스트 서버로서 식별되면, 시스템(102)은 디바이스로부터의 요청이, 지리적 출처, 디바이스 타입, 또는 디바이스로부터의 과거 요청과 같은, 요청의 특성에 기초하여 동작 서버가 아닌 테스트 서버로 전송되는지 여부를 결정할 수 있다.
일부 실시예에서, 시스템(102), 개발자 디바이스(114), 및 고객 디바이스(110), 또는 그들의 서브시스템(예를 들어, 메모리, 프로세서) 중 어느 것 또는 전체는 제공자(116)의 가상 서버에 의해 동작될 수 있다. 예를 들어, 개발자는 가상 서버에 연결된 단말기를 가질 수 있고, 코드를 컴파일하고 테스트하기 위해 가상 서버의 프로세서를 사용할 수 있다. 추가적으로, 시스템(102)의 프로세서(104)는 가상 서버의 프로세서일 수 있다.
도 2는 개시된 실시예와 일치하는, 테스트 계산 코드 전개 프로세스(200)의 흐름도이다. 시스템(102)은 프로세스(200)를 수행할 수 있다. 예를 들어, 프로세스(200)를 수행하기 위한 명령어는 메모리(108) 상에 저장되고 시스템(102)의 프로세서에 의해 구현될 수 있다. 프로세스(200)는 다음의 단계를 포함한다.
단계 202는 테스트 계산 코드를 수신하는 것을 포함한다. 개발자는 개발자 디바이스(114)를 사용하여 테스트 계산 코드를 제공할 수 있다. 예를 들어, 개발자는 테스트 계산 코드를 처음부터 작성하거나, (예를 들어, YAML 또는 JSON 포맷으로) 템플릿 언어(template language)를 사용하거나, 또는 테스트 계산 코드를 개발자 디바이스(114)로 업로드하기 위해 개발자 디바이스(114)를 사용할 수 있다. 개발자가 테스트를 위해 코드를 제출할 때, 개발자는 테스트 계산 코드가 대응하는 역할(role)을 제공할 수 있다. 예를 들어, 조직은 웹사이트 호스팅을 위해 열 개의 가상 서버를, 및 이메일 저장을 위해 다섯 개의 다른 가상 서버를 이용할 수 있다. 개발자는 테스트 코드가 웹사이트 호스팅 역할을 위한 것임을 표시할 수 있다.
개발자는 또한 바람직한 상호 작용의 타입, 상호 작용의 수, 또는 테스트 기간과 같은, 바람직한 테스트 시나리오의 정보를 제공할 수 있다. 예를 들어, 테스트 코드가 가상 화폐 트랜잭션을 확인하는 새로운 방법을 포함하면, 개발자는 코드가 비트코인 월렛(Bitcoin wallet)을 사용하여 물품을 구매하려고 시도하는 사용자의 1,000번의 상호 작용으로 테스트되어야 한다고 표시할 수 있다. 단계 202는 바람직한 테스트 시나리오의 추가적인 양상을 결정하는 것을 더 포함할 수 있다. 단계 202는 요청된 테스트 상호 작용의 수에 기초하여, 테스트 동작이 비교될 베이스라인 테스트 동작의 수를 계산할 수 있다. 비트코인 월렛을 사용하는 구매의 시나리오를 계속하면, 단계 202는 소프트웨어 테스트에서 바람직한 수준의 통계적 신뢰를 획득하기 위해, 테스트 코드가 1,000번의 상호 작용에 사용될 것이고, 2,000번의 상호 작용으로부터 베이스라인 코드의 성능에 비교될 것이라고 결정할 수 있다. 단계 202는 바람직한 통계적 검증력(statistical power)에 요구되는 베이스라인 및 테스트 상호 작용의 수를 결정하기 위해, 포아송(Poisson) 또는 가우시안(Gaussian) 분포와 같은, 통계적 분석을 사용할 수 있다. 추가적으로, 단계 202는 테스트 비용 및 시간뿐만 아니라, 요구되는 테스트의 수를 감소시키면서 통계적 신뢰를 최적화하기 위해, 블로킹(blocking), 랜덤화(randomization), 및 복제(replication)와 같은, 실험 계획(design of experiment) 방법을 이용할 수 있다.
일부 실시예에서, 단계 202는 테스트 코드의 다수의 변형을 수신하는 것을 포함할 수 있다. 예를 들어, 위의 가상 화폐 트랜잭션을 계속하면, 개발자는 하루 동안 예정된 시간에 비트코인 트랜잭션을 일괄적으로(in batches) 제출하는 제1 방법, 및 사용자가 트랜잭션을 개시할 때 필요에 따라 비트코인 트랜잭션을 제출하는 제2 방법을 위한 테스트 코드를 제공할 수 있다.
단계 204는 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것을 포함한다. 테스트 가상 서버는 개발자에 의해 지정된 역할을 위해 사용되는 가상 서버 중에서 무작위로 선택될 수 있다. 개발자가 코드의 다수의 테스트 버전을 제출하면, 단계 204는 복수의 테스트 가상 서버를 식별하는 것을 포함할 수 있다. 단계 204는 또한 가상 서버가 테스트 코드를 동작하기 위해 필요한 리소스를 갖는 것을 확인하는 것을 포함할 수 있다. 예를 들어, 개발자는 테스트 코드를 동작하기 위해 3.9 GHz로 지속적인 동작이 가능한 프로세서가 필요함을 표시할 수 있고, 단계 204는 테스트 가상 서버를 선택하기 전에 리소스 요건을 충족시키는 역할을 수행하는 가상 서버의 하위 집합을 식별할 수 있다.
또한, 실험 계획 방법론이 사용되면, 단계 204는 테스트 일정을 생성하는 것뿐만 아니라, 테스트를 수행하기 위해 서버의 블록(block)을 식별하는 것을 포함할 수 있다. 예를 들어, 하나의 서버는 제1 일에, 제2 서버는 제2 일에, 등으로 테스트를 수행할 수 있다. 이러한 방법으로, 테스트 결과에서 더욱 큰 통계적 신뢰가 더욱 짧은 시간에 얻어질 수 있다. 추가적으로, 단일의 결함이 있는 서버의 결과가 다른 제대로 기능하는(properly-functioning) 서버로부터의 결과를 고려하여 희석될 것(diluted)이므로, 테스트 결과는 더욱 신뢰할 만할 수 있다.
단계 206은 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것을 포함한다. 일부 실시예에서, 단계 206은 또한 데이터베이스, 변수 값, 또는 모델 파라미터와 같은, 리소스 파일을 업로드하는 것을 포함할 수 있다. 시스템(102)은 테스트 계산 코드를 업로드하거나, 개발자가 코드를 업로드할 수 있게 하기 위해 개발자 디바이스(114)에 허가 키(permission key) 또는 가상 서버 식별자를 제공할 수 있다. 다수의 가상 서버가 단계 204에서 선택되면, 코드는 각각의 선택된 가상 서버에 동시에 업로드되거나, 또는 예정된 복제에 대응하는 지정된 시간에 업로드될 수 있다.
단계 208은 가령, 코드가 송신 오류 없이 업로드되었음을 보장하는 검사합계(checksums)를 테스트하고, 리소스를 공급하고(provisioning), 및 사용자 요청을 테스트 가상 서버로 보냄으로써, 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것을 포함한다. 추가적으로, 시스템(102)은 테스트 가상 서버 상에 예비 테스트를 실행하고, 예를 들어, 개발자에 의해 수행된 테스트 결과와의 비교에 의해, 테스트 코드가 제대로 기능하고 있음을 확인할 수 있다. 예비 테스트 결과와 차이가 있는 것과 같이, 예비 가상 서버 테스트가 실패하거나, 또는 오류가 발생하면, 시스템(102)은 테스트 가상 서버와의 사용자 상호 작용을 허용하기 전에 테스트를 중단하고 개발자에게 표시를 제공할 수 있다. 이는 개발자가 가상 서버에 업로드하기 전에 재구성하는 것을 잊은 로컬 테스트를 위한 코드에 포함된 잠재된(latent) 테스트 파라미터와 같은, 잘못된 구성(misconfiguration)을 개발자가 정정하는 것이 가능하게 할 수 있다.
일부 실시예에서, 개발자는, 가상 서버의 유사한 양의 처리 능력, 메모리, 또는 대역폭을 소비하는 것과 같이, 테스트 버전이 베이스라인 코드에 비슷한 방식으로 수행되는지를 결정하기 위해, 계산 코드의 테스트 버전의 성능을 코드의 베이스라인 버전에 비교하는 것을 원할 수 있다. 베이스라인 계산 코드 및 테스트 계산 코드는 역할과 관련될 수 있다. 또한, 테스트 계산 코드는 베이스라인 계산 코드의 베타 버전(beta version)일 수 있다. 예를 들어, 베이스라인 코드는 전자상거래 웹사이트 상의 구매를 위한 신용 카드 처리를 구현할 수 있고, 테스트 계산 코드는 개발자가 처리 시간을 개선할 것으로 믿는 신용 카드 처리 코드의 베타 버전일 수 있다. 일부 시나리오에서, 예를 들어 베이스라인 코드가 가상 서버 상에 이미 실행 중이지 않은 경우, 또는 베이스라인 코드가 가상 서버 중에서 표준화되지 않은 경우, 단계 208은 복수의 가상 서버의 나머지(즉, 테스트 서버로 선택되지 않은 서버) 상에 베이스라인 계산 코드를 초기화하는 것을 더 포함할 수 있다.
단계 210은 테스트 가상 서버 및 복수의 가상 서버의 나머지의 계산 성능 측정을 수신하는 것을 포함한다. 측정은 GHz로 측정된 처리 능력과 같은, 속도(rate), 또는 예를 들어, Mbps로 측정된 네트워크 사용량일 수 있다. 측정은 또한 메모리 사용량, 또는 오류 횟수를 포함할 수 있다. 측정은 제공자에 의해 보고되고 API를 통해 획득될 수 있다. 측정은 실시간으로 제공되거나, 또는 측정 로그가 간격을 두고 보고될 수 있다. 또한, 테스트 및/또는 베이스라인 코드는, 병렬 프로세스와 시간을 맞추는 것(timing)과 같이, 측정을 식별하도록 측정을 보고하거나 또는 테스트를 수행하기 위한 명령을 포함할 수 있고, 가상 서버 제공자로부터의 보고서에 독립적인 시스템(102)에 보고서를 제공할 수 있다. 테스트 및/또는 베이스라인 코드는 또한 오류가 발생한 코드의 라인, 오류 식별자, 변수 값, 타임스탬프, 및 다른 진단 정보와 같은 정보를 포함하는, 동작 중에 접한 임의의 오류를 보고하도록 구성될 수 있다. 오류 보고서는 실시간으로 제공될 수 있거나, 또는 오류 보고서는 예를 들어, 타입 또는 시간에 따른 오류 빈도를 포함하는, 설정된 간격으로 제공될 수 있다. 일부 실시예에서, 측정은 보고 오류로 인해 불가능할 수 있다. 이러한 누락된 측정은 개발자 검토를 위해 플래그되거나(flagged), 또는 오류로서 카운트될 수 있다.
단계 212는 수신된 계산 성능 측정에 기초하여 테스트 가상 서버의 테스트 점수를 계산하는 것을 포함한다. 시스템(102)은, 도 3을 참조하여 더욱 상세히 설명된, 테스트 점수를 계산할 수 있다.
도 3은, 개시된 실시예와 일치하는, 테스트 점수의 계산을 도시한다. 도 3은 CPU 사용량(318), 메모리 사용량(320), 네트워크 사용량(322), 및 오류 횟수(324)와 같은, 복수의 성능 메트릭에 대한 계산된 값 및 복수의 측정값을 갖는 차트(300)를 도시한다. 측정값은, 개발자에 의해 특정된 테스트 기간과 같은, 설정된 기간에 대응하는 각각의 성능 메트릭의 평균, 피크, 또는 총 횟수를 반영할 수 있다. 또한, 측정값은, 예를 들어, 1,000번의 사용자 상호 작용과 같은 동작의 설정된 수에 대응하는 평균, 피크, 또는 총 횟수를 반영할 수 있다. 이는 주말 동안의 24시간 테스트가 평일 동안의 24시간 테스트보다 사용자 상호 작용의 다른 형태 및 수를 접할 수 있기 때문에, 테스트가 신뢰할 수 있는 데이터를 가짐을 보장하도록 도울 수 있다.
테스트 서버 측정(302)은 테스트 기간 동안 테스트 가상 서버로부터의 데이터를 반영한다. 예를 들어, 테스트 서버의 오류 횟수(324)는 테스트 기간 동안 3이었다. 네트워크 사용량(322)은 테스트 기간 동안 평균 Mbps, 또는 테스트 기간 동안 송신된 데이터의 총량과 같은, 속도로 측정될 수 있다. CPU 사용량(318)은 또한 평균 속도, 또는 테스트 기간 동안 수행된 계산의 총 수로 측정될 수 있다. 다수의 테스트 서버가 동시에 또는 시간에 따른 복제 블록(replicate block)으로 사용되면, 테스트 서버 측정(302)은 모든 테스트 서버에 대한 성능 메트릭의 누적 또는 평균 측정일 수 있다. 유사하게, 베이스라인 서버 측정(304)은 또한 모든 베이스라인 서버에 대한 성능 메트릭의 누적 또는 평균 측정을 반영할 수 있다. 일부 실시예에서, 평균 리소스 소비보다 크거나 작은, 3 표준 편차 초과를 사용하는 서버와 같은, 이상치 메트릭(outlier metrics)은 생략될 수 있다.
비율 값(306)은 베이스라인 서버 값에 대한 테스트 서버 값의 비율을 반영한다. 예를 들어, 차트(300)의 예시 데이터에 도시된 바와 같이, 테스트 서버(302)는 테스트 기간 동안 평균 300MB의 메모리를 사용한 반면, 베이스라인 서버는 240MB를 사용하여, 300/240 = 1.25의 비율을 산출하였다. 일부 실시예에서, 베이스라인 서버 측정(304)의 오류 횟수(324)와 같은, 널 값(null value)은 비율을 결정할 때 생략될 수 있다.
시스템(102)은 또한 테스트 서버가 통과하기 위해 요구되는 임계 비율(308)을 저장할 수 있다. 임계 값도 또한 사용될 수 있다(예를 들어, 두 개보다 많은 오류는 허용될 수 없거나, 500MB보다 큰 메모리는 사용될 수 없다). 상태 필드(310)는 비율(306)의 대응하는 임계치(308)와의 비교에 의해 결정될 수 있다. 따라서, 차트(300)에 도시된 바와 같이, CPU 사용량(318)의 상태(310)는 비율 1.25가 임계치 1.1보다 크기 때문에 “실패”이지만, 메모리 사용량(320)의 상태(310)는 비율 1.25가 임계치 1.3보다 작기 때문에 “통과”이다. 또한, 상태 필드(310)는 실패 또는 통과의 상태에 의존하여 각각 메트릭 점수(312), 예를 들어, 0 또는 1로 전환될 수 있다.
차트(300)는 또한 각각의 성능 메트릭에 할당된 가중치(314)를 디스플레이한다. 조직은 상대적 중요성을 표시하도록 성능 메트릭에 가중치를 할당할 수 있다. 예를 들어, CPU 사용량의 초과(overage)는 메모리 사용량의 초과보다 더 높은 요금이 가상 서버 제공자에 의해 청구되게 할 수 있고, 따라서 CPU 사용량의 가중치는 메모리 사용량의 가중치보다 클 수 있다. 가중치(314)와 대응하는 메트릭 점수가 곱해져 각각의 메트릭에 대한 비교 메트릭 점수(316)를 산출한다. 따라서, 비교 메트릭은 테스트 가상 서버의 계산 성능 측정을 복수의 가상 서버의 나머지의 계산 성능 측정의 평균에 비교한 것에 기초하여 계산될 수 있다. 또한, 테스트 점수는 적어도 하나의 비교 메트릭과 가중치의 곱을 포함할 수 있다.
추가적으로, 테스트 점수(326)는 비교 메트릭(316)의 합계일 수 있다. 따라서, 테스트 점수(326)는 테스트 계산 코드의 성능의 종합적인 분석을 나타낼 수 있다. 추가적인 실시예에서, 테스트 점수는, 베이스라인 값에 대한 비교 없이, 측정과 임계치 간의 적어도 하나의 비교를 포함할 수 있다.
도 2로 돌아와서, 단계 212 이후, 프로세스(200)는 단계 214로 진행하여 테스트 점수가 설정 범위 밖인지 결정한다. 일부 실시예에서, 설정 범위는 내부 사용자(예를 들어, 개발자, 시스템(100)을 소유, 운영, 또는 임대하는 조직의 종업원)에 의해 결정될 수 있다. 테스트 점수가 설정 범위 안이면, 단계 214는 NO이고, 프로세스(200)는 단계 216으로 진행하여 동작의 시간 또는 횟수로 측정된, 테스트 기간이 만료되었는지 결정한다. 단계 216이 NO이면, 프로세스(200)는 단계 210으로 돌아와 계산 성능 측정을 수신한다. 하지만, 단계 214 또는 단계 216이 YES여서, 테스트 점수가 설정 범위 밖이거나 테스트 기간이 만료되었다면, 프로세스(200)는 단계 218로 진행하고 예를 들어, 비-테스트 서버에 트래픽을 라우팅함으로써, 테스트 계산 코드를 정지한다. 이러한 방법으로, 프로세스(200)를 이용하는, 시스템(102)은 테스트 코드가 최소 성능 표준으로 계속 동작함을 보장할 수 있다. 따라서, 시스템(102)은 사용자 경험이 새로운 소프트웨어를 테스트하는데 사용되는 사용자의 상호 작용에도 불구하고 감소되지 않음을 보장할 수 있다. 또한, 동작의 설정된 기간 또는 설정된 횟수가 작으면, 프로세스(200)는 테스트 점수에 의해 나타난 바와 같이, 테스트 코드가 조직 표준 미만으로 동작하고 있는지 신속하게 식별하고, 예를 들어 트래픽을 비-테스트 서버로 다시 보냄으로써 테스트 계산 코드를 정지하여, 사용자 경험에 대한 피해를 최소화할 수 있다.
일부 실시예에서, 시스템(102)은 우선 순위 수준(priority level)에 기초하여 트래픽을 테스트 또는 비-테스트 가상 서버로 보낼 수 있다. 예를 들어, 사이트의 빈번한 사용자가 소프트웨어의 베타 테스트의 결과로서 서비스의 어떠한 감소를 경험하지 않도록 높은 구매 이력을 갖는 IP 주소 또는 MAC 주소로부터의 요청은 비-테스트 서버로 보내질 수 있다. 이는 높은 가치의 사용자에게 더욱 안정적인 웹사이트 상호 작용을 제공함으로써, 더 많은 고객을 보유할 수 있다. 대안적으로, 높은 가치의 또는 유료 고객(paying customers)은 향상된 사용자 상호 작용을 제공하기 위해 낮은 가치의 고객 이전에 베타 버전에 대한 “조기 액세스(early access)” 권한이 부여될 수 있다.
도 4는, 개시된 실시예와 일치하는, 요청 우선 순위에 기초하여 요청을 다른 버전의 테스트 서버로 보내기 위한 프로세스(400)의 흐름도이다. 시스템(102)은 예를 들어, 프로세스(200)와 함께 프로세스(400)를 수행할 수 있다. 일부 실시예에서, 우선 순위에 따라 요청을 라우팅하는 것은 가상 서버에 의해 수행될 수 있다. 예를 들어, 제1 버전의 테스트 가상 서버는 요청을 높은 우선 순위를 갖는 것으로 식별하고 요청을 제2 버전의 테스트 가상 서버에 전달할 수 있다.
단계 402는 가상 서버 리소스에 액세스하기 위해 네트워크 연결을 통해 요청을 수신하는 것을 포함한다. 요청은 예를 들어, 고객 디바이스(110)로부터 올 수 있고, 가상 서버에 의해 호스팅되는 웹사이트에 대응하는 이미지 및 HTML 코드에 대한 요청일 수 있다.
단계 404는 요청에 낮은 우선 순위 또는 높은 우선 순위를 할당하는 것을 포함한다. 예를 들어, 시스템(102)은 시스템(102)에 요청을 제출한 사용자와 관련된 사용자 정보에 기초하여 요청을 수신할 때 요청에 우선 순위를 할당할 수 있다. 예를 들어, 사용자 정보는 요청을 제출한 사용자와 관련된 IP 주소 또는 MAC 주소를 포함할 수 있다. 요청의 우선 순위는 고객 계층(tier), 과거 고객 구매, 고객이 지불한 추가적인 요금, 지리적 출처, 디바이스 타입, 연결 속도 등에 따라 결정될 수 있다. 예를 들어, 제2 버전의 테스트 계산 코드가 제1 버전의 테스트 계산 코드보다 향상된 사용자 상호 작용을 제공한다고 알려지면, 더 많은 사용자에게 향상된 경험을 제공하기 위해 더 높은 우선 순위 요청이 제2 버전의 테스트 계산 코드에 라우팅될 수 있다.
단계 406은 요청의 우선 순위가 낮거나 높은지 결정하는 것을 포함한다. 단계 406은 단계 402 및 404를 수행하는 디바이스와 다른 디바이스에 의해 수행될 수 있다. 예를 들어, 시스템(102)은 요청을 수신하고, 우선 순위를 할당하고, 그후 가상 서버 제공자에 요청을 전달할 수 있다. 요청이 낮은 우선 순위이면, 프로세스(400)는 단계 408로 진행하고 요청을 제1 버전의 테스트 가상 서버로 보낸다. 요청이 높은 우선 순위이면, 프로세스(400)는 단계 410으로 진행하고 요청을 제2 버전의 테스트 가상 서버로 보낸다. 일부 실시예에서, 예를 들어, 제2 버전의 테스트 서버가 제1 버전의 테스트 서버보다 요청을 처리하는데 더 많은 시간을 필요로 한다고 알려지면, 낮은 우선 순위 요청이 제2 버전의 테스트 가상 서버로 보내지고, 높은 우선 순위 요청이 제1 버전의 테스트 가상 서버로 보내지도록, 단계 408 및 410은 뒤바뀔 수 있다. 제2 버전이 향상된 사용자 경험을 제공하더라도, 요청의 백로그(backlog)를 더욱 신속하게 처리하기 위해 더욱 많은 요청이 제1 버전에 라우팅될 수 있다.
도 5는, 개시된 실시예와 일치하는, 요청 우선 순위에 기초하여 테스트 서버에 요청을 보내기 위한 프로세스(500)의 흐름도이다. 시스템(102)은 예를 들어, 프로세스(200)와 함께 프로세스(500)를 수행할 수 있다. 일부 실시예에서, 우선 순위에 따라 요청을 라우팅하는 것은 가상 서버에 의해 수행될 수 있다. 예를 들어, 테스트 가상 서버는 요청을 높은 우선 순위를 갖는 것으로 식별하고 요청을 비-테스트 가상 서버에 전달할 수 있다.
단계 502는 가상 서버 리소스에 액세스하기 위해 네트워크 연결을 통해 요청을 수신하는 것을 포함한다. 요청은 예를 들어, 고객 디바이스(110)로부터 올 수 있고, 가상 서버에 의해 호스팅되는 웹사이트에 대응하는 이미지 및 HTML 코드에 대한 요청일 수 있다. 단계 504는 요청에 낮은 우선 순위 또는 높은 우선 순위를 할당하는 것을 포함한다. 예를 들어, 시스템(102)은 시스템(102)에 요청을 제출한 사용자와 관련된 사용자 정보에 기초하여 요청을 수신할 때 요청에 우선 순위를 할당할 수 있다. 예를 들어, 사용자 정보는 요청을 제출한 사용자와 관련된 IP 주소 또는 MAC 주소를 포함할 수 있다. 요청의 우선 순위는 고객 계층, 과거 고객 구매, 고객이 지불한 추가적인 요금, 지리적 출처, 디바이스 타입, 연결 속도 등에 따라 결정될 수 있다. 추가적으로, 대량 트래픽의 시간 동안, 우선 순위는 가상 서버들 간에 트래픽을 분산시키고 증가된 양을 더욱 잘 처리하도록 할당될 수 있다. 예를 들어, 테스트 계산 코드가 베이스라인 계산 코드보다 요청을 처리하는데 더 많은 시간을 필요로 한다고 알려지면, 테스트는 조절될 수 있고(throttled) 더 많은 요청이 요청의 백로그를 더욱 신속하게 처리하기 위해 베이스라인 서버에 라우팅될 수 있다.
단계 506은 요청의 우선 순위가 낮거나 높은지 결정하는 것을 포함한다. 단계 506은 단계 502 및 504를 수행하는 디바이스와 다른 디바이스에 의해 수행될 수 있다. 예를 들어, 시스템(102)은 요청을 수신하고, 우선 순위를 할당하고, 그후 가상 서버 제공자에 요청을 전달할 수 있다. 요청이 낮은 우선 순위이면, 프로세스(500)는 단계 508로 진행하고 요청을 테스트 가상 서버로 보낸다. 요청이 높은 우선 순위이면, 프로세스(500)는 단계 510으로 진행하고 요청을 복수의 가상 서버의 나머지 중 일 서버로 보낸다. 일부 실시예에서, 예를 들어, 테스트 서버가 높은 우선 순위 요청을 위해 유보된 새로운 능력을 호스팅할 때, 낮은 우선 순위 요청이 비-테스트 서버로 보내지고, 높은 우선 순위 요청이 테스트 서버로 보내지도록, 단계 508 및 510은 뒤바뀔 수 있다.
본 개시의 예시적인 실시예로서, 가상 서버 상의 계산 코드의 테스트 전개를 위한 컴퓨터 구현된 시스템은 명령어를 저장하는 메모리 및 동작을 수행하기 위한 명령어를 실행하도록 구성된 적어도 하나의 프로세서를 포함할 수 있다. 동작은 테스트 계산 코드 및 베이스라인 계산 코드를 수신하는 것을 포함할 수 있다. 동작은 또한 복수의 가상 서버로부터 테스트 가상 서버를 선택하는 것, 테스트 가상 서버에 테스트 계산 코드를 업로드하는 것, 및 복수의 가상 서버의 나머지에 베이스라인 계산 코드를 업로드하는 것을 포함한다. 또한, 동작은 테스트 가상 서버 상의 테스트 계산 코드를 초기화하는 것; 및 복수의 가상 서버의 나머지 상의 베이스라인 계산 코드를 초기화하는 것을 포함한다. 동작은 또한 테스트 가상 서버 및 복수의 가상 서버의 나머지의 CPU 사용량의 측정을 수신하고; 설정된 기간 동안 테스트 가상 서버의 CPU 사용량의 측정의 제1 평균을 계산하고; 설정된 기간 동안 복수의 가상 서버의 나머지의 CPU 사용량의 측정의 제2 평균을 계산하고; 및 제2 평균에 대한 제1 평균의 비율을 계산한다. 비율이 임계치를 초과하면, 동작은 테스트 계산 코드를 정지한다.
본 개시는 그의 특정 실시예를 참조하여 도시되고 설명되었지만, 본 개시는 다른 환경에서 수정없이 실시될 수 있음이 이해될 것이다. 전술한 설명은 예시 목적으로 제시되었다. 이는 총망라하는(exhaustive) 것이 아니며, 개시된 정확한 형태 또는 실시예에 제한되는 것이 아니다. 개시된 실시예의 명세서 및 실시를 고려하여 본 분야의 통상의 기술자에게 수정 및 개조가 명백할 것이다. 추가적으로, 개시된 실시예의 양상이 메모리에 저장되는 것으로 설명되어 있지만, 본 분야의 통상의 기술자는, 이러한 양상이 보조 저장 디바이스, 예를 들어, 하드 디스크 또는 CD ROM 또는 다른 형태의 RAM 또는 ROM, USB 매체, DVD, Blu-ray 또는 기타 광학 드라이브 매체와 같은 다른 타입의 컴퓨터 판독 가능한 매체에 또한 저장될 수 있음을 이해할 것이다.
기재된 설명 및 개시된 방법에 기초한 컴퓨터 프로그램은 숙련된 개발자의 기술 내에 있다. 다양한 프로그램 또는 프로그램 모듈은 본 분야의 통상의 기술자에게 공지된 임의의 기술을 사용하여 작성될 수 있거나 기존 소프트웨어와 관련하여 설계될 수 있다. 예를 들어, 프로그램 섹션 또는 프로그램 모듈은 .Net Framework, .Net Compact Framework(및 Visual Basic, C 등의 관련 언어), Java, C++, Objective-C, HTML, HTML/AJAX 조합, XML, 또는 Java 애플릿이 포함된 HTML에, 또는 이들에 의해 설계될 수 있다.
또한, 예시적인 실시예가 본 명세서에 설명되었지만, (예를 들어, 다양한 실시예에 걸친 양상의) 동등한 요소, 수정, 생략, 조합, 개조 및/또는 변경을 갖는 임의의 및 모든 실시예의 범주는 본 개시에 기초하여 본 분야의 통상의 기술자에 의해 인식될 것이다. 청구항에서 제한사항은, 청구항에 사용된 언어에 기초하여 광범위하게 해석되어야 하고, 출원의 절차 동안 또는 본 명세서에 설명된 예시에 제한되는 것은 아니다. 예시는 비배타적인 것으로 해석될 것이다. 또한, 개시된 방법의 단계는 단계를 재순서화하고, 및/또는 단계를 삽입하거나 삭제하는 것을 포함하여 임의의 방식으로 수정될 수 있다. 그러므로, 본 명세서 및 예시는 단지 예시적인 것으로 간주되고, 진정한 범주 및 사상은 다음의 청구항 및 그의 등가물의 전체 범주에 의해 나타내어진다.

Claims (20)

  1. 가상 서버 상의 계산 코드(computational code)의 테스트 전개(test deployment)를 위한 컴퓨터 구현된 시스템으로서, 상기 시스템은:
    명령어를 저장하는 메모리; 및
    테스트 가상 서버의 계산 성능 측정의 평균에 기초하여 상기 테스트 가상 서버의 테스트 점수를 계산하는 것; 및
    상기 테스트 점수가 임계치 초과 또는 미만이면 테스트 계산 코드를 정지하는 것(stopping)을 포함하는 동작을 수행하기 위한 상기 명령어를 실행하도록 구성된 적어도 하나의 프로세서를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 동작은:
    복수의 가상 서버 상의 베이스라인 계산 코드(baseline computational code)를 초기화하는 것을 더 포함하는, 시스템.
  3. 제2항에 있어서, 상기 테스트 가상 서버는 상기 복수의 가상 서버로부터 무작위로 선택되는, 시스템.
  4. 제2항에 있어서, 상기 테스트 계산 코드는 상기 베이스라인 계산 코드의 베타 버전(beta version)인, 시스템.
  5. 제1항에 있어서, 상기 계산 성능 측정은 CPU 사용량, 메모리 사용량, 네트워크 사용량, 또는 오류 횟수 중 적어도 하나를 포함하는, 시스템.
  6. 제1항에 있어서, 상기 테스트 점수를 계산하는 것은:
    상기 계산 성능 측정의 제1 평균 및 상기 계산 성능 측정의 제2 평균을 계산하는 것; 및
    상기 계산 성능 측정의 상기 계산된 제1 평균 및 상기 계산 성능 측정의 상기 계산된 제2 평균에 기초하여 상기 테스트 점수를 결정하는 것을 더 포함하는, 시스템.
  7. 제6항에 있어서, 상기 테스트 점수는 상기 계산 성능 측정의 상기 계산된 제1 평균, 상기 계산 성능 측정의 상기 계산된 제2 평균, 및 가중치(weight)에 기초하는, 시스템.
  8. 제1항에 있어서, 상기 테스트 점수는 설정된 동작의 수 또는 설정된 기간 중 적어도 하나에 대응하는 계산 성능 측정에 기초하여 결정되는, 시스템.
  9. 제1항에 있어서, 상기 동작은 상기 테스트 가상 서버 상의 상기 테스트 계산 코드를 초기화하는 것을 더 포함하는, 시스템.
  10. 제1항에 있어서, 상기 동작은:
    요청이 낮은 우선 순위(priority)일 때 상기 요청을 상기 테스트 가상 서버로 보내는 것(directing); 및
    상기 요청이 높은 우선 순위일 때 상기 요청을 복수의 가상 서버 중 하나의 가상 서버로 보내는 것을 더 포함하는, 시스템.
  11. 가상 서버 상의 계산 코드의 테스트 전개를 위한 컴퓨터 구현된 방법으로서, 상기 방법은:
    테스트 가상 서버의 계산 성능 측정의 평균에 기초하여 상기 테스트 가상 서버의 테스트 점수를 계산하는 것; 및
    상기 테스트 점수가 임계치 초과 또는 미만이면 테스트 계산 코드를 정지하는 것을 포함하는, 방법.
  12. 제11항에 있어서,
    복수의 가상 서버 상의 베이스라인 계산 코드를 초기화하는 것을 더 포함하는, 방법.
  13. 제12항에 있어서, 상기 테스트 가상 서버는 상기 복수의 가상 서버로부터 무작위로 선택되는, 방법.
  14. 제12항에 있어서, 상기 테스트 계산 코드는 상기 베이스라인 계산 코드의 베타 버전인, 방법.
  15. 제11항에 있어서, 상기 계산 성능 측정은 CPU 사용량, 메모리 사용량, 네트워크 사용량, 또는 오류 횟수 중 적어도 하나를 포함하는, 방법.
  16. 제11항에 있어서, 상기 테스트 점수를 계산하는 것은:
    상기 계산 성능 측정의 제1 평균 및 상기 계산 성능 측정의 제2 평균을 계산하는 것; 및
    상기 계산 성능 측정의 상기 계산된 제1 평균 및 상기 계산 성능 측정의 상기 계산된 제2 평균에 기초하여 상기 테스트 점수를 결정하는 것을 더 포함하는, 방법.
  17. 제16항에 있어서, 상기 테스트 점수는 상기 계산 성능 측정의 상기 계산된 제1 평균, 상기 계산 성능 측정의 상기 계산된 제2 평균, 및 가중치에 기초하는, 방법.
  18. 제11항에 있어서, 상기 테스트 점수는 설정된 동작의 수 또는 설정된 기간 중 적어도 하나에 대응하는 계산 성능 측정에 기초하여 결정되는, 방법.
  19. 제11항에 있어서, 상기 테스트 가상 서버 상의 상기 테스트 계산 코드를 초기화하는 것을 더 포함하는, 방법.
  20. 제11항에 있어서:
    요청이 낮은 우선 순위일 때 상기 요청을 상기 테스트 가상 서버로 보내는 것; 및
    상기 요청이 높은 우선 순위일 때 상기 요청을 복수의 가상 서버 중 하나의 가상 서버로 보내는 것을 더 포함하는, 방법.
KR1020210095961A 2020-05-12 2021-07-21 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법 KR102359792B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/872,603 2020-05-12
US16/872,603 US10901881B1 (en) 2020-05-12 2020-05-12 Systems and methods for test deployment of computational code on virtual servers
KR1020210032141A KR102282499B1 (ko) 2020-05-12 2021-03-11 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020210032141A Division KR102282499B1 (ko) 2020-05-12 2021-03-11 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20210138520A KR20210138520A (ko) 2021-11-19
KR102359792B1 true KR102359792B1 (ko) 2022-02-09

Family

ID=74190860

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020200084838A KR102230113B1 (ko) 2020-05-12 2020-07-09 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법
KR1020210032141A KR102282499B1 (ko) 2020-05-12 2021-03-11 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법
KR1020210095961A KR102359792B1 (ko) 2020-05-12 2021-07-21 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020200084838A KR102230113B1 (ko) 2020-05-12 2020-07-09 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법
KR1020210032141A KR102282499B1 (ko) 2020-05-12 2021-03-11 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법

Country Status (5)

Country Link
US (2) US10901881B1 (ko)
KR (3) KR102230113B1 (ko)
SG (1) SG11202104724XA (ko)
TW (1) TWI748820B (ko)
WO (1) WO2021229291A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910294B1 (en) 2013-12-18 2014-12-09 State Farm Mutual Automobile Insurance Company System and method for application failure testing in a cloud computing environment
CN103237082B (zh) 2013-05-06 2016-07-27 百度在线网络技术(北京)有限公司 云测试方法、***和云端服务器
JP2018147257A (ja) 2017-03-06 2018-09-20 日本電気株式会社 仮想基盤にもとづくシステムにおけるリソース割当方法、接続管理サーバおよび接続管理プログラム
CN108763042A (zh) 2018-05-24 2018-11-06 广东睿江云计算股份有限公司 一种基于python的云服务器性能数据采集方法及装置
JP2019509681A (ja) 2016-02-26 2019-04-04 ノキア ソリューションズ アンド ネットワークス オサケユキチュア クラウド検証及びテスト自動化

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7231442B2 (en) * 2002-04-03 2007-06-12 Tonic Software, Inc. Global network monitoring system
US8332263B2 (en) * 2002-12-19 2012-12-11 Oracle International Corporation System and method for configuring scoring rules and generating supplier performance ratings
US8255516B1 (en) * 2006-04-28 2012-08-28 Hewlett-Packard Development Company, L.P. Performance-data based server consolidation
US7926040B2 (en) * 2006-09-06 2011-04-12 International Business Machines Corporation Method and system for timing code execution in a korn shell script
US8181159B2 (en) * 2007-03-29 2012-05-15 Microsoft Corporation Test automation using virtual machines
US8572613B1 (en) * 2009-12-28 2013-10-29 Amazon Technologies, Inc. Comparison of virtual computing states by performing identified repeatable computations in a changing virtual computing environment
WO2012142144A2 (en) * 2011-04-12 2012-10-18 Opnet Technologies, Inc. Assessing application performance with an operational index
US8910142B2 (en) 2011-04-13 2014-12-09 Xerox Corporation Method and system to regulate the electronic availability of application software updates based on information collected regarding installation, usage and support for these updates
US8887056B2 (en) 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US20140096139A1 (en) * 2012-10-01 2014-04-03 International Business Machines Corporation Workload management considering hardware reliability
KR101595854B1 (ko) 2013-12-24 2016-02-19 주식회사 케이티 클라우드 시스템에서의 가상 머신 배치 방법 및 장치
US9645916B2 (en) * 2014-05-30 2017-05-09 Apple Inc. Performance testing for blocks of code
US10225156B2 (en) 2014-06-27 2019-03-05 Hewlett Packard Enterprise Development Lp Testing a cloud service component on a cloud platform
KR20170081404A (ko) 2016-01-04 2017-07-12 한국전자통신연구원 가상 머신 추천 장치 및 방법
JP2018032281A (ja) 2016-08-26 2018-03-01 ヤフー株式会社 情報処理装置、情報処理方法及びプログラム
CN107590061A (zh) 2017-09-29 2018-01-16 郑州云海信息技术有限公司 一种服务器虚拟化cpu性能测试方法
US11036615B2 (en) * 2018-12-06 2021-06-15 Microsoft Technology Licensing, Llc Automatically performing and evaluating pilot testing of software

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103237082B (zh) 2013-05-06 2016-07-27 百度在线网络技术(北京)有限公司 云测试方法、***和云端服务器
US8910294B1 (en) 2013-12-18 2014-12-09 State Farm Mutual Automobile Insurance Company System and method for application failure testing in a cloud computing environment
JP2019509681A (ja) 2016-02-26 2019-04-04 ノキア ソリューションズ アンド ネットワークス オサケユキチュア クラウド検証及びテスト自動化
JP2018147257A (ja) 2017-03-06 2018-09-20 日本電気株式会社 仮想基盤にもとづくシステムにおけるリソース割当方法、接続管理サーバおよび接続管理プログラム
CN108763042A (zh) 2018-05-24 2018-11-06 广东睿江云计算股份有限公司 一种基于python的云服务器性能数据采集方法及装置

Also Published As

Publication number Publication date
SG11202104724XA (en) 2021-12-30
KR102230113B1 (ko) 2021-03-22
TW202143041A (zh) 2021-11-16
KR20210138520A (ko) 2021-11-19
US10901881B1 (en) 2021-01-26
US11442846B2 (en) 2022-09-13
US20210357313A1 (en) 2021-11-18
WO2021229291A1 (en) 2021-11-18
KR102282499B1 (ko) 2021-07-28
TWI748820B (zh) 2021-12-01

Similar Documents

Publication Publication Date Title
CN105027108B (zh) 实例主机配置
US9921952B2 (en) Early risk identification in DevOps environments
US10999208B2 (en) Handling path issues for storage copy services
US8326807B2 (en) Methods of measuring consistability of a distributed storage system
US10496768B2 (en) Simulating a production environment using distributed computing technologies
US20200371901A1 (en) Cognitive analytics for high-availability application-performance management
US11573848B2 (en) Identification and/or prediction of failures in a microservice architecture for enabling automatically-repairing solutions
US11132273B1 (en) System testing infrastructure with hidden variable, hidden attribute, and hidden value detection
CN114205273A (zh) ***测试方法、装置和设备及计算机存储介质
US10360129B2 (en) Setting software error severity ranking
US11573820B2 (en) Systems and methods for centralization of server initialization information
US11836060B2 (en) System testing infrastructure with hidden variable, hidden attribute, and hidden value detection
US11113167B1 (en) System testing infrastructure with hidden variable, hidden attribute, and hidden value detection
KR102359792B1 (ko) 가상 서버 상의 계산 코드의 테스트 전개를 위한 시스템 및 방법
TWI760022B (zh) 用於診斷虛擬伺服器及時表現資料的電腦實施系統以及方法
JP2023044720A (ja) クラッシュしたアプリケーションを修復するためのコンピュータ実装方法、コンピュータプログラム製品、およびリモートコンピュータサーバ(クラッシュしたプロセスのリモート修復)
Lobur et al. Availability Audit of IoT System Data Reserved by 3-2-1 Backup Strategy based on Fault Tree and State Transition Diagram Analysis

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right