US20190188185A1 - Defining Software Infrastructure Using a Picture - Google Patents
Defining Software Infrastructure Using a Picture Download PDFInfo
- Publication number
 - US20190188185A1 US20190188185A1 US16/285,082 US201916285082A US2019188185A1 US 20190188185 A1 US20190188185 A1 US 20190188185A1 US 201916285082 A US201916285082 A US 201916285082A US 2019188185 A1 US2019188185 A1 US 2019188185A1
 - Authority
 - US
 - United States
 - Prior art keywords
 - resources
 - service provider
 - provider network
 - image
 - computer
 - Prior art date
 - Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
 - Abandoned
 
Links
Images
Classifications
- 
        
- G—PHYSICS
 - G06—COMPUTING OR CALCULATING; COUNTING
 - G06F—ELECTRIC DIGITAL DATA PROCESSING
 - G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
 - G06F16/10—File systems; File servers
 - G06F16/18—File system types
 - G06F16/182—Distributed file systems
 - G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
 - G06F16/1827—Management specifically adapted to NAS
 
 - 
        
- G—PHYSICS
 - G06—COMPUTING OR CALCULATING; COUNTING
 - G06F—ELECTRIC DIGITAL DATA PROCESSING
 - G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
 - G06F16/10—File systems; File servers
 - G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
 - G06F16/168—Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
 
 - 
        
- G—PHYSICS
 - G06—COMPUTING OR CALCULATING; COUNTING
 - G06F—ELECTRIC DIGITAL DATA PROCESSING
 - G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
 - G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
 - G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
 - G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
 - G06F3/04842—Selection of displayed objects or displayed text elements
 
 - 
        
- H—ELECTRICITY
 - H04—ELECTRIC COMMUNICATION TECHNIQUE
 - H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 - H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
 - H04N1/0035—User-machine interface; Control console
 - H04N1/00352—Input means
 - H04N1/00381—Input by recognition or interpretation of visible user gestures
 
 - 
        
- H—ELECTRICITY
 - H04—ELECTRIC COMMUNICATION TECHNIQUE
 - H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 - H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
 - H04N2201/0008—Connection or combination of a still picture apparatus with another apparatus
 - H04N2201/0034—Details of the connection, e.g. connector, interface
 - H04N2201/0037—Topological details of the connection
 - H04N2201/0039—Connection via a network
 
 
