CN115668192A - 用于对程序指令的受控分发的自动规则 - Google Patents

用于对程序指令的受控分发的自动规则 Download PDF

Info

Publication number
CN115668192A
CN115668192A CN202180036074.9A CN202180036074A CN115668192A CN 115668192 A CN115668192 A CN 115668192A CN 202180036074 A CN202180036074 A CN 202180036074A CN 115668192 A CN115668192 A CN 115668192A
Authority
CN
China
Prior art keywords
program instructions
distribution
rules
range
rule
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202180036074.9A
Other languages
English (en)
Inventor
N·韦尔玛
M·拉庭萨巴帕蒂
R·尼加姆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN115668192A publication Critical patent/CN115668192A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

常规地,软件提供商的工程师(或者开发人员)可以通过在云计算环境中的各种范围的计算资源上执行作业或joblet来实现或维护应用服务的各方面。然而,在一些情况下,执行特定类型的工程师发起的作业可能对客户体验和/或对应用服务的满意度产生负面影响。基于对每个作业的动态风险分析,用于分发工程师发起的作业的自动化策略增加了验证测试、范围控制和部署计时。用于分发工程师发起的作业的多层面方案确保充分的回归测试(例如,经由环验证和冷却时段),并且促进受控的分发(例如,基于节流、分发计时和部署序列位置)。自动覆盖确保通过绕过所述规则中的至少一些规则可以快速并且有效地解决关键客户故障。因此,当为应用服务分发工程师发起的作业时,客户体验得到改善,并且服务中断和客户不满意被最小化。

Description

