Dynamic computing resource assignment and scalable computing environment generation for real-time environments
By using sandbox group containers defined by metadata, dynamically generate and build a computing environment, the problem of cumbersome generation of the computing environment is solved, and rapid and automated computing environment management and efficient utilization of computing resources are achieved.
Patent Information
- Application Number
- CN202510311465.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-07-06
- Filing Date
- 2019-05-16
- Publication Date
- 2025-06-27
AI Technical Summary
In a real-time environment, the process of manually generating and building multiple computing environments is cumbersome and time-consuming, especially when it is necessary to dynamically adjust computing resources and deal with a large number of users, it is difficult for the prior art to efficiently manage and allocate computing resources.
Dynamically generate and set up computing environments by using metadata associated with individually defined containers of sandbox groups. Metadata defines team members, computing resource assignments and attributes, etc., allowing sandboxes and computing environments to be generated in parallel, and the allocation of computing resources is adjusted in real time according to changes.
It realizes rapid and automated computing environment generation and management, reduces the complexity and time cost of manual operations, and improves the utilization efficiency of computing resources and the flexibility of dynamic adjustment.
Smart Images

Figure CN120216187A_ABST
Abstract
Description
[0001] Explanation of divisional application
[0002] This application is a divisional application of a Chinese invention patent application with an international filing date of May 16, 2019, which entered the Chinese national phase on November 27, 2020, with a national application number of 201980035859.7 and a title of "Dynamic Computing Resource Allocation and Scalable Computing Environment Generation for Real-Time Environments". Technical Field
[0003] Embodiments of the present application generally relate to dynamic computing resource allocation and scalable computing environment generation for real-time environments. Background Art
[0004] Increasingly, computing environments need not be supported by hardware physically located at the same site as the users who utilize such computing environments, but can be supported by networked computing hardware aggregated in large data centers physically remote from the users. Typically, such computing environments are referred to as "cloud computing environments" and can provide different computing environments for users, which are generally supported by virtual machines issued by a large amount of computing hardware that provides stability, redundancy, and high availability. Typically, the provision of a computing environment such as a virtual machine can be performed once, for example, by an administrator, and then the resulting provisioned computing environment can be provided to users for utilization, and such utilization of computing resources can be developed in a continuous manner. And such utilization of computing resources is invoiced in a continuous manner. Usually, even for a skilled administrator, the generation and provision of a computing environment can be tedious and time-consuming, especially in cases where the amount of such computing environments to be generated is large.
[0005] In a variable team setting, it may be necessary to repeatedly generate and build multiple computing environments. For example, a team consisting of multiple different individuals, who may be unknown or known in advance, needs to build multiple computing environments for each such individual based on multiple different tasks or projects that the individual members of such a team will perform. Typically, such situations arise in demonstrative and / or educational contexts. As an example, a computer science professor may seek to educate one of his classes on implementing functionality using a database application, while he may educate another class on programming using a specific set of application development tools. In such an example, the professor is required to build a set of computing environments for each individual in the class to implement functionality using the database application, and will then further be required to build another set of computing environments for each individual in the class to program using the specific set of application development tools. If the first class is subsequently assigned a project for an image editing application, the professor may again be required to build a completely different set of computing environments for each individual in the class. If such a class includes dozens or hundreds of students, the amount of computing environments to be built may quickly become unsustainable. As another example, a presenter at a conference, for instance, may seek to provide access to a specific computing environment to the attendees as part of a demonstration. However, the specific individuals, or even the total number of individuals, may be unknown and can change dynamically even before or during the demonstration. In such an example, the presenter will be required to involve each individual attendee in a multi-step process of generating their own computing environments, resulting in confusion among the attendees and reducing the efficiency and utility of the entire demonstration. Additionally, requiring each attendee to participate in a multi-step process of generating their own computing environments diverts the attention of the attendees and delays the presenter's demonstration of useful materials.
[0006] Furthermore, resource consumption limitations can further complicate the difficulties of the professor or presenter, as typically such a professor may not be able to obtain additional resource consumption credits or the presenter may not know how much resource consumption will be required. Specifically, while resource consumption limitations can be established by a single administrator (such as the professor or presenter in the above examples), a typical cloud computing environment is billed separately, so it is necessary to manually divide or allocate resource consumption limitations among the multiple different computing environments being built. Such dispersion of resource consumption limitations may further exacerbate the likelihood of manually building computing environments in such team settings. SUMMARY OF THE INVENTION
[0007] A computing environment can be generated and constructed in an extensible manner based on metadata associated with individually defined containers of a sandbox group. Each container of the sandbox group is its own digital construct and is wrapped by metadata that defines the nature and aspects of the grouping, including enumerating individual members of a team, assigned factors or attributes, and the like. The metadata can thus identify the sandboxes to be generated and can identify within those sandboxes the computing environments to be generated and how such computing environments are to be constructed. The sandboxes can be generated in parallel and the computing environments can be constructed in parallel or staggered based on individual user access. Additionally, as the associated metadata is changed, the created computing environments and sandboxes can be modified or deleted, and new computing environments and sandboxes can be generated. Assignment of consumption limits can be individually assigned based on a predetermined amount or based on an amount determined according to varying factors (such as the amount of individual sandboxes currently in a container). The container constructs then provide, on an aggregated basis, monitoring and adjustment of such consumption limits.
[0008] This Summary is provided to introduce a few concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0009] Additional features and advantages will become apparent from the following detailed description when taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The following detailed description can be better understood when read in conjunction with the accompanying drawings, in which:
[0011] Figure 1 is a system diagram providing an exemplary system for computing environment generation;
[0012] Figure 2 is a system diagram providing an exemplary system for extensible computing environment generation;
[0013] Figure 3 is a system diagram providing an exemplary system for updatable computing environment generation;
[0014] Figure 4 is a flowchart of an exemplary computing environment generation and construction mechanism; and
[0015] Figure 5 is a block diagram of an exemplary computing device. DETAILED DESCRIPTION
[0016] The following description relates to the scalable generation and construction of sandboxes for individual users, and the computing environments available to such users within those sandboxes. Such sandboxes and computing environments can be scalablely generated and constructed based on metadata associated with individually defined containers of a sandbox group. Each container of the sandbox group can be its own digital construct and can be wrapped with metadata that defines the nature and aspects of the grouping, including enumerating individual members of a team, assigned factors or attributes, etc. The metadata can thus identify the sandboxes to be generated and can identify within those sandboxes the computing environments to be generated and how such computing environments are to be constructed. The sandboxes can be generated in parallel and the computing environments can be constructed in parallel, or staggered based on individual user access. Additionally, as the relevant metadata is changed, the created computing environments and sandboxes can be modified or deleted, and new computing environments and sandboxes can be generated. The assignment of consumption limits can be individually assigned based on a predetermined amount or based on an amount determined according to varying factors (such as the amount of individual sandboxes currently in a container). The container constructs then provide, on an aggregated basis, monitoring and adjustment of such consumption limits.
[0017] Although not required, the following description will be in the overall context of computer-executable instructions (e.g., program modules) executed by a computing device. More specifically, unless otherwise indicated, the description will refer to the actions and symbolic representations of operations performed by one or more computing devices or peripheral devices. Thus, it will be understood that such actions and operations, sometimes referred to as being performed by a computer, include the manipulation of electrical signals representing data in a structured form by a processing unit. The manipulation transforms the data or maintains it at a location in memory, reconfiguring or otherwise changing the operation of the computing device or peripheral device in a manner well known to those skilled in the art. The data structure in which the data is maintained is a physical location that has specific properties defined by the data format.
[0018] Generally, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. Moreover, those skilled in the art will understand that a computing device need not be limited to a conventional personal computer and includes other computing configurations, including servers, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, etc. Similarly, a computing device need not be limited to a single computing device, as the mechanisms can also be practiced in a distributed computing environment where tasks are performed by remote processing devices linked through a communication network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.
[0019] Reference Figure 1, an exemplary system 100 is illustrated, and the exemplary system 100 provides context for the following description. An administrator, such as exemplary administrator 110, may provide one or more team definitions, such as exemplary team definition 120, and one or more project definitions, such as exemplary project definition 130, to a computing environment generator, such as exemplary computing environment generator 140. For the purpose of illustrating the underlying computing hardware context, administrator 110 may utilize a computing device, such as exemplary personal computing device 111, which may be communicatively coupled via a computer communication network, such as exemplary network 190, to one or more server computing devices, such as exemplary server computing devices 151, 152, and 153.
[0020] According to one aspect, a team definition, such as one of the team definitions 120, may include identification information, such as a name, and information related to establishing computing resource projects and limitations. For example, the team definition may include an indication of the amount of computing resources represented in any suitable computing resource metric. For example, the team definition may include an enumeration of computing resources in terms of the amount of processor hours, cost (in dollars), memory consumption, or other similar quantification of computing resources. As the computing environment performs computations or other similar computer processing, computing resources are thus consumed or occupied. Such computing resources may have been assigned to administrator 110, who may be a class professor, through an authorization or other similar resource assignment mechanism. Alternatively or additionally, such computing resources are available to administrator 110 on an as-needed or dynamic basis, where the administrator may be a speaker or presenter at a conference workshop or laboratory. Thus, according to one aspect, computing resources may be enumerated in terms of limitations, such as authorization limits or per-user limits, which may be exhausted once all such computing resources are used up or otherwise consumed by the execution of computations on the computing environment, resulting in the termination of further computing functionality.
[0021] The team definition may also include a roster or list of individuals who are part of the team. Figure 1 Such individuals (such as those who are part of the initial team definition) included in one of the team definitions 120 shown in
[0022] In addition to the exemplary team definition 120, an administrator such as the exemplary administrator 110 may provide one or more project definitions, such as the exemplary project definition 130. According to one aspect, a project definition may include information indicating a computing environment to be generated, identification information (such as the name of the project), and guidance or other foundational materials related to the initiation, execution, or completion of the project. For example, a project for database operations may have a project definition associated therewith that identifies the computing environment to be generated for such a project as including a processor of a given type, speed, or other similar processor-indicating attribute, a large amount of memory, a large amount of storage capacity, and related applications (such as a database application). Each individual executing such a project may thus be provided with a computing environment suitable for such a project (such as a computing environment designed by a professor teaching a class). Additionally, a project for database operations may include a manual, syllabus, guidance, or other similar information that may be provided, for example, by a professor teaching a class on database operations.
[0023] As shown by generation action 141, upon receiving a team and project definition (such as exemplary team definition 120 and project definition 130), a compute environment generator (such as exemplary compute environment generator 140) can generate multiple compute environments (such as exemplary compute environments 161 and 162). More specifically, according to one aspect, the compute environment generator can generate compute environments for each project for each currently enumerated team member. Thus, for example, if one team definition in team definition 120 enumerates ten entities as part of a given team, and two project definitions in project definition 130 indicate that they have been assigned to that team, the compute environment generator 140 can generate twenty compute environments, generating one for each member of the ten-person team corresponding to the first project and another for each member of the same ten-person team corresponding to the second project. According to another aspect, one or more compute environments can be pre-generated by the compute environment generator 140, such as to be subsequently associated with an individual user when such a user joins one or more teams defined by exemplary team definition 120. Additionally, the compute environment generator 140 can execute generation action 141 multiple times based on relevant metadata when generation action 141 is executed. For example, if the team definition enumerates five team members and only a single project definition identifies the team, the exemplary compute environment generator 140 can generate five compute environments. Continuing with such an example, if the team subsequently includes a sixth individual, the compute environment generator 140 can generate another (sixth) compute environment at that subsequent time. Alternatively or additionally, generation action 141 can be scheduled for a predetermined time. For example, if the team definition enumerates five team members and only a single project definition identifies the team, the exemplary compute environment generator 140 can delay generating the five compute environments until a subsequent specified time. If, before this time, a sixth individual joins the team, the compute environment generator 140 can continue to delay the generation of the compute environments until the scheduled time, but, at the scheduled time, all six compute environments can be generated simultaneously. According to yet another aspect, the compute environment generator 140 can determine which compute environments need to be generated, but can delay generating such compute environments pending a subsequent action, such as a user accepting an invitation.
[0024] The compute environment generator can assign limits or other similar controls for the compute resources consumed by such compute environments. To provide security and control over such compute environments, a compute environment generator, such as exemplary compute environment generator 140, can establish administrative and security policies, such as identifying individual users to whom user access to such compute environments will be granted, while also identifying an administrator, such as an exemplary department, as having administrative privileges over such environments, administrative privileges including, for example, the ability to modify the parameters or resources of such environments and other administrative controls.
[0025] According to one aspect, the generated computing environments (such as exemplary computing environments 161 and 162) can be virtual machines hosted by one or more of computing devices 151, 152, and 153. Such virtual machines can present virtualized computing environments that are ultimately supported by the hardware and software of a host computing device (such as exemplary computing devices 151, 152, and 153) via a hypervisor and other similar mechanisms. According to one aspect, computing devices 151, 152, and 153 can be data center-based server computing devices that can provide redundant and parallelized hardware and software for hosting remotely accessible computing services such as cloud computing services. Such services can include hosting virtual machines or other similar computing environments. Users of such hosted services (such as exemplary users 170 and 180) can have accounts or other similar constructs, and their ability to access the hosted service and utilize its hardware and software is controlled by the account or other similar construct. Generally, such accounts take the form of subscriptions that enumerate the temporal, computational, and other similar limitations on the user's access to the hardware and software of the hosted service. As used herein, the term "sandbox" refers to a subscription or other similar enumeration of the temporal, computational, or other similar capabilities provided to a user for utilizing a computing-based hosted service, or a limitation on a user's utilization of a computing-based hosted service. As will be described in detail below, although the precise hierarchy of sandboxes and computing environments that are hosted by a host service and are thus accessible can be orthogonal to the description herein, with reference to the generation of computing environments, such as the generation of exemplary computing environments 161 and 162 by exemplary computing environment generator 140, can include the generation of one or more sandboxes, and such computing environments can be accessed and utilized via one or more sandboxes, as hosted by the hardware and software of the hosted service (such as the hardware graphically represented by computing devices 151, 152, and 153 as shown in Figure 1 and executed on the hardware and software of the hosted service).
[0026] In addition to generating computing environments, exemplary computing environment generator 140 can also generate digital constructs that can be linked to the computing environments to facilitate their management. For example, for each of the team definitions 120, a team can be created by computing environment generator 140, where the term "team" as used herein refers to a digital construct that is a collection of user identities, and metadata can be associated with the digital construct to link additional information to it. For example, team metadata can include an identifier for the team (e.g., a team name), as well as computational resource limitations or availability applicable to the team.
[0027] In a similar manner, for each project definition in project definition 130, the compute environment generator 140 can generate projects, where the term "project" as used herein refers to a digital construct for recording metadata such as identification information, instructional materials, templates defining the attributes of the compute environment, compute resource limitations, and other similar metadata. Once the compute environment generator 140 generates one or more teams and one or more projects, the compute environment generator 140 can link a particular project to a particular team. Additionally, the compute environment generator 140 can link the generated compute environments (e.g., exemplary compute environments 161 and 162) to the project, such compute environments being generated for that project. Individual users such as exemplary individual users 170 and 180 can utilize compute devices such as exemplary compute devices 171 and 181 to access the compute environments generated by the compute environment generator 140, such as exemplary compute environments 161 and 162. More specifically, exemplary compute devices 171 and 181 can be communicatively coupled to one or more server compute devices such as exemplary server compute devices 151, 152, and 153 via a computer communication network such as exemplary network 190. As Figure 1 shown by the utilization of action 178 therein, users such as exemplary users 170 and 180 can utilize the compute environments generated by the compute environment generator 140 (such as exemplary compute environments 161 and 162) to execute projects and consume compute resources in the process.
[0028] Go to Figure 2 , where the exemplary system 200 shown illustrates exemplary links between compute environments, sandboxes, projects, and teams. Teams such as exemplary teams 210 and 220 and projects such as exemplary projects 230 and 240 can be generated based on the information received from the team and project definitions. For example, exemplary team 210 can include a wrapper that can include metadata indicating the name of the team, a roster of individuals in the form of user identities, and other similar information, the roster of individuals including team 210. Similarly, exemplary project 230 can include a wrapper that can include metadata as described below and other similar metadata: the metadata indicates the name of the project, guidance, or other similar resources applicable to initiating, executing, or completing the project, compute resource limitations associated with the project, a compute environment template defining the compute environment on which the project will be executed. Additionally, project 230 can be assigned to team 210. Thus, as shown by arrow 213, a link can be established between project 230 and team 210.
[0029] Figure 2The exemplary system 200 shown illustrates multiple projects assigned to team 210, including for example project 230 and project 240. According to one example, such projects may represent homework projects, or schoolwork projects assigned to students in a class, where team 210 represents the class.
[0030] Additional links may be formed between individual computing environments and their corresponding projects. For example, project 230 may have been specified and may have included a computing environment definition template as part of metadata 231. As previously described, such a template may include an identification of the amount, type, speed of processors, and other similar defining attributes that will be emulated or represented within such a computing environment. As previously also noted, such a template may include an identification of the amount of memory, storage capacity, and other similar computing environment attributes. Additionally, such a template may include an identification of the type of computer software, such as an operating system and applications to be installed on the computing environment. Multiple computing environments (such as exemplary computing environments 251 and 252) may be created based on the computing environment definition template, which may be one of the templates enumerated in metadata 231. According to one aspect, one computing environment may be generated for each individual enumerated in the roster of team 210, to which project 230 is linked, such that a computing environment is generated for project 230. In a similar manner, computing environments 261 and 262 may be generated.
[0031] The generated computing environments (such as exemplary computing environments 251, 252, 261, and 262) may take the form of virtual machines hosted by a service that provides the hardware and software to support the hosting of such virtual machines. In such a case, the generation of individual computing environments (e.g., the generation of individual virtual machine images) and subsequent loading of such virtual machine images using virtualization software may be part of the aforementioned generation of the computing environment, the virtualization software including a hypervisor or other similar virtualization software. Another part may be the generation of a sandbox (e.g., a subscription, account, or other similar construct) within the context of the hosting service itself, which may provide the mechanism through which a user can access and utilize the computing environment. For example, such a sandbox may provide a mechanism through which access to the service can be restricted or tracked. Thus, the generation of a computing environment may require the generation of a sandbox within which to access the computing environment.
[0032] A sandbox (e.g., exemplary sandbox 271) may also be generated based on a template such as a sandbox template, which may be one of the templates in metadata 231 associated with project 230. The sandbox template may specify aspects of the sandbox, such as the type of account or subscription, pre-established restrictions or granted capabilities imposed on such an account or subscription, and other similar definitional or attributive aspects.
[0033] Once generated, security and administrative boundaries can be established for the computing environment and the sandbox containing such a computing environment. For example, the computing environment 251 can be accessed by a user such as the exemplary user 170 through a sandbox such as the exemplary sandbox 271, and the sandbox can represent the security and administrative boundary that enables the computing environment to be accessed by the user 170 but not, for example, by the user 180. In other words, the computing environment 251 and the sandbox 271 can be associated with a specific user (e.g., the exemplary user 170) such that the user 170 can access the sandbox 271 and utilize the computing environment 251 to exclude other users (e.g., the exemplary user 180). In a similar manner, the computing environment 261 corresponding to a different project can also be accessed by the user 170 but not by the user 180. Conversely, the computing environments 252 and 262 can be accessed by the user 180 to exclude the user 170.
[0034] According to one aspect, such a plurality of computing environments can be presented to the user through an appropriate graphical user interface (e.g., an account or subscription graphical user interface that can graphically represent all computing environments available to a given user). Such a graphical user interface can additionally present information from teams or projects linked to the user's sandbox. For example, when the user 170 accesses the sandbox 271, a graphical user interface can be provided that not only shows the mechanism by which the user 170 can access the computing environment 251 but also shows information about the project 230, such as the project name, project guidance, manuals, notes, and other similar informational materials, as well as other aspects that can be part of the metadata 231 of the project 230. Additionally, the user 170 can be similarly provided with information obtained from the metadata 211 associated with the team 210 (e.g., such as the team name).
[0035] As previously described, the sandbox can be in the form of an account or a subscription. Thus, each individual user can be uniquely associated with only a single sandbox, and can access multiple different computing environments from within that single sandbox. For example, both sandboxes 271 and 281 can be the single sandbox associated with exemplary user 170, and in a similar manner, sandboxes 272 and 282 can both be the single sandbox associated with exemplary user 180. In such an embodiment, a user such as exemplary user 170 can be presented with multiple different computing environments that the user can be permitted to access when accessing their sandbox, such as via the graphical user interface described above. For example, exemplary user 170 can be presented with computing environment 251 and computing environment 261. As previously described, the graphical user interface can further indicate that computing environment 251 is associated with project 230, including, for example, providing the project name or other similar identifier, and can similarly indicate that computing environment 261 is associated with project 240, where both computing environment 261 and project 240 may have been assigned to user 170 when a portion of the user is a member of team 210 (such as, for example, user 170 is part of an educational class whose students are enumerated as team 210). In a similar manner, user 180 can be presented with a graphical user interface that allows user 180 to select computing environment 252, computing environment 262, and any other computing environments within that single sandbox when accessing the single sandbox that is again the combination of sandboxes 272 and 282 shown separately.
[0036] To facilitate the management and operation of the computing environments, each of computing environments 251, 252, 261, and 262, and the sandboxes (e.g., exemplary sandboxes 271, 272, 281, and 282) within which such computing environments are accessed in their context, can also be associated with administrative privileges that can be granted to one or more users. In Figure 2 the specific example illustrated by system 200, administrator 110 is shown as having such administrative access granted. As previously indicated, administrator 110 can be a class professor who is assigning projects to individual students in a class. Administrator 110 can also be provided with a monitoring dashboard or other similar user interface through which administrator 110 can be presented with the current status when invitations are accepted, for example, by users 170 and 180, the creation of various sandboxes, and the creation of various computing environments. Such a user interface can provide details regarding the creation of individual sandboxes and computing environments, as well as aggregated information as described below.
[0037] According to one aspect, the consumption of computing resources can be accounted for at the individual computing environment or sandbox level. Thus, the computing resources assigned to a team or project can be spread across the various computing environments being created that are contained within a team container or project container. For example, computing resource limits or availability can be evenly spread across all computing environments to which such limits or availability apply. For example, the computing resource limits enumerated in metadata 231 and applicable to project 230 can be replicated across computing environments 251 and 252. However, according to one aspect, such default projects can be manually changed, such as by an administrator (such as exemplary administrator 110), when generating computing environments (such as exemplary computing environments 251 and 252) or at a subsequent time.
[0038] The allocation of computing resources and subsequent monitoring of their consumption or utilization can be performed in a hierarchical manner. Thus, for example, computing resources can be allocated to team 210 and enumerated in metadata 211 associated with team 210. A portion of such computing resources can then also be allocated to each of projects 230 and 240, and any other projects assigned to team 210. Such portions can be equal portions, for example, by each of projects 230 and 240 being assigned half of the computing resources assigned to team 210. Alternatively, such portions can be dissimilar. Additionally, for example, at the team level, some amount of computing resources can be reserved for future projects or for future allocation to existing projects (such as exemplary projects 230 and 240). Continuing with the hierarchical example, the portions of computing resources assigned to each project from the team level can then be further spread across the computing environments linked to such projects. Thus, the portion of computing resources assigned to project 230 from team 210 can be further spread across computing environments 251 and 252, for example, in the manner described above. The mechanism of decentralized computing resources at any level can be equivalently applied to any other level.
[0039] According to another aspect, the allocation of computing resources can be performed at the per-user or per-sandbox level, in which case, as will be described in detail below with reference to Figure 3 as long as additional users are allowed to join one or more teams, the aggregate amount of computing resources can be unrestricted.
[0040] Computing resource limits can also include an enumeration of one or more permitted or restricted services. For example, computing environments 251 and 252 can be restricted to prevent the execution of specific enumerated software packages. Conversely or additionally, computing environments 251 and 252 can be restricted to only allow the execution of specific enumerated services, or can be explicitly allowed access to specific services regardless of other restrictions.
[0041] Suitably, monitoring of such consumption of computing resources can then also be aggregated at the project and team levels. For example, the computing resources consumed by users 170 and 180 using computing environments 251 and 252 respectively can be aggregated and compared with the computing resource limits enumerated in metadata 231 associated with project 230. In a similar manner, if computing resource limits or availability are enumerated on a team-wide basis, the computing resource consumption of individual computing environments can be aggregated at the project level and then such aggregations can be further aggregated at the team level.
[0042] Go to Figure 3 , where the illustrated exemplary system 300 depicts an exemplary expansion of an existing team (e.g., exemplary team 310) with new users (e.g., exemplary user 372). More specifically, an administrator such as exemplary administrator 110 may have provided one or more team definitions and one or more project definitions, which can result in the creation of one or more team containers (e.g., exemplary team 310) and one or more project containers (e.g., exemplary project 330). For example, exemplary administrator 110 could be a presenter at a conference. Thus, although exemplary administrator 110 is able to establish a template for the computing environments to be used by the attendees of their conference, exemplary administrator 110 may not know exactly how many attendees will be present. For example, the conference may not require attendees to pre-register or may allow attendees to move freely between presentations. In such a case, the administrator can provide a team definition that does not include a roster or only includes the roster of those who have pre-registered in advance. Subsequently joined individuals can then be dynamically added to the roster and, at a different time than when sandboxes and computing environments are generated for other users, appropriate sandboxes and computing environments can be generated for them.
[0043] For example, in the case of Figure 3In the example shown by system 300, in the manner described above, sandboxes 341 and 342 for users 170 and 371 may have been created. Additionally, computing environments such as exemplary computing environments 351 and 352 may have been generated and, in a manner also detailed previously, be accessible within sandboxes 341 and 342, respectively, for example, based on a template associated with project 330 or other similar metadata. As part of the creation of team 310, an administrator such as exemplary administrator 110 may be provided with an identifier such as exemplary identifier 360, which may be generated by the system and may uniquely identify team 310 and otherwise enable the process to update the metadata of team 310, such as updating the roster of team 310 to include new members. More specifically, administrator 110 may share identifier 360 with other users who may be interested in joining team 310. For example, administrator 110 may provide identifier 360 to all attendees of a meeting so that those attendees can join the presentation that administrator 110 is giving at that meeting.
[0044] As Figure 3 shown in exemplary system 300, a user such as exemplary user 372 may receive identifier 360, for example, through a decentralized action 381 triggered by administrator 110. Such an identifier may then be provided to computer-executable instructions that can utilize the identifier to add the user (e.g., exemplary user 372) to a team (e.g., exemplary team 310). For example, exemplary user 372 may provide identifier 360 to a web page that can act as a front end for a process that can accept such an identifier and then utilize it to add user 372 to the roster of team 310.
[0045] As shown by actions 382 and 383, once the metadata of team 310 is modified to include an updated roster, subsequent processing may generate a new sandbox and / or a new computing environment to account for the change in the metadata of team 310. For example, once action 382 updates the metadata of the team at 310 to include user 372 in the roster, a creation action 383 may be triggered to create a sandbox 343 that may be associated with user 372, and a computing environment 353 may be generated via sandbox 343 and made available to user 372, where computing environment 353 conforms to the template and other similar information that may be part of the metadata of project 330. In this example, project 330 may represent a presentation that a presenter in the form of administrator 110 is giving at a meeting.
[0046] As described above, as shown in action 382, the create action 383 need not be triggered by a modification of the metadata of team 310 (such as by adding user 372 to the roster of team 310). For example, as opposed to being triggered by a modification of the metadata of team 310, the create action 383 can be scheduled or triggered based on the current time matching a predetermined time. In such an example, any user added to the roster of team 310 since the last execution of the create action 383 can have a sandbox and / or computing environment created for them upon a subsequent execution of the create action 383. For example, administrator 110 can trigger the creation of sandboxes 341 and 342 and computing environments 351 and 352 for users who pre-register for an administrator meeting presentation. Administrator 110 can then further specify that any other users seeking to attend the presentation must attend no later than ten minutes before the start of the presentation. Ten minutes before the start of the presentation, the create action 383 can identify any additional users who have been added to the roster of team 310 since the time the initial sandboxes 341 and 342 and initial computing environments 351 and 352 were created. Since that time, such a create action 383 can identify user 372 as having been added to the roster of team 310, and ten minutes before the start of the presentation, the create action 383 can create sandbox 343 and computing environment 353, thereby allowing user 372 access to the computing environment designed by the presenter of the presentation. Alternatively, the creation of all sandboxes and computing environments can be triggered at one or more predetermined times. More specifically, for users who pre-register for an administrator meeting presentation when the administrator provides the relevant team and project definitions, administrator 110 need not trigger the creation of sandboxes 341 and 342 and computing environments 351 and 352, but rather the creation of sandboxes 341 and 342 and computing environments 351 and 352 can be performed concurrently (i.e., for example, ten minutes before the start of the presentation) with the creation of sandbox 343 in computing environment 353. On the other hand, it may not be necessary to check for new users, and new users can be added to the system temporarily.
[0047] The creation of sandboxes and computing environments can be triggered independently of each other. For example, since the creation of a computing environment can be time-consuming, in a situation such as that shown in exemplary system 200 such as Figure 2 the creation of such a computing environment can be delayed. For example, returning Figure 2, a professor in the form of administrator 110 can provide relevant team definitions and project definitions, and the team definitions and project definitions can create team container 210 in project containers 230 and 240. Furthermore, sandboxes 341, 342, and 343 can be created, for example, in the aforementioned manner. Users such as exemplary users 170 and 180 may not be able to access those sandboxes until a later time point. For example, a professor in the form of administrator 110 can provide relevant information days, weeks, or even months before the start of a course. In addition, individual users can log in at different times, some users logging in days before the start of the course, some other users logging in at the first meeting of the course, and some other users logging in subsequently. Therefore, in order to disperse the processing load generated when creating a computing environment, according to one aspect, the creation of computing environments such as exemplary computing environments 251, 252, 261, and 262 can be delayed until a user actually logs in and seeks to utilize such a computing environment. Thus, for example, if user 170 logs in the evening before the start of the course, exemplary computing environments 251 and 261 can be generated at that time, while the generation of computing environments 252 and 262 can be delayed until a subsequent time when user 180 logs in, such as only a few minutes before the start of the course or even after the course has started. In this way, the creation of computing environments can be time-shifted in a dispersed manner across time, thereby reducing the processing load at any given time point.
[0048] As another example, in the case shown in an exemplary system 300 such as Figure 3 , the creation of a computing environment can be accelerated forward. For example, returning Figure 3, a meeting presenter in the form of administrator 110 may not be sure how many users will attend their presentation. However, the meeting presenter can expect, for example, that twenty users will attend the presentation. Thus, for example, in addition to waiting for users to join, administrator 110 can trigger the creation of a holding sandbox, which can be associated with any particular user rather than administrator 110 itself. Such a holding sandbox may then have created twenty computing environments therein, such as computing environments that conform to a template for other similar metadata for project 330. As individual users are added to the roster of team 310, for example, by add action 382, new sandboxes for these users can be created again when the user is added to the roster or at a predetermined time. Once such a new sandbox is created, the computing environments from the holding sandbox can be reassigned to the newly created sandbox, thus shifting the processing load of creating such computing environments to the past and allowing users to access such computing environments more quickly after being added to the roster. Thus, for example, computing environment 353 may have been created beforehand and may have been assigned to the holding sandbox. When creating sandbox 343, as shown by create action 383, computing environment 353 can simply be reassigned from the holding sandbox to sandbox 343, which is much faster and more efficient than creating a brand-new computing environment within sandbox 343.
[0049] As previously indicated, to facilitate the management and operation of computing environments, each of computing environments 351, 352, and 353, as well as the sandboxes within which such computing environments are accessed in their context (e.g., exemplary sandboxes 341, 342, and 343) can also be associated with administrative privileges that can be granted to one or more users. In Figure 3 the specific example illustrated by system 300 of
[0050] Turning to Figure 4, where the flowchart 400 shown illustrates an exemplary series of steps by which a computing environment can be created at scale. Initially, at step 410, team definitions and project definitions can be received. As previously described, such definitions can include a team roster, a project computing resource template, and other similar information detailed above. Subsequently, at steps 415 and 420, teams and projects can be generated from the definitions received at step 410, and metadata including the information enumerated in such definitions can be wrapped around such teams and projects. At step 425, links can be established between projects corresponding to the teams assigned such projects.
[0051] At step 430, one or more sandboxes can be created for users listed in the team roster or identified by the team or project metadata received at steps 415 and 420, respectively. As previously described, step 430 can be triggered by various events (e.g., user acceptance, specific time, etc.). At step 435, one or more computing environments can be generated within the sandboxes created at step 430 in the manner described above. As previously described, the creation of virtual machines, for example, can be a time-consuming process, so aspects of step 435 can be performed in parallel or in an interleaved manner. Regarding the latter, according to one aspect, as described above, the creation of a virtual machine image can be triggered by a user attempting to log in to their account or otherwise access the sandbox associated with that user. In such a case, once the on-demand creation of the computing environment is complete, the user will be able to access the computing environment within the context of the sandbox. As described above, for example, in an example where the computing environment is generated and held in a holding sandbox until assigned to one or more sandboxes created at step 430, aspects of step 435 can be moved to before step 430.
[0052] Once the sandbox and the computing environment are created, the process can proceed to step 440, and computing resource limits or availability can be established for each individual sandbox and computing environment created at step 350. As previously described, step 440 can cause an initial dispersion, such as an equal dispersion across each computing environment associated with a project, where such computing resource availability or limits are defined at the project level, or an equal dispersion across each computing environment associated with a team, where such computing resource availability or limits are defined at the team level. Step 440 can also cause each sandbox to be built using a predetermined amount of computing resources. For example, in a meeting setting, each attendee can have a predetermined amount of computing resources regardless of how many other attendees join the presentation. However, as part of step 440, the default dispersion can be modified, for example, by an administrator either pre - modification or post - modification. In the case of pre - modification, such a modification can be applied at step 440. In the case of post - modification, such a modification will not be part of the initial execution of the steps of the exemplary flowchart 400.
[0053] Subsequently, at step 445, administrative and security boundaries can be generated for each sandbox and computing environment generated at steps 430 and 435. Such boundaries can include defining individual users who will have user access to such a computing environment within the context of such a sandbox, and defining administrative access rights to such a computing environment. As previously described, a user with access rights to multiple computing environments can be presented with such multiple computing environments via an account graphical user interface or other similar unified access mechanism. At step 450, a link can be created between an individual computing environment and a project sandbox corresponding to a project, such a computing environment being created for that project.
[0054] As described above, the metadata of a team and / or a project can be modified, the modification including adding a new user to the team's roster or removing an existing user from the team's roster. If such a change occurs, then at step 455, the process can trigger the execution of step 460, at which point the metadata of the team is modified to accommodate the new user or remove the existing user. The process can then return to step 430, where a sandbox can be created for the new user or the sandbox for the removed user can be deleted. Then the remaining steps 435 to 450 can be executed again. As previously described, step 455 can be triggered, for example, when a new user is detected to be added to a team, as step 455 can be executed according to a predetermined schedule or at a predetermined time (e.g., ten minutes before the start of a presentation). If no change is made to the metadata of the team or the project (such as determined at step 455), then the relevant process can end at step 465.
[0055] Go toFigure 5 , an exemplary computing device 500 that can perform some or all of the above mechanisms and actions is illustrated. The exemplary computing device 500 may include, but is not limited to, one or more central processing units (CPUs) 520, a system memory 530, and a system bus 521 that couples various system components including the system memory to the processing unit 520. The system bus 521 can be any of several types of bus structures, including a memory bus or memory controller using any of a variety of bus architectures, a peripheral bus, and a local bus. The computing device 500 may optionally include graphics hardware, which includes, but is not limited to, a graphics hardware interface 560 and a display device 561, and the display device 561 may include a display device capable of receiving touch-based user input (e.g., a touch-sensitive or multi-touch display device). Depending on the particular physical implementation, one or more of the CPU 520, the system memory 530, and other components of the computing device 500 may be physically located in the same place (e.g., on a single chip). In such a case, some or all of the system bus 521 may be merely a silicon path within a single chip structure, and its illustration in Figure 5 is for illustrative convenience only.
[0056] The computing device 500 generally also includes a computer-readable medium, which can include any available medium that the computing device 500 can access, and includes volatile and non-volatile media, as well as removable and non-removable media. By way of example and not limitation, the computer-readable medium may include computer storage media and communication media. Computer storage media includes media implemented in any method or technology for storing content such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technologies, CD-ROM, digital versatile disks (DVDs) or other optical disk storage devices, magnetic tape cartridges, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired content and is accessible by the computing device 500. However, computer storage media does not include communication media. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transmission mechanism, and includes any content delivery medium. By way of example and not limitation, communication media includes wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Any combination of the above should also be included within the scope of the computer-readable medium.
[0057] System memory 530 includes computer storage media in the form of volatile and / or non-volatile memory, e.g., read only memory (ROM) 531 and random access memory (RAM) 532. The basic input / output system 533 (BIOS) contains basic routines that help to transfer content between elements within computing device 500, such as during start-up. The basic input / output system 533 is typically stored in ROM 531. RAM 532 typically contains data and / or program modules that are immediately accessible and / or presently being operated on by processing unit 520. By way of example, and not limitation, Figure 5 illustrates operating system 534, other program modules 535, and program data 536.
[0058] Computing device 500 may also include other removable / non-removable, volatile / non-volatile computer storage media. By way of example only, Figure 5 illustrates hard disk drive 541 that reads from or writes to non-removable, non-volatile magnetic media. Other removable / non-removable, volatile / non-volatile computer storage media that may be used with the exemplary computing device include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tapes, solid state RAM, solid state ROM, and other computer storage media as defined and described above. Hard disk drive 541 is typically connected to system bus 521 through a non-volatile memory interface such as interface 540.
[0059] The drives and their associated computer storage media discussed above and illustrated in Figure 5 provide storage of computer readable instructions, data structures, program modules, and other data for computing device 500. In Figure 5 , for example, hard disk drive 541 is illustrated as storing operating system 544, other program modules 545, and program data 546. Note that these components may be the same as or different from operating system 534, other program modules 535, and program data 536. Operating system 544, other program modules 545, and program data 546 are given different reference numerals to illustrate that they are at least different copies.
[0060] The computing device 500 may operate in a networked environment using a logical connection to one or more remote computers. The computing device 500 is illustrated as being connected to a general network connection 551 (to network 190) via a network interface or adapter 550, which in turn is connected to the system bus 521. In a networked environment, program modules depicted relative to the computing device 500 or portions thereof or peripherals may be stored in the memory of one or more other computing devices that are communicatively coupled to the computing device 500 via the general network connection 551. It will be understood that the network connections shown are exemplary and that other means of establishing a communication link between computing devices may be used.
[0061] Although a single physical device is described, the exemplary computing device 500 may be a virtual computing device, in which case the functionality of the above-described physical components (e.g., CPU 520, system memory 530, network interface 540, and other similar components) may be provided by computer-executable instructions. Such computer-executable instructions may be executed on a single physical computing device or may be distributed across multiple physical computing devices, including being distributed dynamically across multiple physical computing devices such that the particular physical computing device hosting such computer-executable instructions may vary dynamically over time depending on need and availability. In the case where the exemplary computing device 500 is a virtualized device, the underlying physical computing device hosting such a virtualized computing device itself may include physical components similar to and operating in a similar manner to those described above. Additionally, virtual computing devices may be utilized in multiple layers, where one virtual computing device executes within the construct of another virtual computing device. As used herein, the term "computing device" thus refers to a physical computing device or a virtualized computing environment that includes virtual computing devices within which computer-executable instructions may be executed in a manner consistent with the way physical computing devices execute them. Similarly, as used herein, the term referring to the physical components of a computing device refers to those physical components or their virtualizations that perform the same or equivalent functions.
[0062] As a first example, the above description includes a method for generating a set of multiple virtual computing environments and allocating computing resources among the set of multiple virtual computing environments, the method including: generating a first set of multiple virtual computing environments, where each virtual computing environment includes an emulation of computing hardware specified by a first template; providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments to each member of the team enumerated by the team roster; providing administrator access to each virtual computing environment in the first set of multiple virtual computing environments to a first administrator; linking each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with first project metadata including the first template; linking the first project to a team associated with team metadata including the team roster; allocating an initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, where the emulation calculations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment; after the generation of the first set of multiple virtual computing environments, determining that one or more newly added members have been added to the team roster; providing user access to a unique virtual computing environment to each of the one or more newly added members; and allocating an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0063] A second example is the method according to the first example, further including: after the determining, generating a second set of multiple virtual computing environments, where each virtual computing environment includes an emulation of computing hardware specified by the first template; where the unique virtual computing environment provided to each of the one or more newly added members is from the second set of multiple virtual computing environments.
[0064] A third example is the method according to the first example, where the unique virtual computing environment provided to each of the one or more newly added members is from the first set of multiple virtual computing environments.
[0065] A fourth example is the method according to the first example, where generating the first set of multiple virtual computing environments and providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments includes: generating each virtual computing environment in the first set of multiple virtual computing environments within a unique sandbox assigned to each member of the team enumerated by the team roster.
[0066] A fifth example is the method according to the first example, wherein generating a first set of multiple virtual computing environments includes: generating a first set of multiple virtual computing environments within a holding sandbox assigned to a first administrator; and wherein providing user access to a unique virtual computing environment within the first set of multiple virtual computing environments further includes: re-associating an individual virtual computing environment within the first set of multiple virtual computing environments from the holding sandbox to a unique sandbox assigned to each member of a team enumerated by a team roster.
[0067] A sixth example is the method according to the fifth example, wherein providing user access to a unique virtual computing environment to each of one or more newly added members further includes: re-associating other individual virtual computing environments within the first set of multiple virtual computing environments from the holding sandbox to a unique sandbox assigned to each of the one or more newly added members.
[0068] A seventh example is the method according to the first example, further including: receiving a unique identifier from a new user; and modifying team metadata to update the team roster to now include the new user, the modification being triggered by receiving the unique identifier from the new user.
[0069] An eighth example is the method according to the first example, further including: for each virtual computing environment within the first set of multiple virtual computing environments, monitoring the consumption of a first initial allocation of computing resources; and generating a notification to the first administrator if the monitored consumption of the first initial allocation of computing resources is above a threshold.
[0070] A ninth example is the method according to the first example, further including: preventing a first virtual computing environment from performing further simulation calculations if the first virtual computing environment within the first set of multiple virtual computing environments has consumed all of the computing resources previously allocated to the first virtual computing environment.
[0071] A tenth example is the method according to the first example, further including: preventing a first virtual computing environment from performing further simulation calculations if the first virtual computing environment within the first set of multiple virtual computing environments is consuming the computing resources previously allocated to the first virtual computing environment at a rate faster than a threshold rate, even if all of the computing resources previously allocated to the first virtual computing environment have not been consumed.
[0072] An eleventh example is the method according to the first example, further including: presenting a plurality of templates to a first administrator; receiving a selection of a first template from the plurality of templates; and modifying first project metadata to include the first template based on the selection.
[0073] A twelfth example is the method according to the first example, further comprising: receiving a first resource consumption limit from a first administrator; and preventing a first virtual computing environment from performing further simulation calculations if the consumption of computing resources of the first virtual computing environment, which was previously assigned to a first set of multiple virtual computing environments, exceeds the first resource consumption limit, even if the computing resources previously assigned to the first virtual computing environment have not been fully consumed.
[0074] A thirteenth example is the method according to the first example, wherein in a first set of multiple virtual computing environments and in the virtual computing environments provided to each of one or more newly added members, the initial allocation of computing resources is the same for each virtual computing environment.
[0075] A fourteenth example is a set of aggregated computing devices, the set of computing devices including: a processing unit; and one or more computer-readable storage media including computer-executable instructions that, when executed by at least some of the processing units in the processing unit, cause at least some of the computing devices in the set of computing devices to perform the following operations: generating a first set of multiple virtual computing environments, where each virtual computing environment includes an emulation of computing hardware specified by a first template; providing user access to a unique virtual computing environment in the first set of multiple virtual computing environments to each member of the team enumerated by the team roster; providing administrator access to each virtual computing environment in the first set of multiple virtual computing environments to a first administrator; linking each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with first project metadata including the first template; linking the first project to a team associated with team metadata including the team roster; allocating an initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, where the simulation calculations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment; after generating the first set of multiple virtual computing environments, determining that one or more newly added members have been added to the team roster; providing user access to a unique virtual computing environment to each of the one or more newly added members; and allocating an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0076] The fifteenth example is the set of computing devices according to the fourteenth example, wherein one or more computer-readable storage media include additional computer-executable instructions that, when executed by at least some of the processing units in the processing unit, cause at least some of the computing devices in the set of computing devices to further perform the following operations: after determination, generate a second set of multiple virtual computing environments, wherein each virtual computing environment includes an emulation of computing hardware specified by a first template; wherein the unique virtual computing environment provided to each of one or more newly added members is from the second set of multiple virtual computing environments.
[0077] The sixteenth example is the set of computing devices according to the fourteenth example, wherein the unique virtual computing environment provided to each of one or more newly added members is from the first set of multiple virtual computing environments.
[0078] The seventeenth example is the set of computing devices according to the fourteenth example, wherein the computer-executable instructions that cause the generation of the first set of multiple virtual computing environments and provide user access to the unique virtual computing environment in the first set of multiple virtual computing environments include the following computer-executable instructions: when executed by at least some of the processing units in the processing unit, cause at least some of the computing devices in the set of computing devices to: generate each virtual computing environment in the first set of multiple virtual computing environments within a unique sandbox assigned to each member of the teams enumerated by the team roster.
[0079] The eighteenth example is the set of computing devices according to the fourteenth example, wherein the computer-executable instructions that cause the generation of the first set of multiple virtual computing environments and provide user access to the unique virtual computing environment in the first set of multiple virtual computing environments include the following computer-executable instructions: when executed by at least some of the processing units in the processing unit, cause at least some of the computing devices in the set of computing devices to: generate each virtual computing environment in the first set of multiple virtual computing environments within a unique sandbox assigned to each member of the teams enumerated by the team roster.
[0080] The nineteenth example is the set of computing devices according to the fourteenth example, wherein one or more computer-readable storage media include other computer-executable instructions that, when executed by at least some of the processing units in the processing unit, cause at least some of the computing devices in the set of computing devices to further perform the following operations: receive a unique identifier from a new user; and modify the team metadata to update the team roster to now include the new user, the modification being triggered by receiving the unique identifier from the new user.
[0081] The twentieth example is one or more computer-readable storage media including computer-executable instructions that, when executed by a computing device, cause the computing device to perform the following operations: generate a first set of multiple virtual computing environments, where each virtual computing environment includes an emulation of computing hardware specified by a first template; provide user access to a unique virtual computing environment in the first set of multiple virtual computing environments to each member of a team enumerated by a team roster; provide administrator access to each virtual computing environment in the first set of multiple virtual computing environments to a first administrator; link each virtual computing environment in the first set of multiple virtual computing environments to a first project, where the first project is associated with first project metadata including the first template; link the first project to a team associated with team metadata including the team roster; allocate an initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, where the emulation calculations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment; after the generation of the first set of multiple virtual computing environments, determine that one or more newly added members have been added to the team roster; provide user access to a unique virtual computing environment to each of the one or more newly added members; and allocate an initial allocation of computing resources to each virtual computing environment provided to each of the one or more newly added members.
[0082] As can be seen from the above description, a mechanism for scalably generating and providing computing environments has been presented. Considering many possible variations of the subject matter described herein, we claim all such embodiments that fall within the scope of the appended claims and their equivalents as the invention.
Claims
1. A method for generating a set of multiple virtual computing environments and allocating computing resources among the set of multiple virtual computing environments, the method comprising: Receiving a first input, the first input including: a team definition including a team roster and a first project definition including a first template; Automatically generating a first set of multiple virtual computing environments based on the first input, the first set of multiple virtual computing environments including a unique virtual computing environment for each member enumerated by the team roster, wherein each virtual computing environment includes an emulation of computing hardware specified by the first template; Automatically providing user access to the unique virtual computing environment of the first set of multiple virtual computing environments to each member enumerated by the team roster, such that there is a one-to-one correspondence between the virtual computing environments of the first set of multiple virtual computing environments and the members of the team enumerated by the team roster; Automatically creating administrative access for a first administrator to each virtual computing environment in the first set of multiple virtual computing environments based on the first input; Automatically linking each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with the first project definition; Automatically linking the first project to the team defined by the team definition; Allocating a predetermined amount of computing resources to the team; Automatically allocating a portion of the predetermined amount of computing resources allocated to the team to the first project; and Automatically allocating a first initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, the first initial allocation of computing resources being based on the portion of the computing resources allocated to the first project and on the number of virtual computing environments in the first set of virtual computing environments; Wherein the emulation calculations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment.
2. The method according to claim 1, further comprising: Receiving a second input, the second input including: a second project definition including a second template; Automatically generating a second set of multiple virtual computing environments based on the second input, the second set of multiple virtual computing environments also including a unique virtual computing environment for each member of the team, wherein each virtual computing environment includes an emulation of computing hardware specified by the second template; Automatically providing user access to the unique virtual computing environment of the second set of multiple virtual computing environments to each member of the team, such that there is a one-to-one correspondence between the virtual computing environments of the second set of multiple virtual computing environments and the members of the team; Automatically creating administrative access for the first administrator to each virtual computing environment in the second set of multiple virtual computing environments based on the second input; Automatically linking each virtual computing environment in the second set of multiple virtual computing environments to a second project, the second project being associated with the second project definition; Automatically linking the second project to the team; Automatically allocate another portion of the predetermined amount of computing resources allocated to the team to the second project; and Automatically allocate a second initial allocation of computing resources to each virtual computing environment in the second set of multiple virtual computing environments, the second initial allocation of computing resources being based on the other portion of the computing resources allocated to the second project and on the number of virtual computing environments in the second set of virtual computing environments.
3. The method according to claim 1, further comprising: In addition to the first initial allocation of computing resources, allocate a first subsequent allocation of computing resources to each virtual computing environment in only a subset of the first set of multiple virtual computing environments; Wherein the aggregation of the first subsequent allocation of computing resources to the subset of the first set of multiple virtual computing environments is deducted from the portion of the computing resources allocated to the first project.
4. The method according to claim 1, wherein the generation of the virtual computing environments in the first set of multiple virtual computing environments is delayed until a user who has been provided with user access to the virtual computing environments first attempts to access the virtual computing environments.
5. The method according to claim 1, further comprising: For each virtual computing environment in the first set of multiple virtual computing environments, monitor the consumption of the first initial allocation of computing resources; And If the monitored consumption of the first initial allocation of computing resources is higher than a threshold, generate a notification to the first administrator.
6. The method according to claim 1, further comprising: If a first virtual computing environment in the first set of multiple virtual computing environments has consumed all of the computing resources previously allocated to the first virtual computing environment, prevent the first virtual computing environment from performing further simulation calculations.
7. The method according to claim 1, further comprising: If a first virtual computing environment in the first set of multiple virtual computing environments is consuming the computing resources previously allocated to the first virtual computing environment at a rate faster than a threshold rate, prevent the first virtual computing environment from performing further simulation calculations even if the computing resources previously allocated to the first virtual computing environment have not been fully consumed.
8. The method according to claim 1, further comprising: Present a plurality of templates to the first administrator; Receive a selection of the first template from the plurality of templates; And Modify the first project definition to include the first template based on the selection.
9. The method according to claim 1, further comprising: Receive a first resource consumption limit from the first administrator; And If the consumption of the computing resources previously allocated to a first virtual computing environment in the first set of multiple virtual computing environments exceeds the first resource consumption limit, prevent the first virtual computing environment from performing further simulation calculations even if the computing resources previously allocated to the first virtual computing environment have not been fully consumed.
10. An aggregated set of computing devices, comprising: Central processing unit CPU; and one or more computer-readable storage media including computer-executable instructions which, when executed by at least some of the processing units, cause at least some of the computing devices in the set of computing devices to: Receive a first input, the first input including: a team definition including a team roster and a first project definition including a first template; Automatically generate a first set of multiple virtual computing environments based on the first input, the first set of multiple virtual computing environments including a unique virtual computing environment for each member enumerated by the team roster, wherein each virtual computing environment includes an emulation of the computing hardware specified by the first template; Automatically provide user access to the unique virtual computing environment of the first set of multiple virtual computing environments to each member enumerated by the team roster, such that there is a one-to-one correspondence between the virtual computing environments of the first set of multiple virtual computing environments and the members of the team enumerated by the team roster; Automatically create administrative access for a first administrator to each virtual computing environment in the first set of multiple virtual computing environments based on the first input; Automatically link each virtual computing environment in the first set of multiple virtual computing environments to a first project, the first project being associated with the first project definition; Automatically link the first project to the team defined by the team definition; Allocate a predetermined amount of computing resources to the team; Automatically allocate a portion of the predetermined amount of computing resources allocated to the team to the first project; and Automatically allocate a first initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, the first initial allocation of computing resources being based on the portion of the computing resources allocated to the first project and on the number of virtual computing environments in the first set of virtual computing environments; wherein the simulation calculations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment.
11. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media include additional computer-executable instructions which, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: Receive a second input, the second input including: A second project definition including a second template; Automatically generate a second set of multiple virtual computing environments based on the second input, the second set of multiple virtual computing environments also including a unique virtual computing environment for each member of the team, wherein each virtual computing environment includes an emulation of the computing hardware specified by the second template; Automatically provide user access to the unique virtual computing environment of the second set of multiple virtual computing environments to each member of the team, such that there is a one-to-one correspondence between the virtual computing environments of the second set of multiple virtual computing environments and the members of the team; Automatically create administrator access for the first administrator to each virtual computing environment in the second set of multiple virtual computing environments based on the second input; Automatically link each virtual computing environment in the second set of multiple virtual computing environments to a second project, where the second project is associated with the second project definition; Automatically link the second project to the team; Automatically allocate another portion of the predetermined amount of computing resources allocated to the team to the second project; And Automatically allocate a second initial allocation of computing resources to each virtual computing environment in the second set of multiple virtual computing environments, where the second initial allocation of computing resources is based on the other portion of the computing resources allocated to the second project and on the number of virtual computing environments in the second set of virtual computing environments.
12. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media include additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: In addition to the first initial allocation of computing resources, allocate a first subsequent allocation of computing resources to each virtual computing environment in only a subset of the first set of multiple virtual computing environments; Where the aggregation of the first subsequent allocation of computing resources to the subset of the first set of multiple virtual computing environments is deducted from the portion of the computing resources allocated to the first project.
13. The set of computing devices according to claim 10, wherein the generation of the virtual computing environments in the first set of multiple virtual computing environments is delayed until a user who has been provided with user access to the virtual computing environment first attempts to access the virtual computing environment.
14. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media include additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: For each virtual computing environment in the first set of multiple virtual computing environments, monitor the consumption of the first initial allocation of computing resources; and If the monitored consumption of the first initial allocation of computing resources is higher than a threshold, generate a notification to the first administrator.
15. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media include additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: If a first virtual computing environment in the first set of multiple virtual computing environments has consumed all of the computing resources previously allocated to the first virtual computing environment, prevent the first virtual computing environment from performing further simulation calculations.
16. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media comprise additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: If a first virtual computing environment in the first set of multiple virtual computing environments is consuming computing resources previously allocated to the first virtual computing environment at a rate faster than a threshold rate, prevent the first virtual computing environment from performing further simulation computations even if not all of the computing resources previously allocated to the first virtual computing environment have been consumed.
17. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media comprise additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to further perform as follows: Present a plurality of templates to the first administrator; Receive a selection of the first template from the plurality of templates; and Modify the first project definition to include the first template based on the selection.
18. The set of computing devices according to claim 10, wherein the one or more computer-readable storage media comprise additional computer-executable instructions that, when executed by at least some of the CPUs, cause at least some of the computing devices in the set of computing devices to perform as follows: Receive a first resource consumption limit from the first administrator; and If a first virtual computing environment in the first set of multiple virtual computing environments consumes more computing resources than the first resource consumption limit for the computing resources previously allocated to the first virtual computing environment, prevent the first virtual computing environment from performing further simulation computations even if not all of the computing resources previously allocated to the first virtual computing environment have been consumed.
19. One or more computer storage media comprising computer-executable instructions that, when executed by a computing device, cause the computing device to: Receive a first input, the first input including: Include a team definition that includes a team roster and a first project definition that includes a first template; Automatically generate a first set of multiple virtual computing environments based on the first input, the first set of multiple virtual computing environments including a unique virtual computing environment for each member enumerated by the team roster, wherein each virtual computing environment includes a simulation of computing hardware specified by the first template; Automatically provide user access to the unique virtual computing environment of the first set of multiple virtual computing environments to each member enumerated by the team roster, such that there is a one-to-one correspondence between the virtual computing environments in the first set of multiple virtual computing environments and the members of the team enumerated by the team roster; Automatically create administrative access for a first administrator to each virtual computing environment in the first set of multiple virtual computing environments based on the first input; Automatically link each virtual computing environment in the first set of multiple virtual computing environments to a first project, where the first project is associated with the first project definition; Automatically link the first project to a team defined by the team definition; Allocate a predetermined amount of computing resources to the team; Automatically allocate to the first project a portion of the predetermined amount of computing resources allocated to the team; And Automatically allocate a first initial allocation of computing resources to each virtual computing environment in the first set of multiple virtual computing environments, where the first initial allocation of computing resources is based on the portion of the computing resources allocated to the first project and on the number of virtual computing environments in the first set of virtual computing environments; Wherein simulation computations performed by the virtual computing environment consume the computing resources allocated to the virtual computing environment.
20. The computer storage medium according to claim 19, comprising additional computer-executable instructions that, when executed by the computing device, cause the computing device to further perform as follows: Receive a second input, the second input including: A second project definition including a second template; Automatically generate a second set of multiple virtual computing environments based on the second input, where the second set of multiple virtual computing environments also includes a unique virtual computing environment for each member of the team, and wherein each virtual computing environment includes a simulation of the computing hardware specified by the second template; Automatically provide each member of the team with user access to the unique virtual computing environment in the second set of multiple virtual computing environments, such that there is a one-to-one correspondence between the virtual computing environments in the second set of multiple virtual computing environments and the members of the team; Automatically create, based on the second input, an administrator access for the first administrator to each virtual computing environment in the second set of multiple virtual computing environments; Automatically link each virtual computing environment in the second set of multiple virtual computing environments to a second project, where the second project is associated with the second project definition; Automatically link the second project to the team; Automatically allocate to the second project another portion of the predetermined amount of computing resources allocated to the team; And Automatically allocate a second initial allocation of computing resources to each virtual computing environment in the second set of multiple virtual computing environments, where the second initial allocation of computing resources is based on the another portion of the computing resources allocated to the second project and on the number of virtual computing environments in the second set of virtual computing environments.