Definitions
- Some network-based computing service providers allow customers to purchase and utilize computing resources, such as virtual machine instances, on a permanent or as-needed basis.
 - computing service providers typically allow customers to purchase and utilize other types of computing resources.
 - customers might be permitted to purchase access to and use of file and block data storage resources, database resources, networking resources, and other types of computing resources.
 - customers of such a network-based computing service can create custom solutions that provide various types of functionality, such as application hosting, backup and storage, content delivery, World Wide Web (“Web”) hosting, enterprise information technology (“IT”) solutions, database services, and others.
 - FIG. 1 is a block diagram depicting an illustrative operating environment in which a picture may be used to define an infrastructure of an application that may be provisioned in a network;
 - FIG. 2 is a block diagram depicting an illustrative operating environment in which a picture of an infrastructure is used to generate a deployment template
 - FIG. 3 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for using a picture to generate configuration data that defines an infrastructure that may be deployed in a service provider network;
 - FIG. 4 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for receiving a picture of an infrastructure and using the picture to provision resources of the service provider network;
 - FIG. 5 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for providing a user interface that may be used to interact with configuration data that is associated with infrastructure depicted in a picture;
 - FIG. 6 is a system and network diagram that shows one illustrative operating environment for the technologies disclosed herein that includes a service provider network;
 - FIG. 7 is a computing system diagram that illustrates one configuration for a data center that implements aspects of a service provider network, including some or all of the concepts and technologies disclosed herein for using a picture to generate configuration data for an infrastructure depicted in the picture;
 - FIG. 8 is a computer architecture diagram showing one illustrative computer hardware architecture for implementing a computing device that might be utilized to implement aspects of the various technologies presented herein.
 - a user such as a customer of the service provider network, may create a drawing or a model (e.g., using blocks) to define the infrastructure of an application.
 - a drawing or a model e.g., using blocks
 - the user might create a drawing of the desired infrastructure on a piece of paper, on a whiteboard, using a computing device, or the like.
 - the user might create a model (e.g., using blocks) that defines the infrastructure.
 - the user may take a picture of the drawing or model, or may obtain a screenshot when the drawing is made using a computer.
 - the picture of the infrastructure may be provided to a configuration service that analyzes the picture to identify the specific resources depicted in the picture as well as how the resources are connected.
 - the configuration service may be part of the service provider network or associated with the service provider network.
 - the picture may be analyzed by the configuration service to associate specific drawing shapes and/or drawing attributes with resources that may be included in configuring an application that is to be deployed within a network, such as the service provider network and/or one or more other networks.
 - a server could be represented by a red square
 - a firewall may be identified as a black line
 - a load-balancer might be represented by another shape, and the like.
 - a red square may be identified that may be mapped to an actual server in the service provider network.
 - mappings between the drawn object and the associated resource in the service provider network may be provided, at least in part, by the service provider network.
 - the customer might supply custom mappings that associate drawing objects with a specified resource or type of resource available from the service provider network.
 - a customer may associate tags (e.g., graphical or text) with a resource that may be used to further define the resource.
 - a tag may specify a value of a parameter that is associated with the resources (e.g., instance type, security permissions, allowed ports).
 - a parameter e.g., instance type, security permissions, allowed ports.
 - text could be written near the red square that identifies a size of the instance (e.g., “medium” to indicate a four core processor using 15 GB of memory).
 - the parameters might be set using symbols. For example, one red square near an instance resource might indicate a small instance size, whereas two red squares might indicate a medium size instance.
 - the customer may be prompted to supply parameters that may not have been determined from the infrastructure depicted in the picture.
 - the picture may also be analyzed to determine the connections between the resources. For example, the connections might be indicated by lines, or some other graphical element or association that may be determined from the picture.
 - configuration data may be generated that describes a configuration of the infrastructure of the application within the service provider network or another network as depicted in the picture.
 - the configuration data may be used to generate a deployment template.
 - the deployment template may be used by the service provider network or another network to provision the identified resources.
 - the deployment template might be used by the service provider network to provision resources in another network that is associated with the service provider network.
 - the deployment template might also be provided to the customer.
 - the deployment template may be provided to the customer for modification before the deployment template is used to provision or instantiate the infrastructure in the service provider network.
 - portions of the configuration data or the deployment template might also be included in an appropriate interface, such as a user interface (“UI”), through which a user, such as the customer, can modify the data.
 - UI user interface
 - a user might be permitted to set one or more parameters of the resources identified from the picture using the UI.
 - Other types of interfaces such as application programming interfaces (“APIs”) or command line interfaces might also be provided through which a user can modify the configuration data.
 - APIs application programming interfaces
 - command line interfaces might also be provided through which a user can modify the configuration data.
 - the UI might also provide functionality for modifying the configuration data in other ways. For example, a user might be permitted to add, delete, or modify virtual machine instances, or other types of data processing resources, file or block data storage resources, database resources, networking resources, such as load balancing resources, domain name service (“DNS”) resources, and virtual networking resources, security resources and/or other types of resources.
 - the deployment template might be shared with other users. In other examples, the user may provide a deployment template to one or more other users. Additional details regarding the various components and processes described above for using a picture to define an infrastructure of an application used in a service provider network will be presented below with regard to FIGS. 1-8 .
 - program modules include routines, programs, components, data structures and other types of structures that perform particular tasks or implement particular abstract data types.
 - FIG. 1 is a block diagram depicting an illustrative operating environment 100 in which a picture may be used to define an infrastructure of an application that may be provisioned in a network.
 - the operating environment 100 includes a customer computing device 140 , a configuration environment 124 , an execution environment 166 A and 166 B and resources 130 A and resources 130 B (which may be referred to herein as “resources 130 ”).
 - the computing devices are configured to operate in a service provider network 120 and/or in the network 121 .
 - the service provider network 120 may include a collection of rapidly provisioned and, potentially, released computing resources hosted in an execution environment 166 A or 166 B.
 - Customers of the service provider network 120 may purchase and utilize computing resources 130 , such as virtual machine instance 172 , networking resources 178 , storage resources 174 , or other types of computing resources, from a service provider on a permanent or as-needed basis.
 - the computing resources 130 A may include a number of computing, networking and storage devices in communication with one another.
 - the computing resources 130 A may correspond to physical computing devices, such as the servers 170 A- 170 N.
 - the computing resources may correspond to virtual machine instances, such as the virtual machine instances 172 , implemented by one or more physical computing devices, such as the servers 170 A- 170 N.
 - the network 121 may be similarly configured to the service provider network 120 .
 - the network 121 may have an execution environment 166 B and the resources 130 B.
 - the resources 130 B may be the same or different from the resources 130 A.
 - the network 121 may be programmatically accessed by the configuration environment 124 and/or the execution environment 166 B.
 - the configuration service 144 may configure the resources 130 B in the network 121 by sending data (e.g., commands) to one or more computing resources operating in the network 121 .
 - Each type or configuration of a computing resource may be available from the service provider that operates the service provider network 120 in different sizes.
 - a service provider might offer virtual machine instances 172 or other types of data processing resources that are available for purchase and use that have many different configurations of processor capabilities, main memory, disk storage, and operating system.
 - a service provider might also offer other types of resources 130 for purchase and use by customers.
 - a service provider might offer file or block data storage resources 174 , database resources 176 , networking resources 178 , such as load balancing resources, domain name service (“DNS”) resources, virtual networking resources, security resources 180 and/or other types of resources 182 on a permanent or as-needed basis.
 - DNS domain name service
 - the service provider operating the service provider network 120 might also charge a fee for operating the resources 130 that the customer creates and uses within the service provider network 120 .
 - the fee charged for a particular resource 130 might be based upon the type and/or configuration of the resource 130 .
 - the fee charged for a particular resource 104 might also be based upon the amount of time the resource 130 is utilized.
 - the fee for use of the resource might be charged based upon the amount of time the resource is utilized.
 - the fee might be computed based upon the amount of data stored and/or the amount of data transferred into or out of the resource.
 - the fees for other types of resources 130 might also be based upon other considerations.
 - a service provider might also utilize various purchasing models to determine the amount to charge a customer for use of resources 130 provided by the service provider.
 - the various resources 130 described above might also be provisioned and de-provisioned as needed in an automated fashion.
 - a customer might submit a request to the service provider network 120 to instantiate a new instance of a computing resource 130 , such as an instance of a virtual machine.
 - a provisioning manager 122 or one or more other components within the service provider network 120 , might create the new instance of the virtual machine as requested by the customer. The customer may then be permitted to utilize the new instance of the virtual machine as desired.
 - Other types of computing resources might be instantiated in a similar fashion.
 - the customer may request that the resource 130 be de-provisioned.
 - the provisioning manager 122 or another component in the service provider network 120 , may cause the computing resources 130 to be de-provisioned.
 - Other types of computing resources 130 might also be provisioned and de-provisioned in a similar manner.
 - the service provider network 120 might also provide functionality for automatically scaling and/or de-scaling resources 130 based upon demand for the computing resources 130 or other factors.
 - the customer of a service provider network it might be difficult for the customer of a service provider network to define the infrastructure that defines the resources 130 used by an application that executes within the service provider network 120 and/or in the network 121 , and possibly other networks (not shown).
 - a customer might be interested in creating an application that includes computing resources, such as web servers that auto-scale, a load-balancer, a firewall, and a data storage service.
 - Manually defining the infrastructure that may be used in provisioning the resources in the service provider network 120 may be time consuming and error-prone for some customers.
 - the terms “customer” and “customers” refer to existing customers of the service provider network 120 as well as visitors (i.e. potential customers) to the service provider network 120 that are authorized to execute a virtual machine instance 172 (e.g., the instances 172 A- 172 N) in the service provider network 120 .
 - the customer may provide a picture 150 of a desired infrastructure representation 148 .
 - the infrastructure representation 148 might be a drawing, or model, or some other representation of the infrastructure of an application (which may all be referred to herein as a “drawing”).
 - the user might build a model using blocks of different colors and/or shapes to represent different resources 130 .
 - the infrastructure representation 148 may include any resource 130 available from or within the service provider network 120 , within the network 121 , and possibly within other networks.
 - the infrastructure representation 148 may also include the connections, such as network connections, between the resources as well as other data that includes additional details that are associated with one or more of the resources 130 depicted in the infrastructure representation 148 .
 - the customer may take a picture 150 of the drawing or model using a camera, such as camera 164 , or may generate a screenshot of the drawing that may be analyzed and used to generate a definition of the infrastructure. In this way, the customer can be freed from the previously difficult task of manually defining the infrastructure.
 - the picture 150 of the infrastructure may be provided to a configuration service 144 that is part of, or is associated with, the service provider network 120 .
 - the configuration service 144 may receive the picture 150 from the customer computing device 140 .
 - the provisioning manager 122 may analyze the picture 150 , to identify the specific resources 130 depicted in the picture as well as how the resources are connected. For example, the provisioning manager 122 may analyze the picture 150 to recognize shapes in the picture 150 and associate the shapes with at least one of the available resources 130 available from the service provider network 120 or the network 121 .
 - mappings between the shape and the associated resource 130 are stored and defined in the mappings 116 illustrated in the data store 162 A and/or in the data store 162 B.
 - the mappings 116 might map any graphical shape, text, icon or some other type of graphical indicator to one or more resources 130 of the service provider network 120 and/or the network 121 .
 - Some example shapes are discussed below and illustrated in FIG. 2 .
 - mappings 116 are supplied by the operator of the service provider network 120 and/or the operator of the network 121 .
 - the service provider network 120 might supply the customer with graphical shapes (e.g., a set of icons) that might be placed in a drawing to represent the different resources 130 A available from the service provider network 120 .
 - the network 121 might provide a customer with graphical shapes that might be placed in a drawing to represent the different resources 130 B available from the network 121 .
 - the customer might supply all or a portion of the mappings 116 .
 - mappings 116 that modify previously defined mappings 116 (e.g., the mappings provided by the owner/operator of the service provider network 120 or the network 121 ).
 - the mappings 116 specified by the customer might also be new mappings 116 that have not been defined (e.g. new or different symbols to represent the available resources 130 ).
 - the mappings 116 might also include mappings for text, symbols, or other graphical elements that are used to specify parameters for the resources 130 . For example, one symbol might indicate that a data store may be read, whereas another symbol might indicate that a data store may be read/write.
 - the provisioning manager 122 may also analyze the picture 150 to detect additional details relating to the infrastructure. For example, a customer might associate tags (e.g., graphical or text) with a resource 130 depicted in the picture 150 that may be used to further define the resource 130 .
 - a tag may specify a value of a parameter that is associated with the resources (e.g., instance type, security permissions, allowed ports). For instance, text could be drawn near a red square in the picture 150 that identifies a size of the instance (e.g., “medium” to indicate a four core processor using 15 GB of memory, “small” to indicate a two core processor using 1.5 GB of memory). Further examples are provided below with regard to FIG. 2 .
 - the provisioning manager 122 may query the customer for parameters that might be needed before the infrastructure may be provisioned and launched within the service provider network 120 and/or in the network 121 .
 - the user interface 145 may be used to obtain the requested parameter data.
 - the user may be prompted to supply parameters that may not have been determined from the infrastructure depicted in the picture 150 .
 - the parameters that might be requested typically depend on the type of resource 130 that is depicted in the picture 150 . For example, when the resource is a security group, the parameters generally relate to security settings. When the resource is a virtual machine instance, the parameters may relate to the type of the virtual machine instance.
 - the provisioning manager 122 may also analyze the picture 150 to determine the network connections (“connections”) between the resources. For example, the connections might be indicated in the picture 150 by lines, or some other graphical element or association that may be determined from the picture 150 . In some configurations, the connections may go between different networks. For example, a connection in the picture might connect one or more resources 130 A provided by the service provider network 120 with one or more resources 130 B provided by the network 121 . After identifying the resources 130 and the connections between the resources in the picture 150 , the provisioning manager 122 may generate configuration data 114 that describes a configuration of the infrastructure of the application within the service provider network 120 and/or other networks. FIG. 2 illustrates an example of an infrastructure depicted in the picture 150 .
 - the configuration data 114 may be used by the provisioning manager 122 , the deployment component 126 , or some other computing device, to generate a deployment template 125 .
 - the deployment template 125 might be implemented utilizing JavaScript Object Notation (“JSON”) language, a text file, or some other suitable language.
 - JSON JavaScript Object Notation
 - the deployment component 126 or another component in the service provider network 120 , may utilize the deployment template 125 to provision the identified resources.
 - the identified resources may be provisioned in the service provider network 120 , the network 121 and possibly other networks.
 - the deployment template 125 might also be provided to the customer.
 - the deployment template 125 may be provided to the customer for modification before the deployment template is used to provision the service provider network 120 and/or the network 121 .
 - An example of a deployment template 125 is illustrated in FIG. 2 .
 - the customer might also share the deployment template 125 with other users.
 - portions of the configuration data 114 or the deployment template 125 might also be included in an appropriate interface, such as the UI 145 , through which the customer, or some other authorized user, can modify the data.
 - the UI 145 might present the resources, parameters for the resources and the connections between the resources for the infrastructure determined from the picture 150 .
 - the UI 145 might also provide functionality for allowing a customer to enter parameters that were not included in the picture 150 , or not identified correctly, for one or more resources 130 that were identified from the picture 150 .
 - a customer might also be permitted to utilize the UI 145 or other type of interface provided by the provisioning manager 122 to change and/or specify other parameters or resources.
 - the deployment template 125 is generated once the customer has completed modifications to the configuration data 114 , if any, using the configuration data 114 .
 - the deployment template 125 might specify resources, parameters associated with the resources, and the like.
 - a component within the service provider network 120 may utilize the deployment template 125 to provision and instantiate the defined resources 130 in the service provider network 120 .
 - the deployment component 126 might utilize the configuration data 114 directly to instantiate the defined resources 130 in the service provider network 120 .
 - FIG. 2 is a block diagram depicting an illustrative operating environment 200 in which a picture 150 A of an infrastructure is used to generate a deployment template 125 A.
 - the operating environment 200 is similar to the operating environment 100 .
 - the environment 200 shows the configuration service 144 , the customer computing device 140 , the user interface 145 , the picture 150 A and the deployment template 125 A.
 - FIG. 2 is intended to be illustrative, and is not intended to be limiting.
 - a user e.g., a customer of the service provider network 120
 - the customer may take a digital picture of a drawing or model of the infrastructure representation 148 .
 - the picture 150 A includes an infrastructure that includes a depiction of a firewall 202 , a load-balancer 206 , an auto-scaling group of servers 208 (“auto-scaling group 208 ”), and a data store 210 .
 - the firewall 202 includes text 204 that specifies to allow traffic using port 80 .
 - the firewall 202 is placed before the load-balancer 206 that is connected to the auto-scaling group of servers 208 using connector 216 .
 - the auto-scaling group 208 includes a depiction of two servers “S” that are enclosed within a dashed-line with the text “max 10 .”
 - the text “max 10 ” e.g., a parameter for the auto-scaling group
 - the auto-scaling group 208 is connected to a data store 210 using a connector 212 .
 - the data store 210 includes the graphical symbol 211 indicating that data may be read from the data store 210 .
 - the graphical symbol 211 may have been created by the user or some other authorized user.
 - the picture 150 A may be submitted to the configuration service 144 using the customer computing device 140 , or some other computing device.
 - the customer might take a digital picture and upload the picture 150 A to the configuration service 144 .
 - the customer might take a picture of the infrastructure with a smart phone and transmit the picture 150 A to the configuration service 144 .
 - the provisioning manager 122 may analyze the picture 150 A to identify the defined infrastructure.
 - the provisioning manager 122 utilizes an analyzer 230 that is configured to identify shapes, connectors and text in the picture 150 A.
 - the shapes may be associated with the mappings 116 that define how shapes are translated to resources 130 within the service provider network 120 . For instance, in the current example, a solid black line that is at least a specified thickness may be identified as the firewall 202 . Similarly, a circle with two or more arrows might be recognized as the load-balancer 206 . Generally, any mapping between shapes that are included in the picture 150 A and resources 130 of the service provider network 120 might be utilized.
 - the analyzer 230 may also be configured to perform optical character recognition on the picture 150 A to identify text elements.
 - the text elements may identify the resources 130 .
 - the text elements may identify and/or define one or more parameters that are associated with one or more of the depicted resources 130 .
 - the test “port 80 ” ( 204 ) is identified by the analyzer 230 and associated with the firewall 202 .
 - the text “max 10 ” is identified by the analyzer 230 and may be associated with the auto-scaling group 208 due, at least in part, on the location of the text “max 10 ” (e.g., within the auto-scaling group 208 ).
 - the text is associated with a resource based on a positioning (e.g., proximity) of the text to the depicted resource. In other examples, the text may be associated with the depicted resource based on some other identifying attribute (e.g., an arrow pointing from the text to the resource).
 - the data store 210 includes the graphical symbol 211 indicating that data may be read from the data store 210 . In other examples, the graphical symbol 211 might be replaced by text (e.g., an “R”) indicating that data may be read from the data store 210 .
 - the provisioning manager 122 may generate the configuration data 114 and/or create the deployment template 125 A.
 - a deployment template such as the deployment template 125 A, may define the infrastructure of an application in a service provider network 120 and/or within other networks.
 - the deployment template 125 A includes data describing the configuration of the resources 130 depicted in the picture 150 A that is to be created in the service provider network 120 .
 - the illustrated deployment template 125 A is simplified for purposes of explanation.
 - the deployment template 125 A may include other data, such as parameters that define attributes of the resource, mappings that are used to identify items in the template, outputs that might be provided to the customer, or the like.
 - the resources 130 might also include more or fewer properties.
 - the deployment template 125 A includes a resources section 232 A that includes a load balancer section 232 B, an auto-scale server section 232 C, a data store section 232 D and a security section 232 E.
 - Each of the sections 232 A- 232 E contained in the deployment template 125 A is created from the identification of the resources 130 by the provisioning manager 122 using the picture 150 A.
 - the provisioning manager 122 may include more information in the deployment template 125 A that might not be depicted in the picture 150 A.
 - the provisioning manager 122 might include one or more resources 130 that are needed in order to deploy the infrastructure that is depicted in the picture 150 A.
 - the user After creating the deployment template 125 A, the user might use the user interface 145 to interact with the configuration data 114 that is associated with the deployment template 125 A.
 - a graphical illustration 240 might be created from the deployment template and shown to the user in the user interface 145 . The user might compare the graphical illustration 240 to the picture 150 A to determine whether the provisioning manager 122 analyzed the picture 150 A correctly.
 - the user interface 145 might also be used to change parameters associated with the resources 130 , add/delete resources, and the like.
 - the deployment template 125 A might be defined such that the provisioning manager 122 , or some other component (e.g., the deployment component 126 ) may use the deployment template 125 A to provision the depicted resources 130 in the service provider network 102 and/or instantiate the infrastructure in the service provider network 120 .
 - FIGS. 3-5 are flow diagrams showing routines that illustrate aspects of using a picture 150 of an infrastructure to generate configuration data that may be used to deploy the infrastructure in a service provider network 120 , according to an aspect disclosed herein. It should be appreciated that the logical operations described herein with respect to FIGS. 3-5 , and the other FIGS., may be implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system.
 - FIG. 3 is a flow diagram showing a routine 300 illustrating aspects of a mechanism disclosed herein for using a picture to generate configuration data of an infrastructure that may be deployed in a service provider network 120 .
 - the routine 300 may begin at operation 310 , where an infrastructure representation 148 is created.
 - the infrastructure representation 148 may be a drawing (e.g., on a sheet of paper, on a whiteboard) or a model (e.g., building blocks) of infrastructure that is associated with an application configured to execute in the service provider network 120 .
 - the routine 300 may proceed to operation 320 , where a picture 150 of the infrastructure representation 148 is generated.
 - a customer may take a digital picture of the infrastructure representation 148 using a digital camera 164 or save a screenshot of a drawing that may be created using the customer computing device 140 .
 - the picture 150 might be generated using other mechanisms.
 - the user might scan the drawing using a scanning device to generate the picture 150 .
 - the routine 300 may proceed to operation 330 , where an image, such as the picture 150 , may be provided (e.g., transmitted) to the service provider network 120 .
 - an image such as the picture 150
 - the picture 150 may be provided by the customer computing device 140 to the provisioning manager 122 that is associated with a configuration service 144 .
 - the provisioning manager 122 may analyze the picture 150 to create configuration data, and possibly a deployment template 125 , that may be launched in the service provider network 120 and/or within another network.
 - the routine 300 may proceed to operation 340 , where all or a portion of the configuration data 114 may be received by the customer using the computing device 140 .
 - the configuration data 114 might be used to create the deployment template 125 that is provided by the provisioning manager 122 and received by the customer computing device 140 .
 - the routine 300 may proceed to operation 350 , where the customer, or some other authorized user, may interact with data associated with the infrastructure generated using the picture 150 .
 - the customer might use the user interface 145 to make changes to the definition of the infrastructure.
 - the user interface 145 might be used to set one or more parameters for one or more of the resources 130 that are specified in the deployment template 125 and/or the configuration data.
 - the user interface 145 might also be used to add or remove resources 130 from the determined infrastructure.
 - the routine 300 may proceed to operation 360 , where the infrastructure may be provisioned and/or instantiated in the service provider network 120 and/or within other networks.
 - the infrastructure might be provisioned and/or instantiated in the service provider network 120 and/or other networks using the provisioning manager 122 , the deployment component 126 , or some other computing device.
 - the deployment component 126 may use the configuration as specified by the deployment template 125 to determine how to provision the resources 130 in the service provider network 120 .
 - the routine 300 then proceeds to an end operation.
 - FIG. 4 is a flow diagram showing a routine 400 illustrating aspects of a mechanism disclosed herein for receiving a picture of an infrastructure and using the picture to provision resources of the service provider network 120 .
 - the routine 400 may begin at operation 410 , where a picture 150 of an infrastructure representation 148 is received.
 - the picture 150 may be received from the customer computing device 140 and may be a digital picture that captures a drawing and/or a model that represents a desired infrastructure of an application for execution in the service provider network 120 .
 - the routine 400 may flow to operation 420 , where the picture 150 is analyzed to identify infrastructure that is depicted in the picture 150 .
 - the provisioning manager 122 utilizing the analyzer 230 might identify the depicted resources 130 from the picture 150 .
 - the analyzer 230 might use the mappings 116 when determining whether a depiction is a resource that is associated with the service provider network 120 and/or some other network.
 - the analyzer 230 detects depicted resources 130 , parameters that may be associated with the resources 130 , and the connections between the resources.
 - the routine 400 may proceed to operation 430 , where the configuration data 114 and/or the deployment template 125 may be generated.
 - the configuration data 114 and/or the deployment template 125 may be generated by the provisioning manager 122 , the deployment component 126 , or some other computing device.
 - the routine 400 may proceed to operation 440 , where the resources 130 in the service provider network 120 and/or other networks may be provisioned and/or instantiated.
 - the provisioning manager 122 , the deployment component 126 , or some other component or computing device may provision and/or instantiate the resources 130 using the configuration data 114 and/or the deployment template 125 generated from the picture 150 .
 - the routine 400 then proceeds to an end operation.
 - FIG. 5 is a flow diagram showing a routine 500 illustrating aspects of a mechanism disclosed herein for providing a user interface that may be used to interact with configuration data 114 that is associated with the infrastructure depicted in the picture 150 .
 - a UI is generally described below, other types of interfaces and/or mechanisms might be provided for allowing a user to view and/or modify the configuration data 114 .
 - the routine 500 may begin at operation 510 , where the configuration data 114 for the infrastructure may be displayed.
 - the UI 145 might be presented that displays the resources 130 and the connections between the resources 130 as determined from the infrastructure depicted from the picture 150 .
 - the UI 145 might include a graphical illustration 240 that shows a graphical representation of the identified resources and connections between the resources.
 - routine 500 may flow to operation 520 , where user interface elements may be presented that allows a customer to interact with the configuration data 114 and/or the deployment template 125 .
 - the UI 145 elements might provide functionality for allowing a customer, or some other authorized user, to configure parameters that are associated with the different resources 130 specified by the configuration data 114 .
 - routine 500 may proceed to operation 530 , where UI elements may be provided for allowing a user to add, delete, and/or modify resources 130 in the configuration data 114 .
 - UI elements may be provided for allowing a user to add, delete, and/or modify resources 130 in the configuration data 114 .
 - the customer might be permitted to add, delete, and/or modify virtual machine instances 172 , firewalls, Internet gateways, load balancing devices, and/or other resources 130 in the configuration data 114 .
 - routine 500 may proceed to operation 540 , where a UI 145 element might be provided for allowing a customer to provision and deploy the resources 130 identified in the configuration data 114 in the service provider network 120 and/or other networks.
 - a UI 145 element might be provided for allowing a customer to provision and deploy the resources 130 identified in the configuration data 114 in the service provider network 120 and/or other networks.
 - functionality might be provided for allowing a user to specify other operational aspects not specifically mentioned above.
 - the routine 500 proceeds to an end operation.
 - FIG. 6 and the following description are intended to provide a brief, general description of a suitable computing environment in which the technologies described herein may be implemented.
 - FIG. 6 is a system and network diagram that shows an illustrative operating environment that includes a service provider network 120 .
 - the service provider network 120 can provide virtual machine instances 172 , other execution environments, and computing resources 130 on a permanent or an as-needed basis.
 - the computing resources 130 provided by the service provider network 120 may include various types of resources, such as data processing resources, data storage resources, networking resources, data communication resources and the like. Each type of computing resource 130 may be general-purpose or may be available in a number of specific configurations. For example, and as will be described in greater detail below, data processing resources 130 may be available as containers or virtual machine instances 172 in a number of different configurations. The virtual machine instances 172 may be configured to execute applications, including Web servers, application servers, media servers, database servers and other types of applications. Data storage resources 130 may include file storage devices, block storage devices and the like.
 - Each type or configuration of a virtual machine instance of a computing resource 130 may be available in different sizes, such as large resources, consisting of many processors, large amounts of memory, and/or large storage capacity, and small resources consisting of fewer processors, smaller amounts of memory and/or smaller storage capacity.
 - the computing resources 130 provided by the service provider network 120 are enabled in one implementation by one or more data centers 604 A- 604 N (which may be referred to herein singularly as “a data center 604 ” or collectively as “the data centers 604 ”).
 - the data centers 604 are facilities utilized to house and operate computer systems and associated components.
 - the data centers 604 typically include redundant and backup power, communications, cooling and security systems.
 - the data centers 604 might also be located in geographically disparate locations.
 - One illustrative configuration for a data center 604 that implements some or all of the concepts and technologies disclosed herein for providing temporary access to resources in the service provider network 120 will be described below with regard to FIG. 7 .
 - the users and customers of the service provider network 120 may access the computing resources provided by the data centers 604 over a suitable data communications network, such as a Wide Area Network (“WAN”), as illustrated by network 630 .
 - a WAN might be used, it should be appreciated that a local-area network (“LAN”), the Internet, or any other networking topology known in the art that connects the data centers 604 to the customer computing devices 140 may be utilized. It should also be appreciated that combinations of such networks might also be utilized.
 - FIG. 7 is a computing system diagram that illustrates one configuration for a data center 604 that implements aspects of a service provider network 120 , including some or all of the concepts and technologies disclosed herein for using a picture 150 to generate configuration data 114 for an infrastructure depicted in the picture 150 .
 - the example data center 604 shown in FIG. 7 includes several computers, such as servers 170 A- 170 F (which may be referred to herein singularly as “a server computer 170 ” or in the plural as “the server computers 170 ”) for providing computing resources 130 .
 - the server computers 170 may be standard tower or rack-mount server computers configured appropriately for providing the computing resources described herein. In one configuration the server computers 170 are configured to execute the software products as described above.
 - some of the computing resources 704 are the virtual machine instances 172 and the resources 130 .
 - a virtual machine instance is an instance of a software implementation of a machine (i.e. a computer) that executes programs like a physical machine.
 - Each of the server computers 170 may be configured to execute an instance manager (not shown) capable of instantiating and managing resources 130 and VM instances 172 .
 - the instance manager might be a hypervisor or another type of program configured to enable the execution of multiple virtual machine instances 172 on a single server computer 170 , for example.
 - the data center 604 shown in FIG. 7 also includes a server computer 170 F reserved for executing software components for managing the operation of the data center 604 , the server computers 170 , virtual machine instances 172 , and other resources 130 within the service provider network 120 .
 - the server computer 170 F might also execute the provisioning manager 122 . Details regarding the operation of this component have been provided above. In this regard, it should be appreciated that while these components are illustrated as executing within the service provider network 120 , computing systems that are external to the service provider network 120 might also be utilized to execute some or all of these components. Other configurations might also be utilized.
 - an appropriate local area network (“LAN”) 705 is utilized to interconnect the server computers 170 A- 170 E and the server computer 170 F.
 - the LAN 705 is also connected to the network illustrated in FIG. 7 .
 - FIGS. 6 and 7 It should be appreciated that the configuration and network topology illustrated in FIGS. 6 and 7 has been greatly simplified and that many more computing systems, networks and networking devices may be utilized to interconnect the various computing systems disclosed herein.
 - Appropriate load balancing devices or software modules might also be utilized for balancing a load between each of the data centers 604 A- 604 N, between each of the server computers 170 A- 170 F in each data center 604 and between virtual machine instances 172 and other types of computing resources 130 provided by the service provider network 120 .
 - data center 604 described in FIG. 7 is merely illustrative and that other implementations might also be utilized. Additionally, it should be appreciated that the functionality provided by these components might be implemented in software, hardware, or a combination of software and hardware. Other implementations should be apparent to those skilled in the art.
 - FIG. 8 shows an example computer architecture for a computer 800 capable of executing program components for using a picture 150 to generate configuration data 114 for a depicted infrastructure in the manner described above.
 - the computer architecture shown in FIG. 8 illustrates a conventional server computer, workstation, desktop computer, laptop, tablet, network appliance, personal digital assistant (“PDA”), e-reader, digital cellular phone, or other computing device, and may be utilized to execute any of the software components presented herein.
 - the computer architecture shown in FIG. 8 may be utilized to execute software components for performing operations as described above.
 - the computer architecture shown in FIG. 8 might also be utilized to implement a customer computing device 140 , the server computers 170 , the configuration service 144 , or any other of the computing systems described herein.
 - the computer 800 includes a baseboard 802 , or “motherboard,” which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths.
 - a baseboard 802 or “motherboard”
 - the CPUs 804 may be standard programmable processors that perform arithmetic and logical operations necessary for the operation of the computer 800 .
 - the CPUs 804 perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states.
 - Switching elements may generally include electronic circuits that maintain one of two binary states, such as flip-flops and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements may be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units and the like.
 - the chipset 806 provides an interface between the CPUs 804 and the remainder of the components and devices on the baseboard 802 .
 - the chipset 806 may provide an interface to a RAM 808 , used as the main memory in the computer 800 .
 - the chipset 806 may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”) 810 or non-volatile RAM (“NVRAM”) for storing basic routines that help to startup the computer 800 and to transfer information between the various components and devices.
 - ROM 810 or NVRAM may also store other software components necessary for the operation of the computer 800 .
 - the computer 800 may operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as the local area network 820 .
 - the chipset 806 may include functionality for providing network connectivity through a network interface controller (“NIC”) 812 , such as a gigabit Ethernet adapter.
 - NIC network interface controller
 - the NIC 812 is capable of connecting the computer 800 to other computing devices over the local area network 820 . It should be appreciated that multiple NICs 812 may be present in the computer 800 , connecting the computer to other types of networks and remote computer systems.
 - the computer 800 may be connected to a mass storage device 818 that provides non-volatile storage for the computer.
 - the mass storage device 818 may store system programs, application programs, other program modules and data, which have been described in greater detail herein.
 - the mass storage device 818 may be connected to the computer 800 through a storage controller 814 connected to the chipset 806 .
 - the mass storage device 818 may consist of one or more physical storage units.
 - the storage controller 814 may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a fiber channel (“FC”) interface, or other type of interface for physically connecting and transferring data between computers and physical storage units.
 - SAS serial attached SCSI
 - SATA serial advanced technology attachment
 - FC fiber channel
 - the computer 800 may store data on the mass storage device 818 by transforming the physical state of the physical storage units to reflect the information being stored.
 - the specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether the mass storage device 818 is characterized as primary or secondary storage and the like.
 - the computer 800 may store information to the mass storage device 818 by issuing instructions through the storage controller 814 to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit.
 - Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description.
 - the computer 800 may further read information from the mass storage device 818 by detecting the physical states or characteristics of one or more particular locations within the physical storage units.
 - the computer 800 may have access to other computer-readable storage media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media is any available media that provides for the non-transitory storage of data and that may be accessed by the computer 800 .
 - Computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology.
 - Computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information in a non-transitory fashion.
 - the mass storage device 818 may store an operating system 830 utilized to control the operation of the computer 800 .
 - the operating system comprises the LINUX operating system.
 - the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation.
 - the operating system may comprise the UNIX operating system. It should be appreciated that other operating systems may also be utilized.
 - the mass storage device 818 may store other system or application programs and data utilized by the computer 800 , such as components that include the provisioning manager 122 , the configuration data 114 and/or any of the other software components and data described above.
 - the mass storage device 818 might also store other programs and data not specifically identified herein.
 - the mass storage device 818 or other computer-readable storage media is encoded with computer-executable instructions which, when loaded into the computer 800 , transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the technologies described herein. These computer-executable instructions transform the computer 800 by specifying how the CPUs 804 transition between states, as described above.
 - the computer 800 has access to computer-readable storage media storing computer-executable instructions which, when executed by the computer 800 , perform the various routines described above with regard to FIGS. 3-5 .
 - the computer 800 might also include computer-readable storage media for performing any of the other computer-implemented operations described herein.
 - the computer 800 may also include one or more input/output controllers 816 for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller 816 may provide output to a display, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that the computer 800 may not include all of the components shown in FIG. 8 , may include other components that are not explicitly shown in FIG. 8 , or may utilize an architecture completely different than that shown in FIG. 8 .
 