用于对程序指令的受控分发的自动规则
背景技术
针对软件产品和服务使用云计算环境对消费者和企业两者而言已经变得流行。作为软件提供商的客户的消费者和企业可以作为租户而使用云计算环境的计算资源。客户的最终用户可以使用应用服务的生产力工具(例如,特征)来上传文件、共享文件和执行其他操作,诸如在任务上协作。在一些方面中,客户可以请求对应用服务的特征进行定制或更新。云计算环境涉及分布式的一组资源,包括存储器、处理单元以及经由安全网络通信地互连的数据存储装置。分布式计算资源可以在物理上和虚拟上集成。服务器的虚拟集成使得能够为云计算环境的租户动态分配资源。通过这种方式,服务提供商通过在托管租户的服务器之间持续评估和重新分配资源,使得租户能够无缝和动态地扩大或缩小使用量。然而,在一些情况下,服务提供商可以执行特定类型的工程师发起的作业(例如,工程作业),所述作业对客户体验和/或对应用服务的满意度产生负面影响。
例如,软件提供商的工程师(或者开发人员)可以通过在云中的各种范围(scope)的计算资源上执行作业或joblet(下文被简称为“工程作业”)来实现或维护应用服务的各方面。如在本文中所使用的,“范围”可以指代云计算环境(例如,场群、服务器、数据库、VLAN)内的计算资源的任意逻辑划分或者与应用服务(例如,应用端点)相关联的任意对象类型。范围策略可以被用于定义公共范围(例如,虚拟机、场群、数据库等)或者基于对象(例如,应用端点和设备)之间共享的公共策略的范围。基于由工程师(例如,待命工程师,OCE)和/或开发人员生成的程序指令(例如,脚本)来执行工程作业。工程作业可以指向维护(例如,更新云基础设施或应用服务)、代码修复(例如,纠正代码)、代码更新(例如,更新现有特性)、配置(例如,配置设置或属性)、定制(例如,由客户请求的增强)等。
关于这些和其他一般考虑,在本文中所公开的各方面已经被做出。同样地,尽管可以讨论相对特定的问题,但是应当理解,所述示例不应当限于解决在本公开的背景中或者其他地方识别的特定问题。
发明内容
根据本公开,根据至少部分地基于对每个工程作业的动态风险分析来增加验证测试、范围控制和部署计时的自动化策略以分发与工程作业相关联的程序指令,来解决以上和其他问题。应用服务的“租户”或客户可以由软件提供商托管在云计算环境中的物理或虚拟服务器上。“特征”可以与由应用服务执行的操作相关联,所述操作诸如是上传文件、创建列表、共享文件、验证请求、创建门户页面的各个部分等。“工程作业”由程序指令(或者脚本)来编码,并且由软件提供商执行以维护、更新、修复、配置或者定制应用服务。如在本文中所使用的,程序指令(例如,代码和/或脚本)的术语“分发”、“发布”或“部署”指代针对范围的至少一部分来执行程序指令。
如上文所提到的,工程作业可以基于针对范围执行的程序指令(例如,脚本)来实现。然而,当在没有充分测试、风险评估和/或范围控制的情况下部署工程作业时,可能出现问题。例如,在没有充分测试的情况下,在相关联的程序指令中的错误(例如,漏洞)可能对范围内或范围外的租户的客户体验产生负面影响。取决于工程作业的类型,在没有风险评估和范围控制的情况下,通过使云计算环境内的计算资源过载,脚本的部署可能导致针对客户的服务中断和/或针对软件提供商的故障。因此,针对工程作业的内部控制不足可能导致程序指令的分发过广、过快。
具体地,为了解决上文所识别的问题,本系统和方法基于对系统和未决工程作业的动态分析来创建和应用自动策略。例如,可以定义范围属性。范围属性可以包括服务范围级别(例如,场群级别、数据库级别、网络级别、租户级别等)和更新特性(例如,读写或只读,诸如Set/Get命令)。也可以定义针对范围属性的不同组合的风险级别(例如,低、中、高)。例如,针对数据库级别范围的只读更新特性可能与低风险相关联,租户级别范围上的读写更新特性可能与中风险相关联,并且针对多场群级别范围的读写更新特性可能与高风险相关联。作为总括,在由工程师选择了“新”范围(例如,先前未定义的范围)的情况下,风险可能默认为“高”。应当意识到,范围属性的不同组合可以与不同的风险级别相关联。
基于风险级别,可以创建规则(或者政策)以使针对工程作业的内部控制自动化。例如,规则可以定义用于实现与不同风险级别相关联的工程作业的一个或多个标准。标准能够包括环级验证、节流(throttle)、冷却时段、分发计时和部署序列位置。“环级验证”指代在将工程作业分发到外部环(例如,“生产环”)之前,将工程作业分发到内部环(或者“Dogfood环”)的要求。例如,在将工程作业分发到与客户相关联的外部用户(例如,(一个或多个)生产环)之前,可以将工程作业分发到与软件提供商相关联的至少一些内部用户(例如,dogfood环)。在各方面中,可以存在多个生产环,并且可以在每个生产环内应用剩余的标准。如在本文中所使用的,“节流”指代相对于在分发的每个阶段(或者迭代)中程序指令能够被执行的范围的子集(或者部分)(例如,虚拟机(VM)级别范围的VM的百分比、针对场群级别范围的跨区域场群的百分比、数据库级别范围的数据库的百分比等)。在各方面中,针对高风险作业的节流可能比针对低风险作业的节流更高(例如,较慢的分发)。“冷却时段”(或者“烘烤时间”)指代分发工程作业的阶段(或者迭代)之间的时间段(例如,数小时、数天、数周等)。在各方面中,在冷却时段期间,可以收集和评估反馈(例如,遥测数据),以确保工程作业在分发的下一阶段之前按预期执行。在各方面中,针对高风险作业的冷却时段可能比针对低风险作业的冷却时段长。
另外,可以定义用于对分发的计时的标准。“高峰”时间指代一天中优先考虑客户对云资源的需求的一部分(例如,本地时间早上6:00到下午6:00),而“非高峰”时间指代一天中进行系统维护、新的或更新的特征部署、内部软件提供商活动等的一部分(例如,本地时间下午6:00到早上6:00)。“部署序列”指代分发工程作业(或者工程作业批次)的序列,并且“部署序列位置”指代一个工程作业(或者工程作业批次)与另一工程作业(或者工程作业批次)的相对优先级(或者顺序)(例如,较高优先级工程作业在较低优先级工程作业之前分发)。
在一些方面中,可以实现自动覆盖工作流。亦即,为了确保工程师有能力快速地解决关键客户故障,特定工程作业(例如,代码修复)可以免于应用规则,或者可以覆盖规则。例如,自动覆盖工作流可以与额外标准相关联,例如,由具有特定角色的工程师(例如,“OCE”或者待命工程师)进行的分发、与阈值严重级别(例如,SEV0)相关联的客户故障、或者与特殊状态(例如,观察列表、战略租户)相关联的受影响客户。在这种情况下,当满足额外标准时,可能发出用于覆盖规则的自动批准。替代地,在特殊或者情有可原的情况下,可能需要人工批准以覆盖规则。
应当意识到,用于分发工程作业的以上多层面方案确保了额外的验证测试(例如,经由环验证和冷却时段),并且促进了计量(或者受控)的分发(例如,基于节流、分发计时和部署序列位置)。以这种方式,额外的验证测试改善了客户体验和产品满意度;而计量分发防止工程作业分布太广太快,由此防止客户服务中断和/或软件提供商因系统资源过载而故障。自动覆盖工作流确保能够通过绕过规则中的至少一些规则来快速并且有效地解决关键客户故障。因此,在本文中所描述的系统和方法解决了与经由云计算环境提供的应用服务的工程作业的分发相关联的服务中断和客户不满意的问题。
提供本概要是为了以简化的形式介绍概念的选择,其将在下文的详细描述中进一步描述。本概要不是为了识别所要求保护的主题的关键特征或基本特征,也不是为了用于限制所要求保护的主题的范围。示例的额外方面、特征和/或优点将部分地在下文的描述中阐述,并且部分地从描述中将是显而易见的,或者可以通过实践本公开来了解。
附图说明
参考以下附图描述了非限制性并且非详尽的示例。
图1图示了根据本公开的各方面的用于分发程序指令的示例性系统的概述。
图2图示了根据本公开的各方面的分发程序指令的示例性方法。
图3图示了根据本公开的各方面的基于规则的应用在外部环级别中分发程序指令的示例性方法。
图4图示了根据本公开的各方面的用户脚本表的示例。
图5图示了根据本公开的各方面的用于分发用户脚本的规则表的示例。
图6图示了根据本公开的各方面的分布序列表的示例。
图7是图示了可以利用其实践本公开的各方面的计算设备的示例性物理组件的框图。
图8A是可以利用其实践本公开的各方面的移动计算设备的简化图。
图8B是可以利用其实践本公开的各方面的移动计算设备的另一简化框图。
具体实施方式
下文参考附图更全面地描述了本公开的各个方面,附图形成本文的一部分,并且示出了具体的示例性方面。然而,本公开的不同方面可以以许多不同的方式来实现,并且不应当被解释为限于在本文中所阐述的各方面;相反,提供这些方面使得本公开将是彻底和完整的,并且将向本领域技术人员充分传达这些方面的范围。各方面可以被实践为方法、系统或设备。因此,各方面可以采取硬件实现方式、完全软件实现方式或者组合软件和硬件方面的实现方式的形式。因此,下文的详细描述不应当被理解为限制性的。
本公开涉及用于向云计算环境的租户分发程序指令的系统和方法。云计算环境是分布式系统,其中,应用功能、存储器、数据存储和取回以及各种处理功能可以通过网络(诸如互联网或者安全内联网)彼此远程地操作。应用服务的“租户”或客户可以由软件提供商托管在分布式系统中的物理服务器或虚拟服务器上。事实上,基于云的应用服务已经作为业务生产力工具被广泛地使用和依赖。以这种方式,与企业客户相关联的业务最终用户能够在世界任意地方进行在线协作(例如,存储/共享文档、访问内部站点、列表/库)。最终用户可以使用各种设备(例如,移动电话、膝上型计算机和平板计算机)来访问服务。应用服务在一年365天、每天24小时可用,具有用于维护的最小停机时间。
通常,应用服务的客户或租户已经开始期望频繁的更新,其提供对最新的新特征的访问,并且快速地分发必要的修复。与程序指令驻留在最终用户的本地计算设备上的独立应用不同,应用服务可以通过将用于工程作业的程序指令(例如,代码或脚本)分发给由云中的服务器托管的租户来持续地服务。例如,这些服务器可以共同向数百万用户提供应用服务。然而,当对程序指令的分发给云基础设施带来负担和/或分发的代码包含错误时,可能出现问题。例如,工程作业可能影响分布范围内的资源功能,例如,由租户占用的虚拟服务器或物理服务器、服务器场群、区域、云中的一个或多个网络证书等。例如,在一些情况下,工程作业的分发发生在完成适当级别的回归测试之前。在一些其他方面中,针对范围执行工程作业可能通过例如过度的资源消耗、CPU使用率和/或存储器使用而使系统过载。因此,需要增加的测试、风险分析和范围控制来分发工程作业。
在各方面中,工程作业包括由软件提供商的工程师或者开发人员执行以维护应用服务的一组脚本,诸如通过更新计算资源的特性、更新网络地址特性和证书、解决客户故障、升级系统基础设置、恢复删除的客户数据、使得新配置生效等。例如,工程作业可以被引导到更新网络地址配置(例如,添加IPv6地址模式)、拓扑网络数据路由配置、服务器访问控制配置以及物理服务器内的虚拟机配置。一些配置可能是针对一个或多个特定租户的,而其他配置可能是跨区域内或整个区域的多个租户的。然而,在过去,工程作业已经在没有充分测试、风险评估和/或范围控制的情况下部署,这可能导致服务中断和/或客户体验不佳。为了解决这些问题,本应用描述了一种用于分发工程作业的多层面方案。例如,通过定义受部署影响的计算资源的范围、基于定义的范围和更新特性(例如,只读或读写)评估与部署工程作业相关联的风险以及生成控制工程作业部署的规则集,来控制工程作业的部署。
例如,规则可能涉及定义用于部署工程作业的标准,诸如环级验证、节流、冷却时段、执行计时和部署序列位置。“环级验证”指代在将工程作业分发到外部环(例如,“生产环”)之前,将工程作业分发到内部环(或者“Dogfood环”)的要求。例如,在将工程作业分发到与客户相关联的外部用户(例如,(一个或多个)生产环)之前,可以将工程作业分发到与软件提供商相关联的至少一些内部用户(例如,dogfood环)。在各方面中,可以存在多个生产环,并且可以在每个生产环内应用剩余的标准。以这种方式,对程序指令的分发可以根据回归测试的层级来实现。层级可以由多个同心的分发“环”来表示:例如,用于内部测试的“dogfood环”是最内层环,而用于外部(例如,客户)回归测试的“生产环”是最外层环。在每个分发环内,可以有一组用户,在工程作业分发之后接收对应用服务的评价,并且可以基于环内的用户活动来收集和评估遥测数据,以确定工程作业是否恰当地执行。
如上文所详述的,标准还可以涉及将工程作业的部署限制到在每个迭代中的所定义的范围的一部分的节流以及建立在迭代之间的时间段的冷却时段。另外,可以评估系统资源以基于所述节流来确定分发顺序。例如,如果节流指示每次迭代应当针对不超过10%的场群级别范围的场群执行工程作业,则可以评估场群级别范围的各种场群。表现出高用户活动的场群可以被认为是“热的”,而具有低用户活动的场群可以被认为是“冷的”。为了防止潜在的服务中断,工程作业可以在暖场群或热场群之前被分发到冷场群。亦即,第一迭代可以将工程作业分发到被认为是“冷的”10%的场群,而最后的迭代可以将工程作业分发到被认为是“热的”10%的场群,其中每个中间迭代分发到从冷到暖到热的连续统一体中的10%的场群。
在各方面中,在部署的每次迭代之后,例如,可以在进入下一迭代之前的冷却时段期间评估关于工程作业的执行和/或计算资源消耗的变化的遥测数据。因此,组合环验证,可以基于在每个分发之间具有冷却时段的节流在每个环中分发工程作业。例如,基于每个分发的10个租户或者每个分发的5%的租户等的节流,可以在一系列分发中部署工程作业。在每个分发之后,可以评估工程作业的执行以确保在冷却时段期间的代码稳定性和用户满意度。例如,冷却时段可以是6小时到24小时。一旦在先前环中的一系列分发完成,就可以向下一环进行分发。
用于分发工程作业的标准也可以涉及定义分发的计时。例如,基于作业类型(例如,维护类型与代码修复类型),工程作业可以在一天中的不同时段期间分发(例如,维护作业可以在非高峰时间期间执行,而紧急代码修复作业可以在高峰时间期间执行,以防止进一步的客户停机)。高峰和非高峰时间可以基于与针对工程作业的定义范围相关联的租户的本地时间来定义。在一些情况下,高峰/非高峰时间可以是预定的(例如,从上午6:00到下午6:00的高峰时间和从下午6:00到上午6:00的非高峰时间)。在其他情况下,高峰/非高峰时间可能是特定于租户的。例如,一些租户可能在工作日当地时间上午9时至下午5时的营业时间期间出现使用应用服务的高峰;而例如其他租户可能在周末当地时间从中午至午夜出现高峰时间。
此外,工程作业(或者工程作业批次)可以基于工程作业的相对优先级在“部署序列”内排序(例如,较高优先级的工程作业在较低优先级的工程作业之前分发)。常规地,工程作业按照被接收的顺序来执行(例如,工程师选择执行工程作业的顺序)。因此,仅基于工程师选择的计时,高优先级工程作业(例如,解决客户故障的代码修复)常常在低优先级工程作业(例如,针对一般系统维护)之后执行。根据本系统,可以确定为执行而选择的多个工程作业的优先级别。然后,可以在具有较低优先级的工程作业(或者工程作业批次)之前分发具有较高优先级的工程作业(或者工程作业批次)。在对分发序列内的工程作业进行排序时,个体工程作业(或者具有相同优先级的工程作业批次)的分发可以基于上文所描述的用于(一个或多个)特定工程作业的环验证、节流、冷却和峰值/非峰值标准进行。
在一些方面中,可以实现自动覆盖工作流。亦即,为了确保工程师有能力快速地解决关键客户故障,特定工程作业(例如,代码修复)可以免于应用规则,或者可以覆盖规则。例如,自动覆盖工作流可以与额外标准相关联,例如,由具有特定角色的工程师(例如,“OCE”或者待命工程师)进行的分发、与阈值严重级别(例如,SEV0)相关联的客户故障、或者与特殊状态(例如,观察列表、战略租户)相关联的受影响客户。在这种情况下,当满足一个或多个额外标准时,可能发出用于覆盖规则的自动批准。替代地,在一些情况下,可以获得用于覆盖规则的手动批准。
应当意识到,用于分发工程作业的以上多层面方案确保了额外的验证测试(例如,经由环验证和冷却时段),并且促进了计量或受控的分发(例如,基于节流、分发计时和部署序列位置)。以这种方式,额外的验证测试提高了客户体验和产品满意度;而计量的分发防止工程作业分发太广太快,由此防止客户服务中断和/或软件提供商因系统资源过载而故障。自动覆盖确保了通过绕过上文所描述的规则中的至少一些规则来快速并且有效地解决关键客户故障。因此,在本文中所描述的系统和方法解决了与经由云计算环境提供的应用服务的工程作业的分发相关联的服务中断和客户不满意的问题。
图1图示了根据本公开的各方面的用于分发程序指令的示例性系统的概述。系统100可以表示用于向一个或多个租户分发程序指令的系统。
开发人员102开发了针对范围执行的工程作业的程序指令,以维护、更新、修复、配置或者定制云计算环境140中由软件提供商托管的应用服务。在各方面中,开发人员102将程序指令(例如,工程脚本103)提供给与分发协调器106相关联的代码存储装置124。例如,开发人员102可以针对范围选择用于分发(或者执行)的程序指令。在一些情况下,开发人员102可以基于由遥测数据接收机112接收的来自回归测试的遥测数据来在分发之后更新程序指令。遥测数据描绘了在分发工程作业之后最终用户104如何与应用服务进行交互。
客户的最终用户104使用计算设备来访问应用服务。例如,最终用户104可以经由云计算环境140来访问应用服务。云计算环境140包含至少一个区(或者区域)150。区150可以包含一个或多个服务器场群152A-152B。服务器场群152A-152B可以包含虚拟服务器160A-160B和物理服务器154A-154D。服务器群152A-1502B也可以包括证书服务器156A-156B。例如,证书服务器156A-156B存储和维护用于访问网络和计算资源(诸如数据库和服务器)的认证的证书。区150中的服务器场群152A-152B向最终用户104提供应用服务,诸如文件共享、工作流服务、协作工具。在各方面中,可以有数百万最终用户104使用通过云计算环境140可用的各种应用服务。
云计算环境140可以包括一个或多个资源,包括一个或多个服务器(例如,包括处理单元和存储器)以及通过网络通信地耦合的一个或多个数据库。云计算环境可以被组织成包含一个或多个虚拟服务器160A-160B和/或一个或多个物理服务器154A-154C的一个或多个服务器场群152A-152B。在各方面中,服务器场群152A-152B可以形成区150。被组织成区150中的服务器场群152A-152B的一个或多个虚拟服务器160A-160B和一个或多个物理服务器154A-154C共同向最终用户104提供应用服务。在各方面中,在一个或多个物理服务器154A-154C上分割的虚拟服务器160A-160B向一个或多个客户(例如,租户)提供专用服务器的功能。例如,租户1 162A可以占用物理服务器154D上的一个虚拟服务器160A,并且租户2162B可以占用另一虚拟服务器160B。
在各方面中,在相应虚拟服务器160A-160B和物理服务器154C-154D中的存储器可以存储用于由图中未示出的中央处理单元(CPU)执行的程序指令。服务器通过执行程序指令来实现应用服务。在一些方面中,可以针对范围执行由工程脚本103编码的工程作业,以维护、更新、修复、配置或定制应用服务。如在本文中所使用的,“范围”可以指代租户、租户组、服务器场群、服务器场群组、用户组或者云计算环境140的任意其他逻辑划分。
分发协调器106接收用于分发的程序指令集,并且然后调度和实现分所述发。在各方面中,开发人员102登记与工程作业相关联的代码以用于存储在代码存储装置124中。在一些其他方面中,开发人员102请求针对范围的程序指令的代码分发(例如,部署)。分发协调器106可以将代码ID指派给程序指令集。工程作业可以用于维护、更新、增强或纠正(修复)应用服务的问题。
属性确定器108可以确定被选择用于针对范围执行的程序指令集的属性(或者参数)。如上文所描述的,范围可以包括云计算环境140的任意逻辑划分,包括虚拟服务器、物理服务器、服务器场群、区(或者区域)、证书服务器、网络、数据库等。在各方面中,范围可以由开发人员102选择,并且指示将对其执行程序指令集的云计算环境140的划分。例如,对于针对更新虚拟服务器属性的工程作业,对应的范围可以是虚拟服务器。相反,针对租户请求的代码修复或增强的工程作业可能具有托管所述租户的物理服务器的对应范围。因此,与范围相关联的属性可以是范围级别(例如,场群级别、数据库级别、网络级别、租户级别等)。程序指令集也可以由属性确定器108来评估。例如,与程序指令相关联的属性可以是关于如何在范围上执行程序指令的更新特性(例如,读写或只读,诸如Set/Get命令)。另外,属性确定器108可以确定与程序指令集相关联的工程作业的作业类型。例如,工程作业可以是维护类型、更新类型、配置类型、定制类型、代码修复类型等。例如,可以从开发人员102接收与编程指令集相关联的作业类型。
风险级别确定器110可以基于由属性确定器108确定的属性来确定与针对范围执行程序指令集相关联的风险级别。例如,风险级别的值可以为高、中和低。如上文所描述的,范围可以包括云计算环境140的任意逻辑划分,并且范围级别属性可以包括虚拟服务器级别、物理服务器级别、服务器场群级别、区级别、证书服务器级别、网络级别、数据库级别等。另外,与程序指令集相关联的更新特性属性可以包括例如只读或读写。也可以定义针对属性的不同组合的风险级别(例如,低、中、高)。例如,针对数据库级别范围的只读更新特性可能与低风险相关联,在租户级别范围上的读写更新特性可能与中风险相关联,并且针对多场群级别范围的读写更新特性可能与高风险相关联。作为总括,在工程师选择了“新”范围(例如,先前未定义的范围)的情况下,风险可能默认为“高”。应当意识到,属性的不同组合可能与不同的风险级别相关联。
规则确定器112可以基于风险级别来确定用于控制对程序指令集的分发的一个或多个规则。在各方面中,可以从规则表中的预先定义规则的列表中确定规则。例如,规则可以包括分发的节流、冷却时段以及执行程序指令集的计时。“节流”指代在分发的每个阶段(或者迭代)中能够针对其执行程序指令的范围的子集(或者部分)(例如,虚拟机(VM)级别范围的VM的百分比、针对场群级别范围的跨区域场群的百分比、数据库级别范围的数据库的百分比等)。在各方面中,针对高风险作业的节流规则可以比针对低风险作业的节流规则更高(例如,较慢的分发)。“冷却时段”指代在分发程序指令集的阶段(或者迭代)之间的时间段(例如,数小时、数天、数周等)。在各方面中,在冷却时段期间,可以收集和评估反馈(例如,遥测数据),以确保在分发的下一阶段之前恰当地执行程序指令集。在各方面中,针对高风险作业的冷却规则可能比针对低风险作业的冷却规则更长。因此,例如,针对低风险作业,冷却规则可以是6小时;而针对高风险作业,冷却规则可以是24小时。以这种方式,基于节流和冷却规则,可以控制和验证程序指令集的分发,以防止客户体验不佳。另外,可以防止内部活动和/或开发人员错误。
另外地或替代地,规则确定器112可以确定与执行程序指令集的计时相关联的一个或多个规则。例如,基于风险级别(例如,低、中、高)和/或作业类型(例如,维护类型与代码修复类型),程序指令可以在一天中的不同时段分发。“高峰”时间指代一天中优先考虑客户对云资源的需求的一部分(例如,本地时间上午6:00到下午6:00),而“非高峰”时间指代一天中进行系统维护或内部软件提供商活动的一部分(例如,本地时间下午6:00到上午6:00)。因此,计时规则可以指示是否应当在峰值期间或非峰值期间执行程序指令集。例如,用于维护作业的计时规则可以在非高峰时间期间执行,而用于代码修复作业的计时规则可以在高峰时间期间执行,以防止进一步的客户停机。在任一种情况下,服务中断和/或客户不满意都可以被最小化。另外地或替代地,可以评估系统资源以基于节流来确定程序指令集的分发的顺序(或者计时)。例如,如果节流指示每次迭代应当针对不超过10%的场群级别范围的场群执行程序指令,则可以评估场群级别范围的各种场群。表现出高用户活动的场群可以被认为是“热的”,而具有低用户活动的场群可以被认为是“冷的”。为了防止潜在的服务中断,冷/热规则可以指示程序指令集可以在暖场群或热场群之前被分发到冷场群。亦即,基于冷/热规则,第一迭代可以将程序指令集分发到被认为是“冷的”10%的场群,而最后的迭代可以将程序指令集分发到被认为是“热的”10%的场群,其中每个中间迭代分发到从冷到暖到热的连续统一体中的10%的场群。以这种方式,可以基于分发时的系统资源的状态来动态地应用规则,由此避免客户服务中断或故障。
环级验证器114可以接收指示,以在特定环级开始分发与工程作业相关联的程序指令。与常规系统相比,与工程作业相关联的程序指令集的部署可能经历多个环级的验证和测试。“环级验证”指代在将工程作业分发到外部环(例如,“生产环”)之前,将工程作业分发到内部环(或“dogfood环”)的要求。例如,在将工程作业分发到与客户相关联的外部用户(例如,(一个或多个)生产环)之前,可以将工程作业分发到与软件提供商相关联的至少一些内部用户(例如,dogfood环)。在各方面中,可以存在多个生产环,并且可以在每个生产环内应用其他规则。以这种方式,程序指令的分发可以根据回归测试的层级来实现。该层级可以由多个同心的分发“环”来表示:例如,用于内部测试的“dogfood环”是最内层环,并且用于外部(例如,客户)回归测试的“生产环”是最外层环。在每个分发环内,可以有一组用户,在工程作业分发之后接收对应用服务的评价,并且可以基于环内的用户活动来收集和评估遥测数据,以确定工程作业是否恰当地执行。在各方面中,可以从管理针对应用服务的质量控制的管理者接收验证。环级别的验证在不同的环级别之间可能是不同的。例如,“dogfood”级别的验证可以涉及开发人员102和管理器;而例如生产级别分布的验证可以涉及质量控制管理者以及与受影响租户保持通信的客户关系管理者。以这种方式,对程序指令集的额外验证可以防止客户体验不佳以及潜在的服务中断。另外,额外的验证层防止内部活动和/或开发人员错误。
代码分发器116可以基于环级验证和一个或多个规则的应用来部署程序指令。例如,在第一环级处,程序指令可以被分发给与软件提供商相关联的内部用户。在第一环级的验证后,程序指令可以被分发给与第二环级中的客户相关联的外部用户。在一些方面中,在第二环级内的外部用户可以由软件提供商特别选择以提供关于程序指令的执行和/或工程作业的执行的反馈。在其他方面中,程序指令基于节流规则、冷却规则和(一个或多个)计时规则在第二环级(以及任意后续环级)中分发。亦即,代码分发器116执行由规则确定器112确定的规则。在一些方面中,这样的受控分发可以基于部署序列模型。所述部署序列模型可以基于相关联的工程作业的相对优先级(例如,在较低优先级的工程作业之前分发较高优先级的工程作业)来控制分发不同的程序指令集的序列。常规地,工程作业按照其被接收的顺序来执行(例如,工程师选择执行工程作业的顺序)。因此,高优先级工程作业(例如,解决客户故障的代码修复)常常在低优先级工程作业(例如,针对一般系统维护)之后执行。根据本系统,代码分发器116可以确定针对与选择用于执行的程序指令相关联的多个工程作业的优先级别。然后,可以在具有较低优先级的工程作业(或者工程作业批次)之前分发具有较高优先级的工程作业(或者工程作业批次)。在对分发序列内的工程作业进行排序时,代码分发器116然后可以基于上文针对特定程序指令集的环级验证、节流、冷却和计时规则来分发个体的程序指令集(或者相同优先级的程序指令批次)。在一些方面中,在分发到下一环级之前,环级验证器114在该环级处完成代码分发之后验证每个环级。
覆盖执行器120可以在特定情况下确定并且执行覆盖工作流。亦即,为了确保工程师有能力快速地解决关键客户故障,特定工程作业(例如,代码修复)可以免除规则,或者可以“覆盖”上文所描述的规则。例如,覆盖工作流可以与覆盖标准相关联,例如,由具有特定角色的工程师(例如,“OCE”或者待命工程师)进行的分发、与阈值严重程度(例如,SEV0)相关联的客户故障、或者与特殊状态(例如,观察列表、战略租户)相关联的受影响客户。在这种情况下,当满足一个或多个覆盖标准时,覆盖确定器118可以发布用于覆盖规则的自动批准。替代地,在一些情况下,可以由当值管理者或者其他授权个体发布用于覆盖规则的人工批准。一旦批准,覆盖工作流执行器120就可以执行覆盖工作流,使得程序指令集可以针对由开发人员(例如,开发人员102)选择的定义范围来执行。当工程作业(例如,代码修复)解决紧急客户问题时,提供覆盖工作流作为安全阀以绕过规则。在一些情况下,覆盖工作流可以绕过环级验证以及规则的应用。在其他情况下,覆盖工作流可以绕过在环级验证的当前环内应用规则。在一些方面中,例如,为了防止内部活动,溢出工作流可能需要额外的批准(例如,如上文所描述的自动或手动)。应当意识到,覆盖工作流允许待命的工程师通过绕过规则来快速地解决紧急客户问题,由此使客户问题的解决时间(TTR)最小化,并且提高客户满意度。同时,满足覆盖标准可以防止潜在的内部活动。
遥测数据处理器122可以从分布范围(或者范围的部分)内的服务器接收和处理状态信息。所述状态信息描述了客户的最终用户104在分发程序指令集之后如何与应用服务进行交互。另外地或替代地,所述遥测数据可以提供关于分布范围内的资源使用的信息,例如,CPU使用率、网络速度或带宽等。例如,所述遥测数据可以包括最终用户访问应用服务的日志(例如,点击数据、发出的请求数量、响应时间等)和/或识别在执行程序指令时发生的错误或异常的错误报告。在各方面中,开发人员102可以接收遥测数据以用于分析程序指令的执行或性能。在一些情况下,开发人员102可以更新程序指令集,以用于在进一步分发之前纠正任何识别出的问题。
当代码分发器116完成对第一验证环级的程序指令的分发时,环级验证器114验证用于由代码分发器116分发程序指令集的下一验证环级。在一些情况下,如果开发人员基于遥测数据更新了程序指令集,则代码分发器116可以将经更新的程序指令集分发到下一验证环级。替代地,代码分发器116可以将经更新的程序指令集分发到第一验证环级。
代码存储装置124存储程序指令集。代码存储装置124可以通过将标识符分发给相应集合来存储程序指令集。在一些方面中,代码存储装置124包括用于分发的程序指令队列。开发人员102可以在选择程序指令集用于分发时或者在修改程序指令集之后(例如,基于对遥测数据的分析)将程序指令集添加到所述队列。
属性/规则数据库126存储关于确定分发程序指令的风险的范围的各种属性的信息,以及用于基于所确定的风险来控制程序指令的分发的规则列表。所述各种属性可以包括但不限于范围级别(例如,场群级别、数据库级别、网络级别、租户级别等)、关于如何在范围上执行程序指令的更新特性(例如,读写或只读,诸如Set/Get命令)以及与程序指令集相关联的工程作业的作业类型。例如,工程作业可以是维护类型、更新类型、配置类型、定制类型、代码修复类型等。例如,可以从开发人员102接收与编程指令集相关联的作业类型。规则列表可以包括由规则标识符索引的一组规则。规则列表可以包括但不限于:节流规则、冷却规则和/或计时规则(或者多个规则)。属性/规则数据库126也可以包括用于执行覆盖工作流的覆盖标准列表,包括针对合格工程师(例如,“OCE”或待命工程师)的特定角色、针对客户故障的阈值严重级别(例如,SEV0)、针对受影响客户的特殊状态(例如,观察列表、战略租户)等。
租户数据库128存储关于租户(或者客户)的信息。关于租户的信息可以包括但不限于:租户标识符、租户名称、托管租户的计算资源的标识符(例如,虚拟服务器、物理服务器、服务器场群和区)。租户数据库128也可以包括关于租户的最终用户对应用服务的租户使用水平的统计数据。
应当意识到,关于图1所描述的各种方法、设备、应用、特征等并不意图将系统100限制为由所描述的特定应用和特征来执行。因此,额外的控制器配置可以被用于实践在本文中的方法和系统,和/或可以排除所描述的特征和应用,而不背离在本文中所公开的方法和系统。
图2图示了根据本公开的各方面的分发程序指令的示例性方法。
在图2中示出了针对方法200的操作的一般顺序。通常,方法200以开始操作201开始并且以结束操作228结束。方法200可以包括更多或更少的步骤,或者可以不同于在图2中所示的那些步骤来安排所述步骤的顺序。方法200能够作为由计算机系统执行并且被编码或存储在计算机可读介质上的计算机可执行指令集来执行。此外,方法200能够由与处理器、ASIC、FPGA、SOC或者其他硬件设备相关联的门或电路来执行。在下文中,将参考结合图1、3、4、5、6、7、8A-B所描述的系统、组件、设备、模块、软件、数据结构、数据特性表示、信令图、方法等来解释方法200。
在选择操作202处,可以选择程序指令(例如,代码或脚本)以用于针对范围进行分发。例如,开发人员可以选择用于分发的程序指令。程序指令可以实现维护应用服务的工程作业,诸如通过更新计算资源的特性、更新网络地址特性和证书、解决客户故障、升级系统基础设施等。范围可以包括云计算环境的任意逻辑划分,包括虚拟服务器、物理服务器、服务器场群、区(或者区域)、证书服务器、网络、数据库等。
在确定操作204处,可以确定程序指令是否编码针对解决与阈值严重级别(例如,SEV0)相关联的客户故障的工程作业。例如,SEV 0故障可以指代关键客户故障。如果工程作业解决关键客户故障,则操作进行到确定属性操作206。如果工程作业不解决关键客户故障,则操作继续至应用操作218。
在属性确定操作206处,可以确定程序指令和范围的属性。例如,与范围相关联的属性可以是范围级别(例如,场群级别、数据库级别、网络级别、租户级别,等等)。与程序指令相关联的属性可以是关于如何针对范围执行程序指令的更新特性(例如,读写或只读,诸如Set/Get命令)。另外,可以确定与程序指令相关联的工程作业的作业类型。例如,工程作业可以是维护类型、更新类型、配置类型、定制类型、代码修复类型等。
在风险确定操作208处,可以基于所述属性来确定与针对范围执行程序指令相关联的风险级别。所述风险级别可以与通过分发程序指令对客户产生不利影响的可能性相对应。例如,针对数据库级别范围的只读更新特性可能与低风险相关联,在租户级别范围上的读写更新特性可能与中等风险相关联,并且针对多场群级别范围的读写更新特性可能与高风险相关联。作为总括,在工程师选择了“新”范围(例如,先前没有定义的范围)的情况下,风险可能默认为“高”。应当意识到,属性的不同组合可能与不同的风险级别相关联。
在规则确定操作210处,可以基于风险级别来确定用于分发程序指令的一个或多个规则。在一些方面中,可以从预定的规则列表(例如,被存储在属性/规则数据库126中)中识别规则。在其他方面中,一个或多个规则可以基于风险级别动态地生成。规则可以包括环验证、节流、冷却时段和/或分发计时。例如,可以生成要求程序指令的环级验证的规则。“环级验证”指代在将程序指令分发到外部环(例如,“生产环”)之前,将程序指令分发到内部环(或者“dogfood环”)。在各方面中,可以存在多个生产环,并且可以在每个生产环内应用其他规则。节流指代在分发的每个阶段(或者迭代)中程序指令能够执行的范围的子集(或者部分)(例如,虚拟机(VM)级别范围的VM的百分比、场群级别范围的跨区域场群的百分比、数据库级别范围的数据库的百分比等)。在各方面中,针对高风险作业的节流可能比低风险作业的节流高(例如,较慢的分发)。“冷却时段”指代分发工程作业的阶段(或者迭代)之间的时间段(例如,数小时、数天、数周等)。在各方面中,在冷却时段期间,可以收集和评估反馈(例如,遥测数据),以确保工程作业在分发的下一阶段之前按预期执行。在各方面中,针对高风险作业的冷却时段可能比针对低风险作业的冷却时段更长。
另外,可以确定用于程序指令的计时(或排序)分发的规则。例如,基于风险级别(例如,低、中、高)和/或作业类型(例如,维护类型与代码修复类型),程序指令可以在一天中的不同时段期间分发。例如,计时规则可以规定程序指令应当在高峰时段还是非高峰时段期间执行(例如,维护作业可以在非高峰时间期间执行,而紧急代码修复作业可以在高峰时间期间执行,以防止进一步的客户停机)。另外地或替代地,可以评估系统资源以基于节流来确定程序指令集的分发顺序(或者计时)。例如,如果节流规定程序指令应当在每次迭代中针对不超过10%的场群级别范围的场群来执行,则可以评估场群级别范围的各种场群。表现出高用户活动的场群可以被认为是“热的”,而具有低用户活动的场群可以被认为是“冷的”。为了防止潜在的服务中断,冷/热规则可以规定程序指令应当在暖场群或热场群之前被分发到冷场群。以这种方式,可以基于分发时系统资源的状态动态地应用规则,由此避免客户服务中断或故障。
在内部分发操作212处,程序指令可以进入环级别验证的内部环。在各方面中,环级验证指代在将工程作业分发到外部环(例如,“生产环”)之前,将工程作业分发到内部环(或者“Dogfood环”)的要求。例如,在将程序指令分发到与客户相关联的外部用户(例如,在第二级环和后续级环中)之前,可以将程序指令分发到与第一级环中的软件提供商相关联的至少一些内部用户。
在外部分发操作214处,程序指令可以进入外部环验证并且根据所确定的规则进行分发。在一些方面中,第二环级内的外部用户可以由软件提供商特别选择以提供关于程序指令的执行和/或工程作业的执行的反馈。在其他方面中,基于在规则确定操作210处生成的规则,包括节流规则、冷却规则和计时规则,在第二环级(和随后的环级)中分发程序指令。例如,节流规则定义了在分发的每个阶段(或者迭代)中程序指令能够对其执行的范围的子集(或者部分)(例如,虚拟机(VM)级别范围的VM的百分比、场群级别范围的跨区域场群的百分比、数据库级别范围的数据库的百分比等)。冷却规则定义在分发程序指令集的阶段(或者迭代)之间的时间段(例如,数小时、数天、数周等)。因此,在第二环级内,程序指令可以被分发到范围的第一子集,并且然后在冷却时段之后被分发到范围的第二子集。另外,程序指令可以基于计时规则(例如,在高峰或非高峰时间期间)和排序规则(例如,在暖部分或热部分之前分发到范围的冷部分,并且基于相关联的工程作业的优先级在分发序列位置)来分发。在各方面中,可以在迭代之间的冷却时段期间接收和处理遥测数据(例如,由遥测数据处理器122)以确保程序指令恰当地执行和/或工程作业在下一迭代中分发程序指令之前按预期执行。在一些情况下,如果在冷却时段期间识别出异常,则可以停止程序指令的分发,并且可以相应地更新程序指令(例如,由工程师或者开发人员)。在其他情况下,外部分发操作214可以包括基于节流规则再现将程序指令分发到范围的部分。可以基于冷却规则来确定再现率。
在确定操作216处,可以确定程序指令的分发是否已经完成。例如,可以确定程序指令是否相对于工程师选择的范围来执行。亦即,在多次迭代中分发到范围的多个部分中的每个部分的程序指令是否完成了对整个范围的程序指令的分发。如果分发完成,则所述方法可以进行到结束操作228。如果分发未完成,则所述方法可以进行到外部分发操作214或选择操作203。例如,如果分发未完成并且程序指令被更新(例如,由于在迭代之后的冷却时段期间识别的异常),则所述方法可以进行到选择操作203(参考“2”)。此后,在选择操作203处,可以选择经更新的程序指令用于分发。替代地,如果分发没有完成并且程序指令没有更新,则所述方法可以进行到外部分发操作214(参考“1”)。在这种情况下,可以发起基于节流、冷却和计时规则的分发的下一迭代。
在应用操作218处,可以应用覆盖标准以确定是否应当自动地批准工程作业以用于立即分发。例如,如果在确定操作204处确定程序指令编码针对解决关键客户故障(例如,SEV 0)的工程作业,则可以在应用操作218处评估用于覆盖(或者绕过)规则的标准。例如,在应用操作218处,可以评估选择用于分发的程序指令的工程师的角色和/或与关键客户故障相关联的客户的状态。应当意识到,在应用操作218处,可以评估额外的或替代的覆盖标准。
在确定操作220处,可以确定是否已经满足了覆盖标准中的至少一个(或者阈值数量的)覆盖标准。例如,如果工程师是待命的工程师(“OCE”),则可以满足至少一个覆盖标准。如果与关键客户故障相关联的客户与特殊状态(例如,观察列表、战略租户)相关联,和/或客户具有阈值数量的活动外部用户(例如,1000),则可以满足至少一个覆盖标准。在一些情况下,一旦满足覆盖标准中的至少一个覆盖标准,则所述方法可以进行到自动覆盖操作224。在其他情况下,必须满足阈值数量(或者全部)的覆盖标准以前进到自动覆盖操作224。如果不满足覆盖标准中的至少一个(或者阈值数量的)覆盖标准,则所述方法可进行到手动确定操作222。
在手动确定操作222处,当覆盖标准中的至少一个(或者阈值数量的)覆盖标准未能满足时,可以获得绕过规则的手动批准。例如,可以从值班管理者或者其他授权人员那里获得人工批准。如果获得手动批准,则所述方法可以进行到手动覆盖操作226。如果未获得人工批准,则所述方法可进行到属性确定操作206,其中,程序指令的分发将基于规则的应用进行。
在自动覆盖操作224处,一旦自动批准,则程序指令就可以基本上立即针对范围分发,以解决关键客户故障。亦即,程序指令可以在分发期间绕过规则的应用(例如,环级验证、节流、冷却和计时),以使得工程师(例如,OCE)能够快速地解决关键客户故障。以这种方式,使客户问题的解决时间(TTR)最小化,由此改善客户满意度。同时,基于满足覆盖标准,可以防止绕过规则的代码分发的内部活动。在基本上立即针对该范围分发程序指令以解决关键客户故障后,所述方法可以进行到结束操作228。
在手动覆盖操作224处,在手动批准后,程序指令可以基本上立即针对范围分发,以解决关键客户故障。亦即,程序指令可以在分发期间绕过规则的应用(例如,环级验证、节流、冷却和计时),以使得工程师(例如,OCE)能够快速地解决关键客户故障。以这种方式,使客户问题的解决时间(TTR)最小化,由此改善客户满意度。同时,基于接收到人工批准,可以防止绕过规则的代码分发的内部活动。在基本上立即针对该范围分发程序指令以解决关键客户故障后,所述方法可进行到结束操作228。
在各方面中,外部分发操作214构成程序指令的外部部署到至少一个外部验证环内的一个迭代(如所指示的“A”)。环内部署的迭代包括基于上文所描述的节流、冷却和计时规则的程序指令的一个或多个分发。图3描述了用于外部分发操作214的操作更详细序列。
应当意识到,描述操作202-228的目的是为了说明本发明的方法和系统,并且不意图将本公开限制为步骤的特定序列,例如,可以以不同的顺序执行步骤,可以执行额外步骤,并且可以在不背离本发明的情况下排除所公开的步骤。
图3图示了根据本公开的各方面的基于规则的应用在外部环级中分发程序指令的示例性方法。方法300的操作的一般顺序在图3中示出。通常,方法300图示了用于图2的外部分发操作214的操作序列。方法300可以包括更多或更少的步骤,或者可以不同于图3中所示的那些步骤来安排步骤的顺序。方法300能够作为由计算机系统执行并且被编码或存储在计算机可读介质上的计算机可执行指令集来执行。此外,方法300能够由与处理器、ASIC、FPGA、SOC或者其他硬件设备相关联的门或电路来执行。此后,将参考结合图1、2、4、5、6、7、8A-B所描述的系统、组件、设备、模块、软件、数据结构、数据特性表示、信令图、方法等来解释方法300。
在外部分发操作304处,在验证分发的内部环(例如,dogfood环)时,程序指令可被分发到外部环。例如,程序指令可以被分发给托管与外部环(例如,生产环)中的客户相关联的外部用户的资源。
在规则分发操作306处,程序指令可以基于规则(例如,在规则确定操作210处生成的规则)在外部环中分发,包括节流规则、冷却规则和(一个或多个)计时规则。例如,节流规则定义了在分发的每个阶段(或者迭代)中程序指令可以针对其执行的范围的子集(或者部分)(例如,虚拟机(VM)级别范围的VM的百分比、场群级别范围的跨区域场群的百分比、数据库级别范围的数据库的百分比等)。冷却规则定义了分发程序指令集的阶段(或者迭代)之间的时间段(例如,数小时、数天、数周等)。例如,在规则分发操作306处,程序指令可以被分发到范围的第一子集(并且然后在(一个或多个)冷却时段之后被分发到范围的第二子集和后续子集)。另外,程序指令可以基于计时规则(例如,在高峰或非高峰时间期间)和排序规则(例如,在暖子集或热子集之前分发到范围的冷子集,并且在基于相关联的工程作业的优先级的分发序列位置)来分发。
在接收遥测数据操作308处,遥测数据可以在分发迭代之间的冷却时段期间被接收和处理(例如,由遥测数据处理器122)以确保程序指令恰当地执行和/或工程作业在下一迭代中分发程序指令之前按预期执行。例如,遥测数据可以包括与最终用户如何访问应用服务有关的日志(例如,点击数据、输入查询和输出结果、成功报告或错误报告等)。在各方面中,遥测数据可以被存储在遥测数据库(例如,遥测数据库130)中,并且可以更新或者与被存储在服务器使用数据库126中的动态属性结合使用。
在异常确定操作310处,可以确定在分发迭代期间执行程序指令时是否发生了一个或多个异常。异常可以指代在程序指令执行期间发生的任何错误或异常,或者与相关联的工程作业的执行相关联的任何错误或异常。例如,遥测数据可以在执行程序指令之后基于与应用服务的最终用户交互(例如,点击数据、用户请求、响应时间等)记录错误或异常。如果检测到一个或多个异常,则可以停止程序指令的分发,并且所述方法可以进行到更新操作314。当检测到一个或多个异常时,可以向OCE和/或程序指令的开发人员发送通知。如果未检测到一个或多个异常,则所述方法可进行到冷却确定操作312。
在冷却确定操作312处,可以确定是否已经经过了冷却时段。冷却时段是在分发程序指令集的阶段(或者迭代)之间所需的时间段(例如,数小时、数天、数周等)。例如,针对低风险的工程作业,冷却期可能是6小时;而针对高风险的工程作业,冷却期可能是24小时。如果自从在规则分发操作306处的程序指令分发以来的时间大于或等于冷却时段,则所述方法可以进行到范围确定操作316。如果自从在规则分发操作306处的程序指令分发以来的时间小于冷却时段,则所述方法可以返回到接收遥测数据操作308。
在更新操作314处,程序指令可以被更新(例如,由工程师或者开发人员)以解决异常。例如,当在程序指令的执行期间检测到一个或多个异常时,可以向OCE和/或程序指令的开发人员发送通知。更新所述程序指令可以涉及评估脚本错误(例如,调试)、修订脚本以提高工程作业的性能等。在更新所述程序指令时,所述方法可以进行到图2的确定属性操作206。
在范围确定操作316处,可以确定程序指令是否已经针对工程师选择的范围执行。亦即,在多次迭代中分发到范围的多个子集中的每个子集的程序指令是否已经导致针对整个范围执行程序指令。如果完成了针对整个范围的分发,则所述方法可以进行到图2的结束操作228。如果没有完成针对整个范围的分发,则所述方法可以返回到规则分发操作306,其中,程序指令将基于规则在下一迭代中分发。在一些情况下,返回到规则分发操作306可以进一步涉及进入下一外部验证环。
应当意识到,描述操作302-316的目的是为了说明本发明的方法和系统,并且不意图将本公开限制为步骤的特定序列,例如,可以以不同的顺序执行步骤,可以执行额外步骤,并且可以在不背离本发明的情况下排除所公开的步骤。
图4图示了根据本公开的各方面的用户脚本表的示例。
例如,图4图示了与工程作业相关联的程序指令(即,代码或脚本)相关的各种参数(或属性)的示例性数据结构。属性可以被存储在属性/规则数据库(例如,属性/规则数据库126)中。代码列表400的每一行(例如,行1-5)对应于程序指令集。基于程序指令集的代码标识符对表条目进行排序。代码ID 402指示针对每个程序指令集的代码ID(例如,代码IDS001-S005)。代码类型404表示代码的类型,例如,维护、配置、定制、代码修复或者代码更新。风险级别406指定部署每个程序指令集的风险级别。基于在执行程序指令期间对一个或多个客户产生不利影响的可能性,风险级别可以包括低、中和高。范围408指定要对其执行程序指令的云计算环境内的计算资源的逻辑划分。范围408可以包括但不限于例如“虚拟服务器(VM)”、“物理服务器”、“场群”、“区”、“网络”、“证书服务器”、“数据库”和“未知”。如在风险级别列406中所示的,与未知范围相关联的风险是高的。
更新类型410指示程序指令的更新功能(或者更新特性)。在一些情况下,程序指令可能只包括读取指令。在其他情况下,程序指令可以包括读写指令。在各方面中,程序指令集的更新特性影响风险级别。针对包含读取指令而不包含写入指令的程序指令,由于程序指令不修改云计算资源上的数据或代码,因此在执行程序指令时对客户产生不利影响的总体风险水平较低。替代地,包含写入指令的程序指令可能修改云计算资源上的至少一些数据或代码,这可能对使用相同资源的客户产生不利影响(例如,在部署范围内)。
租户412指示程序指令的部署是针对云中的单个租户还是多个租户。在各方面中,程序指令可以与应用服务的特定于租户的定制相关。在这种情况下,程序指令的执行可能对单个租户产生不利影响(例如,在异常的情况下)。替代地,针对服务器场群维护的程序指令可能影响在该服务器场群上托管的多个租户。在这种情况下,与执行程序指令相关联的任何异常都可能对多个租户产生不利影响。与可能影响多个租户的程序指令的分发相比,可能影响单个租户的程序指令的分发可能与较低的风险级别相关联。
作为程序指令的示例,代码ID 402为“S005”的程序指令表示用于工程作业的脚本,以改变(读取和写入)针对多个租户的数据库和证书中的各种属性。代码类型404的值为“维护”,风险级别406为“高”,范围408为“数据库、证书”,更新类型410为“读/写”,以及租户412为“多个”。
应当意识到,关于图4所描述的各种方法、组件、属性等并不意图将系统和方法限制到所描述的特定属性。因此,可以使用额外拓扑配置来实践在本文中所描述的方法和系统,和/或可以排除所述的一些属性而不背离在本文中所公开的方法和系统。
图5图示了根据本公开的各方面的示例性系统的用于规则表的数据结构的示例。
表500的每一行(例如,行1-3)对应于规则。规则表500包括规则ID 502、代码ID504、代码类型506、范围508、更新类型510、节流512、冷却514和计时516。规则ID 502指示当分发编程指令集(例如,S001)时选择用于应用的规则的标识符(例如,R001)。代码ID 504指示用于每个程序指令集(例如,S001-S003)的代码ID。代码类型506指示由每个编程指令集实现的作业类型,例如,维护、问题修复、配置或更新。范围508指定对其执行程序指令集的云计算环境内计算资源的逻辑划分,例如,“虚拟服务器(VM)”、“物理服务器”、“场群”、“区”、“网络”、“证书服务器”、“数据库”和“未知”。更新类型510指示程序指令(例如,“只读”或“读写”)的更新功能(或者更新特性)。在各方面中,代码类型506、范围508和更新类型510识别程序指令的属性。亦即,规则R001适用于程序指令的代码类型为“问题修复”、范围为“服务器场群”以及更新特性为“读/写”的情况。
节流512指示在分发的每个阶段(或者迭代)中能够对其执行程序指令的范围的子集(或者部分)(例如,每个分发的10%的场群、每个分发的10%的虚拟服务器、每个分发的10%的数据库)。冷却514指示在开始下一轮分发之前等待的时间段(例如,6小时或24小时)。计时516指示用于执行程序指令的一天中的本地时间(例如,“任意时间”和“非峰值”)。在各方面中,“任意时间”允许程序指令在高峰或非高峰时间期间执行。
例如,具有规则ID 502“R003”的规则表示应用于分发针对维护作业的程序指令集的示例性规则,以用于获取(例如,读取)数据库和证书服务器中的属性。在这种情况下,代码ID 504是“S003”,代码类型506是“维护”,范围508是“数据库”,更新类型510是“读取”,节流512是“20%的数据库”,冷却514是“6小时”,计时516是“任意时间”。在图5的示例中示出的规则中,规则R001对程序指令的部署施加了较宽松的控制。例如,所述规则具有相对较低的节流(例如,较高的分发)和较短的冷却时段(例如,6小时)。
应当意识到,关于图5所描述的各种方法、组件、属性等并不意图将系统和方法限制到所描述的特定属性。因此,可以使用额外拓扑配置来实践本文的方法和系统,和/或可以排除所述的一些属性而不背离在本文中所公开的方法和系统。
图6图示了根据本公开的各方面的分布序列表的示例。
示例性调度表600包括分发ID 602、代码ID 604、规则ID 606、环级608、分发序列位置610和当前状态612。所述表的每一行可以对应于程序指令集的分发的迭代。
分发ID 602指示分发的迭代的标识符(例如,“D001”)。代码ID 604指示正在被分发的程序指令集的标识符(例如,“S003”)。例如,程序指令集可以被存储在代码存储装置124中。规则ID 606指示在分发期间要应用的至少一个规则的标识符(例如,节流、冷却、计时等)。环级608指示测试的环级(例如,“Dogfood”指示内部测试环,“Production 1”指示向租户分发的第一生产级别)。分发序列位置610指示分别用于分发程序指令S003和S001的分发序列内的位置(例如,“第二”或“第一”)。当前状态612指示相应分发的当前状态。分发D001的当前状态612处于“烘烤60%完成”,而分发D002的当前状态612处于“活动75%完成”。当前状态612指示分发过程处于“烘烤状态”(例如,分发在冷却时段期间暂停)或“活动状态”(例如,分发处于活动状态),并且指示分发的完成百分比(例如,相对于范围的完成百分比)。
应当意识到,关于图6所描述的各种方法、组件、属性等并不意图将系统和方法限制到所描述的特定属性。因此,可以使用额外拓扑配置来实践本文的方法和系统,和/或可以排除所描述的一些属性而不背离在本文中所公开的方法和系统。
图7是图示了可以用于实践本公开的各方面的计算设备700的物理组件(例如,硬件)的框图。下文所描述的计算设备组件可以适合于上文所描述的计算设备。在基本配置中,计算设备700可以包括至少一个处理单元702和系统存储器704。取决于计算设备的配置和类型,系统存储器704可以包括但不限于:易失性存储装置(例如,随机存取存储器)、非易失性存储装置(例如,只读存储器)、闪存或者这样的存储器的任意组合。系统存储器704可以包括操作系统705和适合于执行在本文中所公开的各个方面的一个或多个程序工具706。例如,操作系统705可以适合于控制计算设备700的操作。此外,本公开的各方面可以结合图形库、其他操作系统或任何其他应用程序来实践,并且不限于任何特定的应用或系统。该基本配置在图7中由虚线708内的那些组件示出。计算设备700可以具有额外特征或功能。例如,计算设备700也可以包括额外数据存储设备(可移动和/或不可移动),诸如,例如磁盘、光盘或磁带。这样的额外存储设备在图7中通过可移动存储设备709和不可移动存储设备710示出。
如上文所提到的,许多程序工具和数据文件可以被存储在系统存储器704中。当在处理单元702上执行时,程序工具706(例如,代码分发应用720)可以执行包括但不限于如在本文中所描述的各方面的过程。代码分发应用720包括风险级别确定器722、规则生成器724、环验证器726、覆盖执行器728、分发器730和遥测数据处理器732,如关于图1更详细描述的。根据本公开的各方面可以使用的其他程序工具可以包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等。
此外,本公开的各方面可以在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实践。例如,本公开的各方面可以经由片上系统(SOC)来实践,其中,在图7中所图示的组件可中的每个或多个组件可以被集成到单个集成电路上。这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些都被集成(或者“烧录”)到芯片基底上作为单个集成电路。当经由SOC来操作时,在本文中所描述的关于客户端切换协议的能力的功能可以经由与计算设备700的其他组件集成在单个集成电路(芯片)上的特定于应用的逻辑来操作。也可以使用能够执行逻辑操作的其他技术来实践本公开的各方面中,诸如,例如AND、OR和NOT,包括但不限于:机械、光学、流体和量子技术。此外,本公开的各方面可以在通用计算机内或者在任何其他电路或系统中实践。
计算设备700也可以具有一个或多个输入设备712,诸如键盘、鼠标、笔、声音或语音输入设备、触摸或滑动输入设备等。也可以包括(一个或多个)输出设备714,诸如显示器、扬声器、打印机等。上述设备是示例,并且可以使用其他设备。计算设备700可以包括允许与其他计算设备750通信的一个或多个通信连接716。合适的通信连接716的示例包括但不限于:射频(RF)发射机、接收机和/或收发器电路;通用串行总线(USB)、并行和/或串行端口。
在本文中所使用的术语“计算机可读介质”可以包括计算机存储介质。计算机存储介质可以包括以用于存储信息(例如计算机可读指令、数据结构或程序工具)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储设备709和不可移动存储设备710都是计算机存储介质示例(例如,存储器存储)。计算机存储介质可以包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或者其他存储器技术、CD-ROM、数字多功能盘(DVD)或者其他光存储设备、盒式磁带、磁带、磁盘存储或者其他磁存储设备,或可用于存储信息并可由计算设备700访问的任何其他制物。任何这样的计算机存储介质可以是计算设备700的一部分。计算机存储介质不包括载波或者其他传播或调制的数据信号。
通信介质可以通过计算机可读指令、数据结构、程序工具或调制数据信号中的其他数据来体现,例如载波或者其他传输机制,并且包括任何信息传递介质。术语“调制数据信号”可以描述以对信号中的信息进行编码的方式设置或改变一个或多个特性的信号。通过示例而非限制,通信介质可以包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频(RF)、红外和其他无线介质的无线介质。
图8A和8B图示了计算设备或移动计算设备800,例如,移动电话、智能电话、可穿戴计算机(例如智能手表)、平板计算机、膝上型计算机等,利用其可以实践本公开的各方面。在一些方面中,用户(例如,图1中的最终用户104)使用的客户端可以是移动计算设备。参考图8A,图示了用于实现这些方面的移动计算设备800的一个方面。在基本配置中,移动计算设备800是具有输入元件和输出元件两者的手持计算机。移动计算设备800通常包括显示器805和允许用户将信息输入到移动计算设备800中的一个或多个输入按钮810。移动计算设备800的显示器805还可以用作输入设备(例如,触摸屏显示器)。在被包含时,可选侧输入元件815允许进一步的用户输入。侧输入元件815可以是旋转开关、按钮或任何其他类型的手动输入元件。在替代方面中,移动计算设备800可以并入或多或少的输入元件。例如,显示器805在一些方面可以不是触摸屏。在又一替代方面中,移动计算设备800是便携式电话系统,例如蜂窝电话。移动计算设备800还可以包括可选小键盘835。可选小键盘835可以是在触摸屏显示器上生成的物理小键盘或“软”小键盘。在各个方面中,输出元件包括用于示出图形用户界面(GUI)的显示器805、视觉指示器820(例如,发光二极管)和/或音频换能器825(例如,扬声器)。在一些方面中,移动计算设备800并入向用户提供触觉反馈的振动换能器。在又一方面中,移动计算设备800并入输入和/或输出端口,例如用于向外部设备发送信号或从外部设备接收信号的音频输入和/或输出端口,例如,音频输入(例如,麦克风插孔)、音频输出(例如,耳机插口)和视频输出(例如,HDMI端口)。
图8B是示出计算设备、服务器(例如,图1中的物理服务器154A-154D或虚拟服务器160A-160B)、移动计算设备等的一个方面的架构的框图。亦即,计算设备800可以并入系统(例如,架构)802来实现一些方面。系统802可以实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些方面中,系统802集成为计算设备,例如集成数字助理(PDA)和无线电话。
一个或多个应用程序866可被加载到存储器862中,并且在操作系统864上运行或者与操作系统864相关联。应用程序的示例包括电话拨号程序、电子邮件程序、信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息传递程序等。系统802还包括存储器862内的非易失性存储区域868。非易失性存储区域868可用于存储在系统802断电的情况下不应当丢失的持久信息。应用程序866可以使用非易失性存储区域868中的信息并且将其存储在非易失性存储区域868中,例如电子邮件或电子邮件应用所使用的其他消息等。同步应用(未示出)也驻留在系统802上,并且被编程为与驻留在主机上的对应同步应用交互,以保持存储在非易失性存储区域868中的信息与存储在主机计算机上的对应信息同步。应当意识到,其他应用可以被加载到存储器862中并且在本文中所描述的移动计算设备800上运行。
系统802具有电源870,其可以被实现为一个或多个电池。电源870还可以包括外部电源,诸如AC适配器或对电池进行补充或再充电的供电对接支架。
系统802也可以包括执行发送和接收射频通信功能的无线接口层872。无线接口层872经由通信运营商或服务提供商促进系统802与“外部世界”之间的无线连接。在操作系统864的控制下进行去往和来自无线接口层872的传输。换言之,无线接口层872接收到的通信可以经由操作系统864传播到应用程序866,并且反之亦然。
视觉指示器820(例如,LED)可以被用于提供视觉通知,和/或音频接口874可以被用于经由音频换能器825产生可听通知。在所图示的配置中,可视指示器820是发光二极管(LED),音频换能器825是扬声器。这些设备可以直接耦合到电源870,以便当被激活时,即使处理器860和其他组件可能为了节省电池功率而关闭,其仍然在由通知机制规定的持续时间内保持开启。LED可以被编程为无限期地保持开启,直到用户采取行动指示设备的通电状态。音频接口874用于向用户提供可听信号并且从用户接收可听信号。例如,除了耦合到音频换能器825之外,音频接口874也可以被耦合到麦克风以接收可听输入,例如以促进电话交谈。根据本公开的各方面,麦克风还可以用作音频传感器以促进通知的控制,如下文将描述的。系统802还可以包括视频接口876,其使得机载相机830的操作能够记录静止图像、视频流等。
实现系统802的移动计算设备800可以具有额外特征或功能。例如,移动计算设备800也可以包括额外数据存储设备(可移动和/或不可移动),诸如磁盘、光盘或磁带。这样的额外存储设备在图8B中通过非易失性存储区域868示出。
如上文所描述的,由移动计算设备800生成或捕获并且经由系统802存储的数据/信息可以本地存储在移动计算设备800上,或者数据可以存储在任何数量的存储介质上,所述存储介质可以由设备经由无线接口层872或经由在移动计算设备800和与移动计算设备800相关联的单独计算设备(例如,分布式计算网络(例如,互联网)中的服务器计算机)之间的有线连接访问。应当意识到,这样的数据/信息可以经由移动计算设备800经由无线接口层872或经由分布式计算网络来访问。类似地,根据公知的数据/信息传输和存储单元,包括电子邮件和协作数据/信息共享系统,这种数据/信息可以容易地在计算设备之间传输以便存储和使用。
本申请中提供的一个或多个方面的描述和图示并不旨在以任何方式限制或约束所要求的公开的范围。本申请中提供的各方面、示例和细节被认为足以传达所有物并使他人能够制造和使用所要求公开的最佳模式。所要求保护的公开不应当被解释为限于例如本申请中提供的任何方面或细节。不管是组合还是单独地示出和描述,各种特征(结构和方法上的)都旨在被选择性地包括或省略,以产生具有特定特征集的实施例。已经提供了对本申请的描述和说明,本领域技术人员可以设想落在本申请中体现的一般发明概念的更广泛方面的精神内的变化、修改和替代方面,这些变化、修改和替代方面不背离所要求保护的公开的更广泛范围。
在各方面中,提供了一种分发程序指令的计算机实现的方法。所述方法包括:接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业。另外,所述方法包括:确定所述工程作业是否解决关键客户故障;并且响应于确定所述工程作业不解决关键客户故障,确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性。基于所确定的属性,所述方法包括确定针对所述范围执行所述程序指令的风险级别;并且基于所述风险级别,所述方法包括确定用于管理对所述程序指令的分发的一个或多个规则。另外,基于所述一个或多个规则,所述方法包括将所述程序指令分发到所述范围的子集。
在另外的方面中,提供了一种系统。所述系统包括:处理器;以及存储器,其存储计算机可执行指令,所述计算机可执行指令当由所述处理器执行时,使得所述系统执行操作。所述操作包括:接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业。另外,所述操作包括:确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性;以及基于所确定的属性,确定针对所述范围执行所述程序指令的风险级别。基于所述风险级别,所述操作包括确定用于管理对所述程序指令的分发的一个或多个规则,其中,所述一个或多个规则至少包括节流规则和冷却规则。基于所述节流规则,所述操作还包括将所述程序指令分发到所述范围的第一子集;以及基于所述冷却规则,等待时间段。基于所述节流规则,所述操作包括将所述程序指令分发到所述范围的第二子集。
在又另外的方面中,提供了一种计算机存储介质。所述计算机存储介质存储计算机可执行指令,所述计算机可执行指令当由处理器执行时使得计算机系统执行操作。所述操作包括:接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业。所述操作还包括:确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性;基于所确定的属性,确定针对所述范围执行所述程序指令的风险级别。基于所述风险级别,所述操作包括确定用于管理对所述程序指令的分发的一个或多个规则;基于所述一个或多个规则,将所述程序指令分发到所述范围的子集。在由所述一个或多个规则指定的时间段期间,所述操作包括接收关于将所述程序指令分发到所述范围的所述子集的遥测数据;以及基于所述遥测数据,更新所述程序指令。
上述一个或多个方面中的任何一个方面与上述一个或多个方面中的任何其他方面相组合。在本文中所描述的一个或多个方面中的任意一个方面。

Claims (15)

1.一种分发程序指令的计算机实现的方法,所述方法包括:
接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业;
确定所述工程作业是否解决关键客户故障;
响应于确定所述工程作业不解决关键客户故障,确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性;
基于所确定的属性,确定针对所述范围执行所述程序指令的风险级别;
基于所述风险级别,确定用于管理对所述程序指令的分发的一个或多个规则;以及
基于所述一个或多个规则,将所述程序指令分发到所述范围的子集。
2.根据权利要求1所述的计算机实现的方法,其中,所述范围包括在所述云计算环境内的资源的逻辑划分。
3.根据权利要求2所述的计算机实现的方法,其中,所述范围的所述子集包括所述范围的百分比。
4.根据权利要求1所述的计算机实现的方法,还包括:
响应于确定所述工程作业解决关键客户故障,评估一个或多个覆盖标准;
响应于确定至少一个覆盖标准被满足,自动地覆盖所述一个或多个规则;以及
在不应用所述一个或多个规则的情况下针对所述范围分发所述程序指令。
5.根据权利要求1所述的计算机实现的方法,还包括:
响应于确定所述工程作业解决关键客户故障,评估一个或多个覆盖标准;
响应于确定所述覆盖标准未被满足,请求人工批准覆盖所述一个或多个规则;以及
响应于接收到所述人工批准,在不应用所述一个或多个规则的情况下针对所述范围分发所述程序指令。
6.根据权利要求1所述的计算机实现的方法,其中,所述一个或多个规则包括以下中的一项或多项:环级验证规则、节流规则、冷却规则或者计时规则。
7.根据权利要求6所述的计算机实现的方法,其中,所述环级验证规则规定:在将所述程序指令分发给外部验证环之前,所述程序指令被分发给内部验证环。
8.根据权利要求6所述的计算机实现的方法,其中,所述节流规则指定所述范围的所述子集。
9.根据权利要求6所述的计算机实现的方法,其中,所述冷却规则指定在所述程序指令的顺序分发之间的时间段。
10.根据权利要求9所述的计算机实现的方法,还包括:
接收关于在所述时间段期间将所述编程指令分发到所述范围的所述子集的遥测数据。
11.一种系统,包括:
至少一个处理器;以及
至少一个存储器,其存储计算机可执行指令,所述计算机可执行指令当由所述至少一个处理器执行时使得所述系统:
接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业;
确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性;
基于所确定的属性,确定针对所述范围执行所述程序指令的风险级别;
基于所述风险级别,确定用于管理对所述程序指令的分发的一个或多个规则,其中,所述一个或多个规则至少包括节流规则和冷却规则;
基于所述节流规则,将所述程序指令分发到所述范围的第一子集;
基于所述冷却规则,等待一时间段;以及
基于所述节流规则,将所述程序指令分发到所述范围的第二子集。
12.根据权利要求11所述的系统,其中,所述范围是与所述应用服务相关联的对象类型。
13.根据权利要求12所述的系统,其中,所述范围是基于在对象之间共享的公共策略来定义的。
14.根据权利要求11所述的系统,所述计算机可执行指令当被执行时还使得所述系统:
接收关于在所述时间段期间将所述编程指令分发到所述范围的所述第一子集的遥测数据。
15.一种存储计算机可执行指令的计算机存储介质,所述计算机可执行指令当由处理器执行时使得计算机系统:
接收对用于分发的程序指令的选择,其中,所述程序指令当被执行时针对云计算环境的范围实现工程作业;
确定与所述程序指令或所述范围中的至少一个相关联的一个或多个属性;
基于所确定的属性,确定针对所述范围执行所述程序指令的风险级别;
基于所述风险级别,确定用于管理对所述程序指令的分发的一个或多个规则;
基于所述一个或多个规则,将所述程序指令分发到所述范围的子集;
在由所述一个或多个规则指定的时间段期间,接收关于将所述程序指令分发到所述范围的所述子集的遥测数据;以及
基于所述遥测数据,更新所述程序指令。
CN202180036074.9A 2020-05-20 2021-04-10 用于对程序指令的受控分发的自动规则 Pending CN115668192A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/878,951 US11294654B2 (en) 2020-05-20 2020-05-20 Automated rules for controlled distribution of program instructions
US16/878,951 2020-05-20
PCT/US2021/026740 WO2021236253A1 (en) 2020-05-20 2021-04-10 Automated rules for controlled distribution of program instructions