Landscapes
- Engineering & Computer Science (AREA)
 - Theoretical Computer Science (AREA)
 - General Engineering & Computer Science (AREA)
 - Physics & Mathematics (AREA)
 - General Physics & Mathematics (AREA)
 - Data Mining & Analysis (AREA)
 - Databases & Information Systems (AREA)
 - Human Computer Interaction (AREA)
 - Information Transfer Between Computers (AREA)
 
Abstract
Description
-  This application is a continuation of, and claims priority to, U.S. application Ser. No. 14/500,701, entitled “Defining Software Infrastructure Using a Picture”, filed on Sep. 29, 2014, the entire contents of which are hereby incorporated by reference.
 -  Some network-based computing service providers allow customers to purchase and utilize computing resources, such as virtual machine instances, on a permanent or as-needed basis. In addition to virtual machine instances, such computing service providers typically allow customers to purchase and utilize other types of computing resources. For example, customers might be permitted to purchase access to and use of file and block data storage resources, database resources, networking resources, and other types of computing resources. Utilizing these computing resources as building blocks, customers of such a network-based computing service can create custom solutions that provide various types of functionality, such as application hosting, backup and storage, content delivery, World Wide Web (“Web”) hosting, enterprise information technology (“IT”) solutions, database services, and others.
 -  It can sometimes be difficult for customers, or potential customers, of computing service providers such as those described above to define the infrastructure of an application or network. For example, a significant amount of manual technical effort may be required to define the resources to be utilized by an application as well as the interactions between resources within the network-based computing service. The technical effort required to define an infrastructure that is provisioned in a network-based computing service may be costly and time consuming and might, therefore, present a significant barrier to the utilization of network-based computing services to certain types of customers.
 -  The disclosure made herein is presented with respect to these and other considerations.
 -  
FIG. 1 is a block diagram depicting an illustrative operating environment in which a picture may be used to define an infrastructure of an application that may be provisioned in a network; -  
FIG. 2 is a block diagram depicting an illustrative operating environment in which a picture of an infrastructure is used to generate a deployment template; -  
FIG. 3 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for using a picture to generate configuration data that defines an infrastructure that may be deployed in a service provider network; -  
FIG. 4 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for receiving a picture of an infrastructure and using the picture to provision resources of the service provider network; -  
FIG. 5 is a flow diagram showing a routine illustrating aspects of a mechanism disclosed herein for providing a user interface that may be used to interact with configuration data that is associated with infrastructure depicted in a picture; -  
FIG. 6 is a system and network diagram that shows one illustrative operating environment for the technologies disclosed herein that includes a service provider network; -  
FIG. 7 is a computing system diagram that illustrates one configuration for a data center that implements aspects of a service provider network, including some or all of the concepts and technologies disclosed herein for using a picture to generate configuration data for an infrastructure depicted in the picture; and -  
FIG. 8 is a computer architecture diagram showing one illustrative computer hardware architecture for implementing a computing device that might be utilized to implement aspects of the various technologies presented herein. -  The following detailed description is directed to technologies for using an image (e.g., a picture) to define the infrastructure for an application that may be deployed in a service provider network and/or other networks. A user, such as a customer of the service provider network, may create a drawing or a model (e.g., using blocks) to define the infrastructure of an application. For example, the user might create a drawing of the desired infrastructure on a piece of paper, on a whiteboard, using a computing device, or the like. In other examples, the user might create a model (e.g., using blocks) that defines the infrastructure. After creating the drawing or the model, the user may take a picture of the drawing or model, or may obtain a screenshot when the drawing is made using a computer.
 -  In some examples, the picture of the infrastructure may be provided to a configuration service that analyzes the picture to identify the specific resources depicted in the picture as well as how the resources are connected. The configuration service may be part of the service provider network or associated with the service provider network. After obtaining the picture of the infrastructure, the picture may be analyzed by the configuration service to associate specific drawing shapes and/or drawing attributes with resources that may be included in configuring an application that is to be deployed within a network, such as the service provider network and/or one or more other networks. For example, and without limitation, a server could be represented by a red square, a firewall may be identified as a black line, a load-balancer might be represented by another shape, and the like. As the picture is analyzed, a red square may be identified that may be mapped to an actual server in the service provider network.
 -  In some configurations, the mappings between the drawn object and the associated resource in the service provider network may be provided, at least in part, by the service provider network. In other examples, the customer might supply custom mappings that associate drawing objects with a specified resource or type of resource available from the service provider network.
 -  Additional details might also be associated with depicted resources. For example, a customer may associate tags (e.g., graphical or text) with a resource that may be used to further define the resource. In some examples, a tag may specify a value of a parameter that is associated with the resources (e.g., instance type, security permissions, allowed ports). For instance, in the example provided above, text could be written near the red square that identifies a size of the instance (e.g., “medium” to indicate a four core processor using 15 GB of memory). In other examples, the parameters might be set using symbols. For example, one red square near an instance resource might indicate a small instance size, whereas two red squares might indicate a medium size instance. In some examples, the customer may be prompted to supply parameters that may not have been determined from the infrastructure depicted in the picture. The picture may also be analyzed to determine the connections between the resources. For example, the connections might be indicated by lines, or some other graphical element or association that may be determined from the picture. After identifying the resources and the connections between the resources in the picture, configuration data may be generated that describes a configuration of the infrastructure of the application within the service provider network or another network as depicted in the picture.
 -  In some examples, the configuration data may be used to generate a deployment template. In some examples, the deployment template may be used by the service provider network or another network to provision the identified resources. For example, the deployment template might be used by the service provider network to provision resources in another network that is associated with the service provider network. The deployment template might also be provided to the customer. For example, the deployment template may be provided to the customer for modification before the deployment template is used to provision or instantiate the infrastructure in the service provider network.
 -  Once the configuration data describing the configuration of the infrastructure and/or the deployment template has been generated, portions of the configuration data or the deployment template might also be included in an appropriate interface, such as a user interface (“UI”), through which a user, such as the customer, can modify the data. For example, and without limitation, a user might be permitted to set one or more parameters of the resources identified from the picture using the UI. Other types of interfaces, such as application programming interfaces (“APIs”) or command line interfaces might also be provided through which a user can modify the configuration data.
 -  The UI might also provide functionality for modifying the configuration data in other ways. For example, a user might be permitted to add, delete, or modify virtual machine instances, or other types of data processing resources, file or block data storage resources, database resources, networking resources, such as load balancing resources, domain name service (“DNS”) resources, and virtual networking resources, security resources and/or other types of resources. In some examples, the deployment template might be shared with other users. In other examples, the user may provide a deployment template to one or more other users. Additional details regarding the various components and processes described above for using a picture to define an infrastructure of an application used in a service provider network will be presented below with regard to
FIGS. 1-8 . -  It should be appreciated that the subject matter presented herein may be implemented as a computer process, a computer-controlled apparatus, a computing system, or an article of manufacture, such as a computer-readable storage medium. While the subject matter described herein is presented in the general context of program modules that execute on one or more computing devices, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures and other types of structures that perform particular tasks or implement particular abstract data types.
 -  Those skilled in the art will also appreciate that aspects of the subject matter described herein may be practiced on or in conjunction with other computer system configurations beyond those described herein, including multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, handheld computers, personal digital assistants, e-readers, mobile telephone devices, tablet computing devices, special-purposed hardware devices, network appliances and the like. As mentioned briefly above, the technologies described herein may be practiced in distributed computing environments, where tasks may be performed by remote computing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
 -  In the following detailed description, references are made to the accompanying drawings that form a part hereof, and that show, by way of illustration, specific configurations or examples. The drawings herein are not drawn to scale. Like numerals represent like elements throughout the several figures (which may be referred to herein as a “FIG.” or “FIGS.”).
 -  
FIG. 1 is a block diagram depicting anillustrative operating environment 100 in which a picture may be used to define an infrastructure of an application that may be provisioned in a network. As illustrated, the operatingenvironment 100 includes acustomer computing device 140, a configuration environment 124, an 166A and 166B andexecution environment resources 130A andresources 130B (which may be referred to herein as “resources 130”). In some examples, the computing devices are configured to operate in aservice provider network 120 and/or in thenetwork 121. -  As described in more detail below, the
service provider network 120, and possibly thenetwork 121, may include a collection of rapidly provisioned and, potentially, released computing resources hosted in an 166A or 166B. Customers of theexecution environment service provider network 120 may purchase and utilizecomputing resources 130, such asvirtual machine instance 172,networking resources 178,storage resources 174, or other types of computing resources, from a service provider on a permanent or as-needed basis. Thecomputing resources 130A may include a number of computing, networking and storage devices in communication with one another. In some configurations, thecomputing resources 130A may correspond to physical computing devices, such as theservers 170A-170N. In other configurations, the computing resources may correspond to virtual machine instances, such as thevirtual machine instances 172, implemented by one or more physical computing devices, such as theservers 170A-170N. -  According to some configurations, the
network 121 may be similarly configured to theservice provider network 120. For example, thenetwork 121 may have anexecution environment 166B and theresources 130B. Theresources 130B may be the same or different from theresources 130A. In some examples, thenetwork 121 may be programmatically accessed by the configuration environment 124 and/or theexecution environment 166B. For example, theconfiguration service 144 may configure theresources 130B in thenetwork 121 by sending data (e.g., commands) to one or more computing resources operating in thenetwork 121. -  Each type or configuration of a computing resource may be available from the service provider that operates the
service provider network 120 in different sizes. For example, a service provider might offervirtual machine instances 172 or other types of data processing resources that are available for purchase and use that have many different configurations of processor capabilities, main memory, disk storage, and operating system. A service provider might also offer other types ofresources 130 for purchase and use by customers. For example, a service provider might offer file or blockdata storage resources 174,database resources 176,networking resources 178, such as load balancing resources, domain name service (“DNS”) resources, virtual networking resources,security resources 180 and/or other types ofresources 182 on a permanent or as-needed basis. -  The service provider operating the
service provider network 120 might also charge a fee for operating theresources 130 that the customer creates and uses within theservice provider network 120. The fee charged for aparticular resource 130 might be based upon the type and/or configuration of theresource 130. The fee charged for a particular resource 104 might also be based upon the amount of time theresource 130 is utilized. For example, in the case of a data processing resource, like avirtual machine instance 172, the fee for use of the resource might be charged based upon the amount of time the resource is utilized. In the case of adata storage resource 174, the fee might be computed based upon the amount of data stored and/or the amount of data transferred into or out of the resource. The fees for other types ofresources 130 might also be based upon other considerations. A service provider might also utilize various purchasing models to determine the amount to charge a customer for use ofresources 130 provided by the service provider. -  The
various resources 130 described above might also be provisioned and de-provisioned as needed in an automated fashion. For example, a customer might submit a request to theservice provider network 120 to instantiate a new instance of acomputing resource 130, such as an instance of a virtual machine. In response to receiving such a request, aprovisioning manager 122, or one or more other components within theservice provider network 120, might create the new instance of the virtual machine as requested by the customer. The customer may then be permitted to utilize the new instance of the virtual machine as desired. Other types of computing resources might be instantiated in a similar fashion. -  When a customer has finished using a
computing resource 130, such as avirtual machine instance 172, the customer may request that theresource 130 be de-provisioned. In response thereto, theprovisioning manager 122, or another component in theservice provider network 120, may cause thecomputing resources 130 to be de-provisioned. Other types ofcomputing resources 130 might also be provisioned and de-provisioned in a similar manner. Theservice provider network 120 might also provide functionality for automatically scaling and/orde-scaling resources 130 based upon demand for thecomputing resources 130 or other factors. -  As mentioned above, it might be difficult for the customer of a service provider network to define the infrastructure that defines the
resources 130 used by an application that executes within theservice provider network 120 and/or in thenetwork 121, and possibly other networks (not shown). For instance, in the example shown inFIG. 1 , a customer might be interested in creating an application that includes computing resources, such as web servers that auto-scale, a load-balancer, a firewall, and a data storage service. Manually defining the infrastructure that may be used in provisioning the resources in theservice provider network 120, however, may be time consuming and error-prone for some customers. As used herein, the terms “customer” and “customers” refer to existing customers of theservice provider network 120 as well as visitors (i.e. potential customers) to theservice provider network 120 that are authorized to execute a virtual machine instance 172 (e.g., the instances 172A-172N) in theservice provider network 120. -  In order to assist a customer of the
service provider network 120 in defining the infrastructure, the customer may provide apicture 150 of a desiredinfrastructure representation 148. As discussed briefly above, theinfrastructure representation 148 might be a drawing, or model, or some other representation of the infrastructure of an application (which may all be referred to herein as a “drawing”). For example, the user might build a model using blocks of different colors and/or shapes to representdifferent resources 130. In some examples, theinfrastructure representation 148 may include anyresource 130 available from or within theservice provider network 120, within thenetwork 121, and possibly within other networks. Theinfrastructure representation 148 may also include the connections, such as network connections, between the resources as well as other data that includes additional details that are associated with one or more of theresources 130 depicted in theinfrastructure representation 148. -  After creating the drawing or the model, the customer may take a
picture 150 of the drawing or model using a camera, such ascamera 164, or may generate a screenshot of the drawing that may be analyzed and used to generate a definition of the infrastructure. In this way, the customer can be freed from the previously difficult task of manually defining the infrastructure. In some examples, thepicture 150 of the infrastructure may be provided to aconfiguration service 144 that is part of, or is associated with, theservice provider network 120. Theconfiguration service 144 may receive thepicture 150 from thecustomer computing device 140. -  After receiving the
picture 150, theprovisioning manager 122 may analyze thepicture 150, to identify thespecific resources 130 depicted in the picture as well as how the resources are connected. For example, theprovisioning manager 122 may analyze thepicture 150 to recognize shapes in thepicture 150 and associate the shapes with at least one of theavailable resources 130 available from theservice provider network 120 or thenetwork 121. -  According to some configurations, the mappings between the shape and the associated
resource 130 are stored and defined in themappings 116 illustrated in thedata store 162A and/or in thedata store 162B. Themappings 116 might map any graphical shape, text, icon or some other type of graphical indicator to one ormore resources 130 of theservice provider network 120 and/or thenetwork 121. Some example shapes are discussed below and illustrated inFIG. 2 . -  In some examples, all or a portion of the
mappings 116 are supplied by the operator of theservice provider network 120 and/or the operator of thenetwork 121. For example, theservice provider network 120 might supply the customer with graphical shapes (e.g., a set of icons) that might be placed in a drawing to represent thedifferent resources 130A available from theservice provider network 120. Similarly, thenetwork 121 might provide a customer with graphical shapes that might be placed in a drawing to represent thedifferent resources 130B available from thenetwork 121. In other examples, the customer might supply all or a portion of themappings 116. For example, the customer might definemappings 116 that modify previously defined mappings 116 (e.g., the mappings provided by the owner/operator of theservice provider network 120 or the network 121). Themappings 116 specified by the customer might also benew mappings 116 that have not been defined (e.g. new or different symbols to represent the available resources 130). Themappings 116 might also include mappings for text, symbols, or other graphical elements that are used to specify parameters for theresources 130. For example, one symbol might indicate that a data store may be read, whereas another symbol might indicate that a data store may be read/write. -  The
provisioning manager 122 may also analyze thepicture 150 to detect additional details relating to the infrastructure. For example, a customer might associate tags (e.g., graphical or text) with aresource 130 depicted in thepicture 150 that may be used to further define theresource 130. In some examples, a tag may specify a value of a parameter that is associated with the resources (e.g., instance type, security permissions, allowed ports). For instance, text could be drawn near a red square in thepicture 150 that identifies a size of the instance (e.g., “medium” to indicate a four core processor using 15 GB of memory, “small” to indicate a two core processor using 1.5 GB of memory). Further examples are provided below with regard toFIG. 2 . -  In some configurations, after analyzing the
picture 150, theprovisioning manager 122, or some other component, may query the customer for parameters that might be needed before the infrastructure may be provisioned and launched within theservice provider network 120 and/or in thenetwork 121. For example, the user interface 145 may be used to obtain the requested parameter data. In some examples, the user may be prompted to supply parameters that may not have been determined from the infrastructure depicted in thepicture 150. The parameters that might be requested typically depend on the type ofresource 130 that is depicted in thepicture 150. For example, when the resource is a security group, the parameters generally relate to security settings. When the resource is a virtual machine instance, the parameters may relate to the type of the virtual machine instance. -  The
provisioning manager 122 may also analyze thepicture 150 to determine the network connections (“connections”) between the resources. For example, the connections might be indicated in thepicture 150 by lines, or some other graphical element or association that may be determined from thepicture 150. In some configurations, the connections may go between different networks. For example, a connection in the picture might connect one ormore resources 130A provided by theservice provider network 120 with one ormore resources 130B provided by thenetwork 121. After identifying theresources 130 and the connections between the resources in thepicture 150, theprovisioning manager 122 may generateconfiguration data 114 that describes a configuration of the infrastructure of the application within theservice provider network 120 and/or other networks.FIG. 2 illustrates an example of an infrastructure depicted in thepicture 150. -  In some examples, the
configuration data 114 may be used by theprovisioning manager 122, thedeployment component 126, or some other computing device, to generate adeployment template 125. Thedeployment template 125 might be implemented utilizing JavaScript Object Notation (“JSON”) language, a text file, or some other suitable language. In some configurations, thedeployment component 126, or another component in theservice provider network 120, may utilize thedeployment template 125 to provision the identified resources. In some configurations, the identified resources may be provisioned in theservice provider network 120, thenetwork 121 and possibly other networks. -  The
deployment template 125 might also be provided to the customer. For example, thedeployment template 125 may be provided to the customer for modification before the deployment template is used to provision theservice provider network 120 and/or thenetwork 121. An example of adeployment template 125 is illustrated inFIG. 2 . The customer might also share thedeployment template 125 with other users. -  Once the
configuration data 114 describing the configuration of the infrastructure has been generated, and/or thedeployment template 125 has been generated, portions of theconfiguration data 114 or thedeployment template 125 might also be included in an appropriate interface, such as the UI 145, through which the customer, or some other authorized user, can modify the data. In particular, the UI 145 might present the resources, parameters for the resources and the connections between the resources for the infrastructure determined from thepicture 150. -  The UI 145 might also provide functionality for allowing a customer to enter parameters that were not included in the
picture 150, or not identified correctly, for one ormore resources 130 that were identified from thepicture 150. A customer might also be permitted to utilize the UI 145 or other type of interface provided by theprovisioning manager 122 to change and/or specify other parameters or resources. -  In some examples, the
deployment template 125 is generated once the customer has completed modifications to theconfiguration data 114, if any, using theconfiguration data 114. For example, and without limitation, thedeployment template 125 might specify resources, parameters associated with the resources, and the like. -  As briefly discussed above, a component within the
service provider network 120, such as adeployment component 126, may utilize thedeployment template 125 to provision and instantiate the definedresources 130 in theservice provider network 120. Alternately, thedeployment component 126 might utilize theconfiguration data 114 directly to instantiate the definedresources 130 in theservice provider network 120. -  
FIG. 2 is a block diagram depicting anillustrative operating environment 200 in which apicture 150A of an infrastructure is used to generate adeployment template 125A. The operatingenvironment 200 is similar to the operatingenvironment 100. As illustrated, theenvironment 200 shows theconfiguration service 144, thecustomer computing device 140, the user interface 145, thepicture 150A and thedeployment template 125A. -  The example shown in
FIG. 2 is intended to be illustrative, and is not intended to be limiting. As illustrated, a user (e.g., a customer of the service provider network 120) created aninfrastructure representation 148 that was used to create thepicture 150A. For example, the customer may take a digital picture of a drawing or model of theinfrastructure representation 148. -  As depicted in the illustrative example, the
picture 150A includes an infrastructure that includes a depiction of afirewall 202, a load-balancer 206, an auto-scaling group of servers 208 (“auto-scaling group 208”), and adata store 210. Thefirewall 202 includestext 204 that specifies to allowtraffic using port 80. Thefirewall 202 is placed before the load-balancer 206 that is connected to the auto-scaling group ofservers 208 usingconnector 216. The auto-scaling group 208 includes a depiction of two servers “S” that are enclosed within a dashed-line with the text “max 10.” In the current example, the text “max 10” (e.g., a parameter for the auto-scaling group) may indicate that the servers should automatically scale to a maximum of 10 instances. The auto-scaling group 208 is connected to adata store 210 using aconnector 212. Thedata store 210 includes thegraphical symbol 211 indicating that data may be read from thedata store 210. Thegraphical symbol 211 may have been created by the user or some other authorized user. -  The
picture 150A may be submitted to theconfiguration service 144 using thecustomer computing device 140, or some other computing device. For example, the customer might take a digital picture and upload thepicture 150A to theconfiguration service 144. In other examples, the customer might take a picture of the infrastructure with a smart phone and transmit thepicture 150A to theconfiguration service 144. -  As discussed above, after receiving the
picture 150A at theconfiguration service 144, theprovisioning manager 122 may analyze thepicture 150A to identify the defined infrastructure. In some examples, theprovisioning manager 122 utilizes ananalyzer 230 that is configured to identify shapes, connectors and text in thepicture 150A. As discussed above, the shapes may be associated with themappings 116 that define how shapes are translated toresources 130 within theservice provider network 120. For instance, in the current example, a solid black line that is at least a specified thickness may be identified as thefirewall 202. Similarly, a circle with two or more arrows might be recognized as the load-balancer 206. Generally, any mapping between shapes that are included in thepicture 150A andresources 130 of theservice provider network 120 might be utilized. -  The
analyzer 230 may also be configured to perform optical character recognition on thepicture 150A to identify text elements. In some examples, the text elements may identify theresources 130. In other examples, the text elements may identify and/or define one or more parameters that are associated with one or more of the depictedresources 130. In the current example, the test “port 80” (204) is identified by theanalyzer 230 and associated with thefirewall 202. The text “max 10” is identified by theanalyzer 230 and may be associated with the auto-scaling group 208 due, at least in part, on the location of the text “max 10” (e.g., within the auto-scaling group 208). In some examples, the text is associated with a resource based on a positioning (e.g., proximity) of the text to the depicted resource. In other examples, the text may be associated with the depicted resource based on some other identifying attribute (e.g., an arrow pointing from the text to the resource). As illustrated, thedata store 210 includes thegraphical symbol 211 indicating that data may be read from thedata store 210. In other examples, thegraphical symbol 211 might be replaced by text (e.g., an “R”) indicating that data may be read from thedata store 210. -  After identifying the
resources 130, and the connections between theresources 130, theprovisioning manager 122 may generate theconfiguration data 114 and/or create thedeployment template 125A. As discussed above, a deployment template, such as thedeployment template 125A, may define the infrastructure of an application in aservice provider network 120 and/or within other networks. In the current example, thedeployment template 125A includes data describing the configuration of theresources 130 depicted in thepicture 150A that is to be created in theservice provider network 120. The illustrateddeployment template 125A is simplified for purposes of explanation. For example, thedeployment template 125A may include other data, such as parameters that define attributes of the resource, mappings that are used to identify items in the template, outputs that might be provided to the customer, or the like. Theresources 130 might also include more or fewer properties. -  As illustrated, the
deployment template 125A includes aresources section 232A that includes aload balancer section 232B, an auto-scale server section 232C, adata store section 232D and asecurity section 232E. Each of thesections 232A-232E contained in thedeployment template 125A is created from the identification of theresources 130 by theprovisioning manager 122 using thepicture 150A. In other examples, theprovisioning manager 122 may include more information in thedeployment template 125A that might not be depicted in thepicture 150A. For example, theprovisioning manager 122 might include one ormore resources 130 that are needed in order to deploy the infrastructure that is depicted in thepicture 150A. -  After creating the
deployment template 125A, the user might use the user interface 145 to interact with theconfiguration data 114 that is associated with thedeployment template 125A. In some examples, agraphical illustration 240 might be created from the deployment template and shown to the user in the user interface 145. The user might compare thegraphical illustration 240 to thepicture 150A to determine whether theprovisioning manager 122 analyzed thepicture 150A correctly. As discussed above, the user interface 145 might also be used to change parameters associated with theresources 130, add/delete resources, and the like. -  The
deployment template 125A might be defined such that theprovisioning manager 122, or some other component (e.g., the deployment component 126) may use thedeployment template 125A to provision the depictedresources 130 in the service provider network 102 and/or instantiate the infrastructure in theservice provider network 120. -  
FIGS. 3-5 are flow diagrams showing routines that illustrate aspects of using apicture 150 of an infrastructure to generate configuration data that may be used to deploy the infrastructure in aservice provider network 120, according to an aspect disclosed herein. It should be appreciated that the logical operations described herein with respect toFIGS. 3-5 , and the other FIGS., may be implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. -  The implementation of the various components described herein is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as operations, structural devices, acts, or modules. These operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic and any combination thereof. It should also be appreciated that more or fewer operations may be performed than shown in the FIGS. and described herein. These operations may also be performed in parallel, or in a different order than those described herein.
 -  
FIG. 3 is a flow diagram showing a routine 300 illustrating aspects of a mechanism disclosed herein for using a picture to generate configuration data of an infrastructure that may be deployed in aservice provider network 120. The routine 300 may begin atoperation 310, where aninfrastructure representation 148 is created. As discussed above, theinfrastructure representation 148 may be a drawing (e.g., on a sheet of paper, on a whiteboard) or a model (e.g., building blocks) of infrastructure that is associated with an application configured to execute in theservice provider network 120. -  From
operation 310, the routine 300 may proceed tooperation 320, where apicture 150 of theinfrastructure representation 148 is generated. For example, a customer may take a digital picture of theinfrastructure representation 148 using adigital camera 164 or save a screenshot of a drawing that may be created using thecustomer computing device 140. Thepicture 150 might be generated using other mechanisms. For example, the user might scan the drawing using a scanning device to generate thepicture 150. -  From
operation 320, the routine 300 may proceed tooperation 330, where an image, such as thepicture 150, may be provided (e.g., transmitted) to theservice provider network 120. As discussed above, thepicture 150 may be provided by thecustomer computing device 140 to theprovisioning manager 122 that is associated with aconfiguration service 144. Theprovisioning manager 122 may analyze thepicture 150 to create configuration data, and possibly adeployment template 125, that may be launched in theservice provider network 120 and/or within another network. -  From
operation 330, the routine 300 may proceed tooperation 340, where all or a portion of theconfiguration data 114 may be received by the customer using thecomputing device 140. As discussed above, theconfiguration data 114 might be used to create thedeployment template 125 that is provided by theprovisioning manager 122 and received by thecustomer computing device 140. -  From
operation 340, the routine 300 may proceed tooperation 350, where the customer, or some other authorized user, may interact with data associated with the infrastructure generated using thepicture 150. As discussed above, the customer might use the user interface 145 to make changes to the definition of the infrastructure. For example, the user interface 145 might be used to set one or more parameters for one or more of theresources 130 that are specified in thedeployment template 125 and/or the configuration data. The user interface 145 might also be used to add or removeresources 130 from the determined infrastructure. -  From
operation 350, the routine 300 may proceed tooperation 360, where the infrastructure may be provisioned and/or instantiated in theservice provider network 120 and/or within other networks. As discussed above, the infrastructure might be provisioned and/or instantiated in theservice provider network 120 and/or other networks using theprovisioning manager 122, thedeployment component 126, or some other computing device. Thedeployment component 126 may use the configuration as specified by thedeployment template 125 to determine how to provision theresources 130 in theservice provider network 120. The routine 300 then proceeds to an end operation. -  
FIG. 4 is a flow diagram showing a routine 400 illustrating aspects of a mechanism disclosed herein for receiving a picture of an infrastructure and using the picture to provision resources of theservice provider network 120. The routine 400 may begin atoperation 410, where apicture 150 of aninfrastructure representation 148 is received. As discussed above, thepicture 150 may be received from thecustomer computing device 140 and may be a digital picture that captures a drawing and/or a model that represents a desired infrastructure of an application for execution in theservice provider network 120. -  From
operation 410, the routine 400 may flow tooperation 420, where thepicture 150 is analyzed to identify infrastructure that is depicted in thepicture 150. As discussed above, theprovisioning manager 122 utilizing theanalyzer 230 might identify the depictedresources 130 from thepicture 150. Theanalyzer 230 might use themappings 116 when determining whether a depiction is a resource that is associated with theservice provider network 120 and/or some other network. In some examples, theanalyzer 230 detects depictedresources 130, parameters that may be associated with theresources 130, and the connections between the resources. -  From
operation 420, the routine 400 may proceed tooperation 430, where theconfiguration data 114 and/or thedeployment template 125 may be generated. As discussed above, theconfiguration data 114 and/or thedeployment template 125 may be generated by theprovisioning manager 122, thedeployment component 126, or some other computing device. -  From
operation 430, the routine 400 may proceed tooperation 440, where theresources 130 in theservice provider network 120 and/or other networks may be provisioned and/or instantiated. As discussed above, theprovisioning manager 122, thedeployment component 126, or some other component or computing device, may provision and/or instantiate theresources 130 using theconfiguration data 114 and/or thedeployment template 125 generated from thepicture 150. The routine 400 then proceeds to an end operation. -  
FIG. 5 is a flow diagram showing a routine 500 illustrating aspects of a mechanism disclosed herein for providing a user interface that may be used to interact withconfiguration data 114 that is associated with the infrastructure depicted in thepicture 150. As mentioned briefly above, although a UI is generally described below, other types of interfaces and/or mechanisms might be provided for allowing a user to view and/or modify theconfiguration data 114. -  The routine 500 may begin at
operation 510, where theconfiguration data 114 for the infrastructure may be displayed. For example, the UI 145 might be presented that displays theresources 130 and the connections between theresources 130 as determined from the infrastructure depicted from thepicture 150. In some examples, the UI 145 might include agraphical illustration 240 that shows a graphical representation of the identified resources and connections between the resources. -  From
operation 510, the routine 500 may flow tooperation 520, where user interface elements may be presented that allows a customer to interact with theconfiguration data 114 and/or thedeployment template 125. In particular, the UI 145 elements might provide functionality for allowing a customer, or some other authorized user, to configure parameters that are associated with thedifferent resources 130 specified by theconfiguration data 114. -  From
operation 520, the routine 500 may proceed tooperation 530, where UI elements may be provided for allowing a user to add, delete, and/or modifyresources 130 in theconfiguration data 114. For example, the customer might be permitted to add, delete, and/or modifyvirtual machine instances 172, firewalls, Internet gateways, load balancing devices, and/orother resources 130 in theconfiguration data 114. -  From
operation 530, the routine 500 may proceed tooperation 540, where a UI 145 element might be provided for allowing a customer to provision and deploy theresources 130 identified in theconfiguration data 114 in theservice provider network 120 and/or other networks. In this regard, it should be appreciated that functionality might be provided for allowing a user to specify other operational aspects not specifically mentioned above. Fromoperation 540, the routine 500 proceeds to an end operation. -  
FIG. 6 and the following description are intended to provide a brief, general description of a suitable computing environment in which the technologies described herein may be implemented. In particular,FIG. 6 is a system and network diagram that shows an illustrative operating environment that includes aservice provider network 120. As discussed above, theservice provider network 120 can providevirtual machine instances 172, other execution environments, and computingresources 130 on a permanent or an as-needed basis. -  The
computing resources 130 provided by theservice provider network 120 may include various types of resources, such as data processing resources, data storage resources, networking resources, data communication resources and the like. Each type ofcomputing resource 130 may be general-purpose or may be available in a number of specific configurations. For example, and as will be described in greater detail below,data processing resources 130 may be available as containers orvirtual machine instances 172 in a number of different configurations. Thevirtual machine instances 172 may be configured to execute applications, including Web servers, application servers, media servers, database servers and other types of applications.Data storage resources 130 may include file storage devices, block storage devices and the like. Each type or configuration of a virtual machine instance of acomputing resource 130 may be available in different sizes, such as large resources, consisting of many processors, large amounts of memory, and/or large storage capacity, and small resources consisting of fewer processors, smaller amounts of memory and/or smaller storage capacity. -  The
computing resources 130 provided by theservice provider network 120 are enabled in one implementation by one ormore data centers 604A-604N (which may be referred to herein singularly as “adata center 604” or collectively as “thedata centers 604”). Thedata centers 604 are facilities utilized to house and operate computer systems and associated components. Thedata centers 604 typically include redundant and backup power, communications, cooling and security systems. Thedata centers 604 might also be located in geographically disparate locations. One illustrative configuration for adata center 604 that implements some or all of the concepts and technologies disclosed herein for providing temporary access to resources in theservice provider network 120 will be described below with regard toFIG. 7 . -  The users and customers of the
service provider network 120 may access the computing resources provided by thedata centers 604 over a suitable data communications network, such as a Wide Area Network (“WAN”), as illustrated bynetwork 630. Although a WAN might be used, it should be appreciated that a local-area network (“LAN”), the Internet, or any other networking topology known in the art that connects thedata centers 604 to thecustomer computing devices 140 may be utilized. It should also be appreciated that combinations of such networks might also be utilized. -  
FIG. 7 is a computing system diagram that illustrates one configuration for adata center 604 that implements aspects of aservice provider network 120, including some or all of the concepts and technologies disclosed herein for using apicture 150 to generateconfiguration data 114 for an infrastructure depicted in thepicture 150. Theexample data center 604 shown inFIG. 7 includes several computers, such asservers 170A-170F (which may be referred to herein singularly as “a server computer 170” or in the plural as “the server computers 170”) for providingcomputing resources 130. The server computers 170 may be standard tower or rack-mount server computers configured appropriately for providing the computing resources described herein. In one configuration the server computers 170 are configured to execute the software products as described above. -  In one configuration, some of the computing resources 704 are the
virtual machine instances 172 and theresources 130. As known in the art, a virtual machine instance is an instance of a software implementation of a machine (i.e. a computer) that executes programs like a physical machine. Each of the server computers 170 may be configured to execute an instance manager (not shown) capable of instantiating and managingresources 130 andVM instances 172. In the case of virtual machine instances, for example, the instance manager might be a hypervisor or another type of program configured to enable the execution of multiplevirtual machine instances 172 on a single server computer 170, for example. -  It should be appreciated that although the technologies disclosed herein are described primarily in the context of virtual machine instances, other types of computing resources can be utilized with the concepts and technologies disclosed herein. For instance, the technologies disclosed herein might be utilized with hardware resources, data storage resources, data communications resources, networking resources, database resources and with other types of computing resources.
 -  The
data center 604 shown inFIG. 7 also includes aserver computer 170F reserved for executing software components for managing the operation of thedata center 604, the server computers 170,virtual machine instances 172, andother resources 130 within theservice provider network 120. Theserver computer 170F might also execute theprovisioning manager 122. Details regarding the operation of this component have been provided above. In this regard, it should be appreciated that while these components are illustrated as executing within theservice provider network 120, computing systems that are external to theservice provider network 120 might also be utilized to execute some or all of these components. Other configurations might also be utilized. -  In the
example data center 604 shown inFIG. 7 , an appropriate local area network (“LAN”) 705 is utilized to interconnect theserver computers 170A-170E and theserver computer 170F. TheLAN 705 is also connected to the network illustrated inFIG. 7 . It should be appreciated that the configuration and network topology illustrated inFIGS. 6 and 7 has been greatly simplified and that many more computing systems, networks and networking devices may be utilized to interconnect the various computing systems disclosed herein. Appropriate load balancing devices or software modules might also be utilized for balancing a load between each of thedata centers 604A-604N, between each of theserver computers 170A-170F in eachdata center 604 and betweenvirtual machine instances 172 and other types ofcomputing resources 130 provided by theservice provider network 120. -  It should be appreciated that the
data center 604 described inFIG. 7 is merely illustrative and that other implementations might also be utilized. Additionally, it should be appreciated that the functionality provided by these components might be implemented in software, hardware, or a combination of software and hardware. Other implementations should be apparent to those skilled in the art. -  
FIG. 8 shows an example computer architecture for acomputer 800 capable of executing program components for using apicture 150 to generateconfiguration data 114 for a depicted infrastructure in the manner described above. The computer architecture shown inFIG. 8 illustrates a conventional server computer, workstation, desktop computer, laptop, tablet, network appliance, personal digital assistant (“PDA”), e-reader, digital cellular phone, or other computing device, and may be utilized to execute any of the software components presented herein. For example, the computer architecture shown inFIG. 8 may be utilized to execute software components for performing operations as described above. The computer architecture shown inFIG. 8 might also be utilized to implement acustomer computing device 140, the server computers 170, theconfiguration service 144, or any other of the computing systems described herein. -  The
computer 800 includes abaseboard 802, or “motherboard,” which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication paths. In one illustrative configuration, one or more central processing units (“CPUs”) 804 operate in conjunction with achipset 806. TheCPUs 804 may be standard programmable processors that perform arithmetic and logical operations necessary for the operation of thecomputer 800. -  The
CPUs 804 perform operations by transitioning from one discrete, physical state to the next through the manipulation of switching elements that differentiate between and change these states. Switching elements may generally include electronic circuits that maintain one of two binary states, such as flip-flops and electronic circuits that provide an output state based on the logical combination of the states of one or more other switching elements, such as logic gates. These basic switching elements may be combined to create more complex logic circuits, including registers, adders-subtractors, arithmetic logic units, floating-point units and the like. -  The
chipset 806 provides an interface between theCPUs 804 and the remainder of the components and devices on thebaseboard 802. Thechipset 806 may provide an interface to aRAM 808, used as the main memory in thecomputer 800. Thechipset 806 may further provide an interface to a computer-readable storage medium such as a read-only memory (“ROM”) 810 or non-volatile RAM (“NVRAM”) for storing basic routines that help to startup thecomputer 800 and to transfer information between the various components and devices. TheROM 810 or NVRAM may also store other software components necessary for the operation of thecomputer 800. -  The
computer 800 may operate in a networked environment using logical connections to remote computing devices and computer systems through a network, such as thelocal area network 820. Thechipset 806 may include functionality for providing network connectivity through a network interface controller (“NIC”) 812, such as a gigabit Ethernet adapter. TheNIC 812 is capable of connecting thecomputer 800 to other computing devices over thelocal area network 820. It should be appreciated thatmultiple NICs 812 may be present in thecomputer 800, connecting the computer to other types of networks and remote computer systems. -  The
computer 800 may be connected to amass storage device 818 that provides non-volatile storage for the computer. Themass storage device 818 may store system programs, application programs, other program modules and data, which have been described in greater detail herein. Themass storage device 818 may be connected to thecomputer 800 through astorage controller 814 connected to thechipset 806. Themass storage device 818 may consist of one or more physical storage units. Thestorage controller 814 may interface with the physical storage units through a serial attached SCSI (“SAS”) interface, a serial advanced technology attachment (“SATA”) interface, a fiber channel (“FC”) interface, or other type of interface for physically connecting and transferring data between computers and physical storage units. -  The
computer 800 may store data on themass storage device 818 by transforming the physical state of the physical storage units to reflect the information being stored. The specific transformation of physical state may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the physical storage units, whether themass storage device 818 is characterized as primary or secondary storage and the like. -  For example, the
computer 800 may store information to themass storage device 818 by issuing instructions through thestorage controller 814 to alter the magnetic characteristics of a particular location within a magnetic disk drive unit, the reflective or refractive characteristics of a particular location in an optical storage unit, or the electrical characteristics of a particular capacitor, transistor, or other discrete component in a solid-state storage unit. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this description. Thecomputer 800 may further read information from themass storage device 818 by detecting the physical states or characteristics of one or more particular locations within the physical storage units. -  In addition to the
mass storage device 818 described above, thecomputer 800 may have access to other computer-readable storage media to store and retrieve information, such as program modules, data structures, or other data. It should be appreciated by those skilled in the art that computer-readable storage media is any available media that provides for the non-transitory storage of data and that may be accessed by thecomputer 800. -  By way of example, and not limitation, computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology. Computer-readable storage media includes, but is not limited to, RAM, ROM, erasable programmable ROM (“EPROM”), electrically-erasable programmable ROM (“EEPROM”), flash memory or other solid-state memory technology, compact disc ROM (“CD-ROM”), digital versatile disk (“DVD”), high definition DVD (“HD-DVD”), BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information in a non-transitory fashion.
 -  The
mass storage device 818 may store anoperating system 830 utilized to control the operation of thecomputer 800. In one configuration, the operating system comprises the LINUX operating system. In another configuration, the operating system comprises the WINDOWS® SERVER operating system from MICROSOFT Corporation. In other configurations, the operating system may comprise the UNIX operating system. It should be appreciated that other operating systems may also be utilized. Themass storage device 818 may store other system or application programs and data utilized by thecomputer 800, such as components that include theprovisioning manager 122, theconfiguration data 114 and/or any of the other software components and data described above. Themass storage device 818 might also store other programs and data not specifically identified herein. -  In one configuration, the
mass storage device 818 or other computer-readable storage media is encoded with computer-executable instructions which, when loaded into thecomputer 800, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the technologies described herein. These computer-executable instructions transform thecomputer 800 by specifying how theCPUs 804 transition between states, as described above. In one configuration, thecomputer 800 has access to computer-readable storage media storing computer-executable instructions which, when executed by thecomputer 800, perform the various routines described above with regard toFIGS. 3-5 . Thecomputer 800 might also include computer-readable storage media for performing any of the other computer-implemented operations described herein. -  The
computer 800 may also include one or more input/output controllers 816 for receiving and processing input from a number of input devices, such as a keyboard, a mouse, a touchpad, a touch screen, an electronic stylus, or other type of input device. Similarly, the input/output controller 816 may provide output to a display, such as a computer monitor, a flat-panel display, a digital projector, a printer, a plotter, or other type of output device. It will be appreciated that thecomputer 800 may not include all of the components shown inFIG. 8 , may include other components that are not explicitly shown inFIG. 8 , or may utilize an architecture completely different than that shown inFIG. 8 . -  Based on the foregoing, it should be appreciated that technologies for using a
picture 150 of an infrastructure to generateconfiguration data 114 usable in aservice provider network 120 have been presented herein. Moreover, although the subject matter presented herein has been described in language specific to computer structural features, methodological acts and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and media are disclosed as example forms of implementing the claims. -  The subject matter described above is provided by way of illustration only and should not be construed as limiting. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. Various modifications and changes may be made to the subject matter described herein without following the example configurations and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.
 
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| US16/285,082 US20190188185A1 (en) | 2014-09-29 | 2019-02-25 | Defining Software Infrastructure Using a Picture | 
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title | 
|---|---|---|---|
| US14/500,701 US10216752B1 (en) | 2014-09-29 | 2014-09-29 | Defining software infrastructure using a picture | 
| US16/285,082 US20190188185A1 (en) | 2014-09-29 | 2019-02-25 | Defining Software Infrastructure Using a Picture | 
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| US14/500,701 Continuation US10216752B1 (en) | 2014-09-29 | 2014-09-29 | Defining software infrastructure using a picture | 
Publications (1)
| Publication Number | Publication Date | 
|---|---|
| US20190188185A1 true US20190188185A1 (en) | 2019-06-20 | 
Family
ID=65410929
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| US14/500,701 Active 2035-07-04 US10216752B1 (en) | 2014-09-29 | 2014-09-29 | Defining software infrastructure using a picture | 
| US16/285,082 Abandoned US20190188185A1 (en) | 2014-09-29 | 2019-02-25 | Defining Software Infrastructure Using a Picture | 
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date | 
|---|---|---|---|
| US14/500,701 Active 2035-07-04 US10216752B1 (en) | 2014-09-29 | 2014-09-29 | Defining software infrastructure using a picture | 
Country Status (1)
| Country | Link | 
|---|---|
| US (2) | US10216752B1 (en) | 
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| WO2021021281A1 (en) * | 2019-07-31 | 2021-02-04 | Oracle International Corporation | Provisioning using computer vision | 
| US11522812B1 (en) * | 2020-10-30 | 2022-12-06 | Splunk Inc. | Workflows for configuring the ingestion of user data from a service provider network into a data intake and query system | 
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| US6112015A (en) * | 1996-12-06 | 2000-08-29 | Northern Telecom Limited | Network management graphical user interface | 
| US20060062475A1 (en) * | 2004-09-21 | 2006-03-23 | Microsoft Corporation | System and method for connected container recognition of a hand-drawn chart in ink input | 
| US20060195407A1 (en) * | 1999-04-19 | 2006-08-31 | Definiens Ag | Situation dependent operation of a semantic network machine | 
| US20120158806A1 (en) * | 2010-12-20 | 2012-06-21 | Verizon Patent And Licensing Inc. | Provisioning network-attached storage | 
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| US6314194B1 (en) * | 1995-07-26 | 2001-11-06 | The United States Of America As Represented By The Secretary Of The Army | Method for generating computer aided design programming circuit designs from scanned images of the design | 
| US6697087B1 (en) * | 1999-05-05 | 2004-02-24 | Microsoft Corporation | Updating diagrams of dynamic representational Models of dynamic systems | 
| US20040205014A1 (en) * | 2003-04-10 | 2004-10-14 | Jack Kaltner | System for preparing construction project bids | 
| JP5613040B2 (en) * | 2010-12-24 | 2014-10-22 | オリンパス株式会社 | MEMORY, IMAGE GENERATION DEVICE, NETWORK SETTING METHOD, AND NETWORK SETTING INFORMATION RECORDING METHOD | 
| US10325383B2 (en) * | 2013-10-23 | 2019-06-18 | Honeywell International Inc. | Automated construction of diagnostic fault model from network diagram | 
- 
        2014
        
- 2014-09-29 US US14/500,701 patent/US10216752B1/en active Active
 
 - 
        2019
        
- 2019-02-25 US US16/285,082 patent/US20190188185A1/en not_active Abandoned
 
 
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| US6112015A (en) * | 1996-12-06 | 2000-08-29 | Northern Telecom Limited | Network management graphical user interface | 
| US20060195407A1 (en) * | 1999-04-19 | 2006-08-31 | Definiens Ag | Situation dependent operation of a semantic network machine | 
| US20060062475A1 (en) * | 2004-09-21 | 2006-03-23 | Microsoft Corporation | System and method for connected container recognition of a hand-drawn chart in ink input | 
| US20120158806A1 (en) * | 2010-12-20 | 2012-06-21 | Verizon Patent And Licensing Inc. | Provisioning network-attached storage | 
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title | 
|---|---|---|---|---|
| WO2021021281A1 (en) * | 2019-07-31 | 2021-02-04 | Oracle International Corporation | Provisioning using computer vision | 
| US11012295B2 (en) | 2019-07-31 | 2021-05-18 | Oracle International Corporation | Provisioning using computer vision | 
| US11522812B1 (en) * | 2020-10-30 | 2022-12-06 | Splunk Inc. | Workflows for configuring the ingestion of user data from a service provider network into a data intake and query system | 
| US11799798B1 (en) * | 2020-10-30 | 2023-10-24 | Splunk Inc. | Generating infrastructure templates for facilitating the transmission of user data into a data intake and query system | 
Also Published As
| Publication number | Publication date | 
|---|---|
| US10216752B1 (en) | 2019-02-26 | 
Similar Documents
| Publication | Publication Date | Title | 
|---|---|---|
| US10063427B1 (en) | Visualizing and interacting with resources of an infrastructure provisioned in a network | |
| US10142173B2 (en) | Automated creation of private virtual networks in a service provider network | |
| AU2014262679B2 (en) | User-influenced placement of virtual machine instances | |
| US9417892B2 (en) | Configuration command template creation assistant using cross-model analysis to identify common syntax and semantics | |
| US8751620B2 (en) | Validating deployment patterns in a networked computing environment | |
| CN113645071B (en) | Cluster deployment method, system, medium and electronic terminal | |
| US10791021B1 (en) | Storage and retrieval of parameters for infrastructure-as-code computing services | |
| WO2016153881A1 (en) | Executing commands within virtual machine instances | |
| US10367705B1 (en) | Selecting and configuring metrics for monitoring | |
| US10503341B2 (en) | Usability analysis for user interface based systems | |
| US11113186B1 (en) | Testing and publishing of resource handlers in a cloud environment | |
| US10678926B2 (en) | Identifying security risks in code using security metric comparison | |
| US11693649B2 (en) | Autonomous Kubernetes operator creation and management | |
| US20130204918A1 (en) | Computing environment configuration and initialization | |
| CA3159291A1 (en) | Virtual workspace experience visualization and optimization | |
| US10476766B1 (en) | Selecting and configuring metrics for monitoring | |
| US20190188185A1 (en) | Defining Software Infrastructure Using a Picture | |
| US10917478B2 (en) | Cloud enabling resources as a service | |
| US10241815B2 (en) | Tag inheritance | |
| US10657230B2 (en) | Analysis of output files | |
| US11178216B2 (en) | Generating client applications from service model descriptions | |
| US9672138B1 (en) | Enabling communication between an application developer and an application tester | |
| US20230393836A1 (en) | Method and apparatus for updating cloud platform | |
| US10305733B1 (en) | Defining software infrastructure using a physical model | |
| US10095596B1 (en) | Executing integration tests in a distributed load and performance evaluation framework | 
Legal Events
| Date | Code | Title | Description | 
|---|---|---|---|
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION  | 
        |
| AS | Assignment | 
             Owner name: AMAZON TECHNOLOGIES, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LICHTENBERG, KYLE ADAM;JONES II, THOMAS PRICE;SIGNING DATES FROM 20141028 TO 20150212;REEL/FRAME:049129/0804  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: NON FINAL ACTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: ADVISORY ACTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: NON FINAL ACTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: FINAL REJECTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: ADVISORY ACTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: NON FINAL ACTION MAILED  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER  | 
        |
| STPP | Information on status: patent application and granting procedure in general | 
             Free format text: FINAL REJECTION MAILED  | 
        |
| STCB | Information on status: application discontinuation | 
             Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION  |