Publications (1)

Publication Number Publication Date
CN115668192A true CN115668192A (zh) 2023-01-31

Family

ID=75787231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180036074.9A Pending CN115668192A (zh) 2020-05-20 2021-04-10 用于对程序指令的受控分发的自动规则

Country Status (4)

Country Link
US (1) US11294654B2 (zh)
EP (1) EP4154145A1 (zh)
CN (1) CN115668192A (zh)
WO (1) WO2021236253A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023135790A1 (ja) * 2022-01-17 2023-07-20 楽天モバイル株式会社 ネットワーク管理装置、ネットワーク管理方法およびネットワーク管理システム
US20230385101A1 (en) * 2022-05-31 2023-11-30 Microsoft Technology Licensing, Llc Policy-based deployment with scoping and validation

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216343B2 (en) 2002-09-20 2007-05-08 International Business Machines Corporation Method and apparatus for automatic updating and testing of software
US20060048157A1 (en) * 2004-05-18 2006-03-02 International Business Machines Corporation Dynamic grid job distribution from any resource within a grid environment
US7614046B2 (en) 2004-11-24 2009-11-03 Microsoft Corporation Method and system for analyzing the impact of a software update
US20100125827A1 (en) * 2008-11-18 2010-05-20 International Business Machines Corporation Developing software code using parameterized annotations
US9229707B2 (en) 2008-12-18 2016-01-05 Sap Se Zero downtime mechanism for software upgrade of a distributed computer system
US9507940B2 (en) 2010-08-10 2016-11-29 Salesforce.Com, Inc. Adapting a security tool for performing security analysis on a software application
US8903943B2 (en) * 2011-02-15 2014-12-02 Salesforce.Com, Inc. Integrating cloud applications and remote jobs
US9727441B2 (en) * 2011-08-12 2017-08-08 Microsoft Technology Licensing, Llc Generating dependency graphs for analyzing program behavior
US8806574B2 (en) 2011-10-05 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for policy conformance in a web application
US10345765B2 (en) * 2012-09-14 2019-07-09 Ademco Inc. System and method of overriding a scheduled task in an intrusion system to reduce false alarms
US9058359B2 (en) 2012-11-09 2015-06-16 International Business Machines Corporation Proactive risk analysis and governance of upgrade process
US9804835B2 (en) * 2014-06-11 2017-10-31 Microsoft Technology Licensing, Llc Dynamic pacing for service upgrades
EP3261290B1 (en) * 2015-12-31 2020-11-25 Huawei Technologies Co., Ltd. Software defined data center and method for deploying service cluster therein
US10313192B2 (en) * 2016-01-14 2019-06-04 Microsoft Technology Licensing, Llc Automated creation of test tenants for data center technical issue detection
US10320572B2 (en) * 2016-08-04 2019-06-11 Microsoft Technology Licensing, Llc Scope-based certificate deployment
EP3552130B1 (en) * 2017-04-27 2022-07-20 Hewlett-Packard Development Company, L.P. Controller for a fulfilment service operation
US10191731B2 (en) * 2017-06-27 2019-01-29 Microsoft Technology Licensing, Llc Safe and agile rollouts in a network-accessible server infrastructure using slices
US10725763B1 (en) * 2017-06-28 2020-07-28 Amazon Technologies, Inc. Update and rollback of configurations in a cloud-based architecture
US10360012B2 (en) * 2017-11-09 2019-07-23 International Business Machines Corporation Dynamic selection of deployment configurations of software applications
US10289403B1 (en) * 2018-03-29 2019-05-14 Microsoft Technology Licensing, Llc Enhanced server farm patching system for enabling developers to override off-peak patching schedules
US10585659B2 (en) * 2018-03-29 2020-03-10 Microsoft Technology Licensing, Llc Enabling tenant administrators to initiate request driven peak-hour builds to override off-peak patching schedules
US10853046B2 (en) * 2018-12-13 2020-12-01 Salesforce.Com, Inc. Deployment of software applications on server clusters
US11281522B2 (en) * 2019-08-30 2022-03-22 Microsoft Technology Licensing, Llc Automated detection and classification of dynamic service outages
US11544081B2 (en) * 2019-12-03 2023-01-03 Bank Of America Corporation Job execution integration to customized database

Also Published As

Publication number Publication date
US20210365255A1 (en) 2021-11-25
EP4154145A1 (en) 2023-03-29
US11294654B2 (en) 2022-04-05
WO2021236253A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
US10817410B2 (en) Application programming interface for providing access to computing platform definitions
US10680929B2 (en) Systems and methods for live testing performance conditions of a multi-tenant system
US10289409B2 (en) Systems, methods, and apparatus for migrating code to a target environment
US8261354B2 (en) System, method and program product for dynamically performing an audit and security compliance validation in an operating environment
US10469315B2 (en) Using computing platform definitions to provide segmented computing platforms in a computing system
US20190146830A1 (en) Template-driven multi-tenant workflow processing
US8265775B2 (en) Modular object publication and discovery
US20220147367A1 (en) Method and System for Automation Tool Set for Server Maintenance Actions
US9436701B2 (en) Methods and systems for regulating user engagement
CN115668192A (zh) 用于对程序指令的受控分发的自动规则
US11997018B2 (en) Systems, methods, computing platforms, and storage media for administering a distributed edge computing system utilizing an adaptive edge engine
EP4150883B1 (en) Predictable distribution of program instructions
US10778526B2 (en) Automated creation of test tenants for data center technical issue detection
US20210336838A1 (en) Multi-tenant event sourcing and audit logging in a cloud-based computing infrastructure
US9552226B1 (en) Predictive order status system and method for computing environment
US9372731B1 (en) Automated firmware settings framework
US8417996B2 (en) Facade for business risk minimization in change administration via risk estimation and mistake identification by ticket analysis
US20120173583A1 (en) Automation framework
US10748161B1 (en) System and method for managing computing resource orders
US10423398B1 (en) Automated firmware settings management
US9471784B1 (en) Automated firmware settings verification
CN107077490B (zh) 数据查询作业提交管理
CN115668131A (zh) 加速预生产功能使用
US20100318849A1 (en) Runtime behavior alteration using behavior injection harness
US20230097662A1 (en) Cloud environment delivery tool

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination