US9270543B1 - Application centered network node selection - Google Patents

Application centered network node selection Download PDF

Info

Publication number
US9270543B1
US9270543B1 US13/791,966 US201313791966A US9270543B1 US 9270543 B1 US9270543 B1 US 9270543B1 US 201313791966 A US201313791966 A US 201313791966A US 9270543 B1 US9270543 B1 US 9270543B1
Authority
US
United States
Prior art keywords
node
computing
software application
computing nodes
nodes
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.)
Expired - Fee Related, expires
Application number
US13/791,966
Inventor
Nathan J. Giardina
David S. Tyree
Robert Hucik
Beau Croteau
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
CA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CA Inc filed Critical CA Inc
Priority to US13/791,966 priority Critical patent/US9270543B1/en
Assigned to CA, INC. reassignment CA, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HUCIK, ROBERT, CROTEAU, BEAU, GIARDINA, NATHAN J., TYREE, DAVID S.
Application granted granted Critical
Publication of US9270543B1 publication Critical patent/US9270543B1/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/30Managing network names, e.g. use of aliases or nicknames

Definitions

  • the present disclosure relates generally to software applications in cloud computing networks.
  • Cloud computing provides for applications to execute on any number or arrangement of computers or network nodes.
  • Some systems allow a user or administrator to request a network node for use in executing an application.
  • Existing cloud environments require a network configuration of a node, such as an internet protocol (IP) address or domain name service (DNS) name, to be specified in order to proceed with node selection of for installation or execution of an application.
  • IP internet protocol
  • DNS domain name service
  • FIG. 1 shows a network cloud 102 with multiple servers labeled node 1 to node 5 ( 110 - 150 ).
  • Node interface 160 is concerned with identifying the specific node to be utilized by an application, including network configuration information such as IP address and DNS name. Such node specificity adds a level of complexity for users.
  • Embodiments for application centered node selection are disclosed.
  • a plurality of nodes of a network having node attributes for executing applications are identified.
  • Each node is linked to one or more applications based on one or more node attributes identified for the respective node.
  • Each node linked to a linked application has node attributes for executing the linked application.
  • a node request is received for a target application.
  • the node request may be independent of a node configuration, such as an IP address or DNS name.
  • a node linked to the target application is selected and provided.
  • the target application is executed by the selected node.
  • Updated node attributes of the node may be determined upon detecting a change in a node attribute of a node.
  • the updated node attributes are broadcast to other nodes.
  • broadcasts of node attributes are received from nodes of the plurality of nodes.
  • Links of nodes to applications based on the node attributes are stored.
  • the nodes may be queried for node attributes linked to applications.
  • a respective node may be determined to be capable of executing an application based on a query result indicating the respective node has one or more node attributes for executing the application.
  • a node with an open TCP/IP port is linked to a database used for web applications.
  • a node with software for creating an instance of an application server is linked to the application server.
  • a node with resources associated with a unique application identifier is linked to an application corresponding to the unique application identifier.
  • a resource attribute may be received and a node with node attributes may be selected corresponding to the resource attribute.
  • a customer name may be received and a node may be selected among nodes linked to applications associated with the customer name.
  • Some other embodiments are directed to related methods, systems and computer program products.
  • FIG. 1 illustrates a system for selecting a node for an application
  • FIG. 2 illustrates a system for application centered node selection, according to an embodiment
  • FIG. 3 illustrates a system for application centered node selection
  • FIG. 4 illustrates a conceptual view of application centered node selection
  • FIG. 5 further illustrates a conceptual view of application centered node selection
  • FIG. 6 further illustrates a system for application centered node selection, according to an embodiment
  • FIG. 7 illustrates a process for application centered node selection, according to an embodiment
  • FIG. 8 illustrates another process for application centered node selection
  • FIG. 9 illustrates a further process for application centered node selection
  • FIG. 10 illustrates another process for application centered node selection
  • FIG. 11 is a block diagram of a computing device in which embodiments can be implemented.
  • aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented as entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or combined software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
  • an application can learn the capabilities needed for the application and the nodes capable of handling the application.
  • a node having those capabilities can be selected and provided. This way the user or administrator can be focused on the application and not on the specific nodes and the various capabilities of the specific nodes.
  • FIG. 2 illustrates an exemplary system 200 of a computing environment involving network cloud 102 .
  • Network cloud 102 may include any combination of multiple computing devices, including, but not limited to servers, mainframe, personal computer (PC), handheld computers, mobile computers, tablet, laptops, set top boxes, game consoles or any other appropriate computer hardware.
  • Such computing devices may include computing resources such as a central processing unit (CPU); networking controllers; communication controllers; a display unit; a program and data storage device; memory controllers; input devices (such as a keyboard, a mouse, etc.) and output devices such as printers.
  • the CPU may be any conventional processor, such as the AMD AthlonTM 64, Intel® CoreTM Duo, or ARM® processor sets.
  • Network cloud 102 may also include nodes that are virtualized instances of computers.
  • Network cloud 102 shows nodes 1 - 5 ( 110 - 150 ). Although some embodiments of nodes 110 - 150 may be configured to operate as a computer server, nodes 110 - 150 are not limited thereto and can be configured to provide other functionality, such as data processing, communications routing, etc. Nodes 110 - 150 may be network cloud 102 or a portion of network cloud 102 . Nodes 110 - 150 may be securely associated with one another through a virtual private network (VPN) or any other grouping or configuration that identifies the nodes as available resources to a user.
  • VPN virtual private network
  • Nodes 110 - 150 are communicatively coupled in network cloud 102 , which may be part of a larger communicate network.
  • Network cloud 102 facilitates wireless or wired communication, and may communicate using, for example, IP packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses.
  • Network cloud 102 may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANS), wide area networks (WANs), a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations.
  • Application manager 210 Users or administrators may use application manager 210 to install, execute or otherwise handle applications.
  • An application may be chosen for installation or execution on nodes of cloud network 102 . No network configuration is required in a request for resources to install or execute the application.
  • Application manager 210 is aware of the capabilities of nodes 110 - 150 and will select one or more of nodes 110 - 150 for the application based on nodes that have indicated resources or attributes that are capable of handling the application.
  • Application manager 210 is a web application or website hosted on each of nodes 110 - 150 . Nodes 110 - 150 , or application manager 210 on each of nodes 110 - 150 , may be aware of the capabilities of each of the other nodes.
  • Each node may have certain attributes.
  • node 110 may have node attributes 110 A and 110 B and nodes 120 - 150 may have node attributes 120 A- 150 B.
  • Attributes may include resources or information that corresponds with specific applications. Attributes may be capabilities for handling applications. Capabilities may include computing device configurations, network configurations or software necessary for handling one or more applications. Examples of such capabilities may include, but are not limited to open source or proprietary databases, port configurations, and software implementations such as application servers, web servers or other related software for creating server instances. Capabilities may also include hardware features and functionality, CPU architecture, operating system versions, and available resources such as disk space, memory and network connectivity. In some cases, attributes may include customer names and/or customer specific applications.
  • Node attributes 110 A to 150 B of nodes 110 - 150 may be identified by application manager 210 . These attributes may be determined by querying nodes of cloud network 102 and analyzing query results, according to some embodiments. Queries may be periodic or event based. Queries may be directed in a general broadcast to all associated nodes or direct to a specific node or specific set of nodes. Queries may request all node attribute, node, network configuration and software configuration information or only a subset of information. Queries for a specific node attribute may be made.
  • each node broadcasts its node attributes to application manager 210 or other nodes. In some cases, this may be performed using multicast DNS (mDNS).
  • Node attributes may be broadcast when a node changes its node attributes.
  • a new node entering cloud network 102 broadcasts its node attributes upon arrival or inclusion in the nodes available for selection by application manager 210 .
  • FIG. 3 shows system diagram 300 with new node 6 310 joining nodes 110 - 150 in network cloud 102 .
  • Node 6 310 has node attributes 310 A and 310 B. According to this embodiment, node 6 310 broadcasts node attributes 310 A and 310 B to nodes 110 - 150 .
  • Application manager 210 may also receive this broadcast, record node attributes 310 A and 310 B and link them to corresponding applications.
  • node attributes of nodes 110 - 150 and 310 may be identified as attributes that provide for the installation and execution of application. Each node may then be linked to applications based on node attributes identified for the respective node. Each node linked to an application will have node attributes for executing the linked application. One or more nodes may execute an instance of a certain application or type of application. The same application, or separate instances of the same application, can be executed by any nodes that are capable of executing the application. This allows for more real time flexibility of node resources and selection.
  • Application manager 210 may represent nodes 110 - 150 and 310 of cloud network 102 to a user or administrator in an application centric manner. Network configurations or identification of specific nodes and their network locations will not be necessary in a user resource request. For example, rather than viewing nodes as in FIG. 1 , a user or administrator may be able to view network cloud 102 conceptually as having resources for different types of applications. For example, FIG. 4 shows a conceptual view 400 of network cloud 102 resources.
  • Resources available to a user through application manager 210 include nodes for a business application 410 , nodes for a collaboration application 420 and nodes for a web server creation application 430 . In this case, only an application needs to be specified and a node with attributes corresponding to the application will be provided.
  • application manager 210 may receive a request for a node or resources to install and/or execute the “business application,” as shown in the window of application manager 210 in FIG. 4 .
  • This request may be independent of a network configuration of a specific node. Rather than identification of a node and its network location, only the application is necessary from the user to receive a node.
  • a node is selected from business application nodes 410 and provided for use by application manager 210 . The business application is then installed or executed using the selected node.
  • the user request is based upon application centric conceptual view 400 . Because known node attributes of the nodes allow for linking of nodes to applications, node 1 110 , node 2 120 and node 5 150 are linked to the business application. Upon a request for a node linked to the business application, node 1 110 , node 2 120 or node 5 150 may be selected for the business application.
  • many nodes may have similar node attributes and may link to more than one application.
  • node 2 120 and node 5 150 are linked to both the business application and the web server creation application, as shown by the business application nodes 410 and web server creation application nodes 430 .
  • node 1 110 has node attributes for only the business application.
  • node 3 130 and node 6 310 have node attributes that link the nodes to only the collaboration application as shown by the collaboration application nodes 420 .
  • the nodes are multi-tenant and separate instances of applications may be created in a single node or application cloud.
  • FIG. 6 shows a more detailed view of application manager 210 .
  • Application manager 210 may include node attribute identifier 610 , application linker 620 and node selector 630 .
  • Application manager 210 and its components are implemented with a computing device.
  • Node attribute identifier 610 is configured to identify nodes of a network with node attributes for executing applications on the plurality of nodes.
  • Application linker 620 is configured to link each node of the plurality of nodes to applications based on the node attributes identified for the respective node.
  • Each node linked to a linked application has node attributes for executing the linked application.
  • Node selector 630 may be configured to receive a node request for a target application. The node request is independent of a node configuration. Node selector 630 may then select a node linked to the target application.
  • the selected node may be provided. When a selected node is provided, the selected node is made available for execution of the target application. This may include providing information identifying the node to a user, computer system, application manager and/or node manager. This may also include automatically proceeding with installation and/or execution on the selected node. Providing may include creating and/or associating a node configuration with an application. In other cases, this may include displaying a node configuration for the selected node to a user. Providing the selected node may include other operations that allow any combination of application life cycle stages to proceed on the selected node.
  • the target application is executed by the selected node.
  • Each of these components may perform their respective functions, as described earlier and according to the processes described below in FIGS. 7-10 .
  • FIG. 7 shows a process for application centered node selection, according to an embodiment.
  • network nodes with node attributes for executing applications on the nodes are identified.
  • Node attributes may include capabilities and resources necessary for executing specific applications. Examples of node attributes may include databases, software, code bases, server configurations, physical or virtual processing power, quality of service (QoS) metrics, port configurations, or any other capability or resource for applications.
  • QoS quality of service
  • Some identified node attributes may signify other node attributes for linked applications.
  • an open TCP/IP port such as port 3306
  • a server has Java® and the tomcat-create-instance executable, it can be considered to have node attributes corresponding to a capability for Tomcat® software.
  • Each node may be linked to applications based on node attributes identified for a respective node, wherein each node linked to a linked application has node attributes for executing the linked application (block 704 ).
  • Node attributes can be predefined by for use by certain applications. Links may be created and modified dynamically. Node attributes may change for some servers as certain software or applications are installed or removed on server nodes. In other cases, server nodes may go offline for maintenance, overcapacity or other reasons. New server nodes may become available. According to a further embodiment, each of these node attribute updates may be determined upon detection of a change ( FIG. 8 block 802 ). Such node attribute updates may be broadcast to other nodes ( FIG. 8 block 804 ).
  • nodes within cloud network 102 and/or application manager 210 may receive these broadcasts ( FIG. 9 block 902 ). Links of nodes to applications can be formed and stored based on the node attributes ( FIG. 9 block 904 ).
  • nodes may be queried for node attributes linked to applications ( FIG. 10 block 1002 ).
  • Nodes may be queried by application manager 210 on a node or other nodes.
  • a respective node may be determined to be capable of executing an application based on a query result indicating the respective node has node attributes for executing the application ( FIG. 10 block 1004 ).
  • a node with software for creating an instance of an application server may be linked to the application server, according to an embodiment.
  • a node with resources associated with a unique application identifier or an application key (appKey) may be linked to an application corresponding to the application identifier.
  • Application identifiers may be used to uniquely identify applications and instances of applications, Application identifiers isolate or shield applications from other applications. Application identifiers also allow applications to find resources by type or name via DNS.
  • a node request is received for a target application.
  • the node request is independent of a node configuration. No network location, IP address, server name or DNS name is asked of the user, entered by the user or selected by the user.
  • the request asks that one or more nodes be provided so that a user may install or execute the target application on the one or more nodes.
  • the request may provide one or more virtual machines of the one or more nodes. In many cases, providing the name or reference of the target application is all that is necessary to proceed with node selection for the target application.
  • a node linked to the target application is selected ( FIG. 7 block 708 ).
  • a node may be selected from a number of qualifying nodes having sufficient node attributes. The node that is selected may be selected based on a number of factors, including but not limited to, CPU availability, memory availability, physical location, virtual machine configuration, IP addresses, software version, or other optimization considerations. Node selection may also be sequential or random. Node selection may not be limited a single node and may include multiple nodes.
  • the selected node is provided (block 710 ).
  • the target application is executed by the selected node.
  • a target application may be installed on a node or installed to some degree on the node. Node selection then results in execution of the target application on the node. In other cases, node selection may result in installation, back up, restoring, starting, stopping, removal of an application on the selected node or any other application lifecycle events.
  • the selected node having been determined to be linked to a target application, can perform as necessary to ensure that the target application is utilized with the selected node.
  • node attributes may include a customer name. If the customer name is specified, nodes linked to the customer name may be provided. Such customer to node links may be formed based on one or more applications associated with or used by a customer being linked to a node. In some cases, node to customer links may require two or more node to application links relevant to a customer.
  • a named resource or node attribute may be specified. In this case, a node with the named resource is provided. In yet another embodiment, if a QoS metric is requested, a node with the specified QoS metric is provided. Further embodiments may include selection of nodes linked to application based on application centered or customer centered requests.
  • the embodiments described above provide for real time information for node selection within a dynamic network or system, where nodes, node attributes and network configurations change but the request may remain simple and application focused.
  • resources may be reallocated and moved about as needed while providing a more universal model.
  • Specific knowledge of the machines in network cloud 102 is removed from the request and management processes. Instead, the focus may be on applications, resource types and QoS metrics.
  • resources may be reallocated and moved about as needed while providing a more universal model.
  • the functionality of application manager 210 may be implemented in any combination of nodes 110 - 150 or node 310 of cloud network 102 , as shown in FIG. 5 .
  • the functionality may also be implemented in a separate node. In that case, requests may be made through a node and any of the nodes may be selected for the target application without a separate computing device providing the functionality of application manager 210 .
  • RedisTM data stores may be used for configuration data. KnifeTM command tools may be used to create nodes and ChefTM software may be used to install the functionality of application manager 210 on a computing device or node.
  • nodes 110 - 150 and 310 may have agents that work in coordination with application manager 210 or implement the functionality of application manager 210 .
  • Node.js® software may be used to implement these node agents.
  • RESTful APIs are used for internode connections.
  • application manager 210 may be provided through a browser on a node or computing device.
  • the browser may be any commonly used browser, including any multithreading browser.
  • Application manager 210 may be software in a browser or software displayed by the browser.
  • Application manager 210 may be software hosted by a server and served to client devices over networks, including cloud network 102 .
  • aspects of the disclosure may be embodied as a method, data processing system, and/or computer program product.
  • embodiments may take the form of a computer program product on a tangible computer readable storage medium having computer program code embodied in the medium that can be executed by a computing device,
  • FIG. 11 is an example computer system 1100 in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code.
  • the components of nodes 110 - 150 , node 310 , application 210 or any other components of systems 200 - 600 or methods 700 - 1000 may be implemented in one or more computer devices 1100 using hardware, software implemented with hardware, firmware, tangible computer-readable storage media having instructions stored thereon, or a combination thereof and may be implemented in one or more computer systems or other processing systems.
  • Components and methods in FIGS. 2-10 may be embodied in any combination of hardware and software.
  • Computing device 1100 may include one or more processors 1102 , one or more non-volatile storage mediums 1104 , one or more memory devices 1106 , a communication infrastructure 1108 , a display screen 1110 and a communication interface 1112 .
  • Computing device 1100 may also have networking or communication controllers, input devices (keyboard, a mouse, touch screen, etc.) and output devices (printer or display).
  • Processor(s) 1102 are configured to execute computer program code from memory devices 1104 or 1106 to perform at least some of the operations and methods described herein, and may be any conventional or special purpose processor, including, but not limited to, digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC), and multi-core processors.
  • DSP digital signal processor
  • FPGA field programmable gate array
  • ASIC application specific integrated circuit
  • multi-core processors multi-core processors.
  • GPU 1114 is a specialized processor that executes instructions and programs, selected for complex graphics and mathematical operations, in parallel.
  • Non-volatile storage 1104 may include one or more of a hard disk drive, flash memory, and like devices that may store computer program instructions and data on computer-readable media.
  • One or more of non-volatile storage device 1104 may be a removable storage device.
  • Memory devices 1106 may include one or more volatile memory devices such as but not limited to, random access memory.
  • Communication infrastructure 1108 may include one or more device interconnection buses such as Ethernet, Peripheral Component Interconnect (PCI), and the like.
  • PCI Peripheral Component Interconnect
  • computer instructions are executed using one or more processors 1102 and can be stored in non-volatile storage medium 1104 or memory devices 1106 .
  • Display screen 1110 allows results of the computer operations to be displayed to a user or an application developer.
  • Communication interface 1112 allows software and data to be transferred between computer system 1100 and external devices.
  • Communication interface 1112 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like.
  • Software and data transferred via communication interface 1112 may be in the form of signals, which may be electronic, electromagnetic, optical, or other signals capable of being received by communication interface 1112 . These signals may be provided to communication interface 1112 via a communications path.
  • the communications path carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels.
  • a host operating system functionally interconnects any computing device or hardware platform with users and is responsible for the management and coordination of activities and the sharing of the computer resources.
  • the computer readable media may be a computer readable signal medium or a computer readable storage medium.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
  • a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
  • a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
  • Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, JavaScript, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computer environment or offered as a service such as a Software as a Service (SaaS).
  • LAN local area network
  • WAN wide area network
  • SaaS Software as a Service
  • These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • the computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

Abstract

Methods, systems and computer program products for application centered node selection are provided. A plurality of nodes of a network having node attributes for executing applications are identified. Each node of the plurality of nodes is linked to an application based on a node attribute identified for the respective node. Each node linked to a linked application has a corresponding node attribute for executing the linked application. A node request is received for a target application. The node request may be independent of a node configuration, such as an IP address or DNS name. A node linked to the target application is selected and provided. The target application is executed by the selected node.

Description

BACKGROUND
The present disclosure relates generally to software applications in cloud computing networks.
Cloud computing provides for applications to execute on any number or arrangement of computers or network nodes. Some systems allow a user or administrator to request a network node for use in executing an application. Existing cloud environments require a network configuration of a node, such as an internet protocol (IP) address or domain name service (DNS) name, to be specified in order to proceed with node selection of for installation or execution of an application. For example, FIG. 1 shows a network cloud 102 with multiple servers labeled node 1 to node 5 (110-150). Node interface 160 is concerned with identifying the specific node to be utilized by an application, including network configuration information such as IP address and DNS name. Such node specificity adds a level of complexity for users.
BRIEF SUMMARY
Embodiments for application centered node selection are disclosed. According to an aspect, a plurality of nodes of a network having node attributes for executing applications are identified. Each node is linked to one or more applications based on one or more node attributes identified for the respective node. Each node linked to a linked application has node attributes for executing the linked application. A node request is received for a target application. The node request may be independent of a node configuration, such as an IP address or DNS name. A node linked to the target application is selected and provided. The target application is executed by the selected node.
Updated node attributes of the node may be determined upon detecting a change in a node attribute of a node. The updated node attributes are broadcast to other nodes.
Also, broadcasts of node attributes are received from nodes of the plurality of nodes. Links of nodes to applications based on the node attributes are stored. The nodes may be queried for node attributes linked to applications. A respective node may be determined to be capable of executing an application based on a query result indicating the respective node has one or more node attributes for executing the application.
In some cases, a node with an open TCP/IP port is linked to a database used for web applications. In other cases, a node with software for creating an instance of an application server is linked to the application server.
According to an aspect, a node with resources associated with a unique application identifier is linked to an application corresponding to the unique application identifier. A resource attribute may be received and a node with node attributes may be selected corresponding to the resource attribute. A customer name may be received and a node may be selected among nodes linked to applications associated with the customer name.
Some other embodiments are directed to related methods, systems and computer program products.
It is noted that aspects described with respect to one embodiment may be incorporated in different embodiments although not specifically described relative thereto. That is, all embodiments and/or features of any embodiments can be combined in any way and/or combination. Moreover, other systems, methods, and/or computer program products according to embodiments will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional systems, methods, and/or computer program products be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.
BRIEF DESCRIPTION OF THE DRAWINGS
Aspects of the present disclosure are illustrated by way of example and are not limited by the accompanying figures with like references indicating like elements.
FIG. 1 illustrates a system for selecting a node for an application;
FIG. 2 illustrates a system for application centered node selection, according to an embodiment;
FIG. 3 illustrates a system for application centered node selection;
FIG. 4 illustrates a conceptual view of application centered node selection;
FIG. 5 further illustrates a conceptual view of application centered node selection;
FIG. 6 further illustrates a system for application centered node selection, according to an embodiment;
FIG. 7 illustrates a process for application centered node selection, according to an embodiment;
FIG. 8 illustrates another process for application centered node selection;
FIG. 9 illustrates a further process for application centered node selection;
FIG. 10 illustrates another process for application centered node selection; and
FIG. 11 is a block diagram of a computing device in which embodiments can be implemented.
DETAILED DESCRIPTION
Embodiments of the present disclosure will be described more fully hereinafter with reference to the accompanying drawings. Other embodiments may take many different forms and should not be construed as limited to the embodiments set forth herein. Like numbers refer to like elements throughout.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting to other embodiments. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes” and/or “including” when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
As will be appreciated by one skilled in the art, aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented as entirely hardware, entirely software (including firmware, resident software, micro-code, etc.) or combined software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
Existing cloud environments require a network configuration, such as an IP address or DNS name of a node, to be specified in order to proceed with installation or execution of an application on the specified node. This is an extra level of complexity and sometimes another hurdle for an application user or system administrator. A user may have an application in mind and would just like a straightforward way to execute the application within a large and dynamic network of resources in the cloud.
Rather than focusing on a node and its network configuration, an application can learn the capabilities needed for the application and the nodes capable of handling the application. A node having those capabilities can be selected and provided. This way the user or administrator can be focused on the application and not on the specific nodes and the various capabilities of the specific nodes.
FIG. 2 illustrates an exemplary system 200 of a computing environment involving network cloud 102. Network cloud 102 may include any combination of multiple computing devices, including, but not limited to servers, mainframe, personal computer (PC), handheld computers, mobile computers, tablet, laptops, set top boxes, game consoles or any other appropriate computer hardware. Such computing devices may include computing resources such as a central processing unit (CPU); networking controllers; communication controllers; a display unit; a program and data storage device; memory controllers; input devices (such as a keyboard, a mouse, etc.) and output devices such as printers. The CPU may be any conventional processor, such as the AMD Athlon™ 64, Intel® Core™ Duo, or ARM® processor sets. Network cloud 102 may also include nodes that are virtualized instances of computers.
Network cloud 102 shows nodes 1-5 (110-150). Although some embodiments of nodes 110-150 may be configured to operate as a computer server, nodes 110-150 are not limited thereto and can be configured to provide other functionality, such as data processing, communications routing, etc. Nodes 110-150 may be network cloud 102 or a portion of network cloud 102. Nodes 110-150 may be securely associated with one another through a virtual private network (VPN) or any other grouping or configuration that identifies the nodes as available resources to a user.
Nodes 110-150 are communicatively coupled in network cloud 102, which may be part of a larger communicate network. Network cloud 102 facilitates wireless or wired communication, and may communicate using, for example, IP packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network cloud 102 may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANS), wide area networks (WANs), a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations.
Users or administrators may use application manager 210 to install, execute or otherwise handle applications. An application may be chosen for installation or execution on nodes of cloud network 102. No network configuration is required in a request for resources to install or execute the application. Application manager 210 is aware of the capabilities of nodes 110-150 and will select one or more of nodes 110-150 for the application based on nodes that have indicated resources or attributes that are capable of handling the application. In various embodiments, Application manager 210 is a web application or website hosted on each of nodes 110-150. Nodes 110-150, or application manager 210 on each of nodes 110-150, may be aware of the capabilities of each of the other nodes.
Each node may have certain attributes. For example, node 110 may have node attributes 110A and 110B and nodes 120-150 may have node attributes 120A-150B. Attributes may include resources or information that corresponds with specific applications. Attributes may be capabilities for handling applications. Capabilities may include computing device configurations, network configurations or software necessary for handling one or more applications. Examples of such capabilities may include, but are not limited to open source or proprietary databases, port configurations, and software implementations such as application servers, web servers or other related software for creating server instances. Capabilities may also include hardware features and functionality, CPU architecture, operating system versions, and available resources such as disk space, memory and network connectivity. In some cases, attributes may include customer names and/or customer specific applications.
Node attributes 110A to 150B of nodes 110-150 may be identified by application manager 210. These attributes may be determined by querying nodes of cloud network 102 and analyzing query results, according to some embodiments. Queries may be periodic or event based. Queries may be directed in a general broadcast to all associated nodes or direct to a specific node or specific set of nodes. Queries may request all node attribute, node, network configuration and software configuration information or only a subset of information. Queries for a specific node attribute may be made.
In other embodiments, each node broadcasts its node attributes to application manager 210 or other nodes. In some cases, this may be performed using multicast DNS (mDNS). Node attributes may be broadcast when a node changes its node attributes. In other embodiments, a new node entering cloud network 102 broadcasts its node attributes upon arrival or inclusion in the nodes available for selection by application manager 210. For example, FIG. 3 shows system diagram 300 with new node 6 310 joining nodes 110-150 in network cloud 102. Node 6 310 has node attributes 310A and 310B. According to this embodiment, node 6 310 broadcasts node attributes 310A and 310B to nodes 110-150. Application manager 210 may also receive this broadcast, record node attributes 310A and 310B and link them to corresponding applications.
According to an embodiment, node attributes of nodes 110-150 and 310 may be identified as attributes that provide for the installation and execution of application. Each node may then be linked to applications based on node attributes identified for the respective node. Each node linked to an application will have node attributes for executing the linked application. One or more nodes may execute an instance of a certain application or type of application. The same application, or separate instances of the same application, can be executed by any nodes that are capable of executing the application. This allows for more real time flexibility of node resources and selection.
Application manager 210 may represent nodes 110-150 and 310 of cloud network 102 to a user or administrator in an application centric manner. Network configurations or identification of specific nodes and their network locations will not be necessary in a user resource request. For example, rather than viewing nodes as in FIG. 1, a user or administrator may be able to view network cloud 102 conceptually as having resources for different types of applications. For example, FIG. 4 shows a conceptual view 400 of network cloud 102 resources. Resources available to a user through application manager 210 include nodes for a business application 410, nodes for a collaboration application 420 and nodes for a web server creation application 430. In this case, only an application needs to be specified and a node with attributes corresponding to the application will be provided.
In the embodiment of conceptual view 400, application manager 210 may receive a request for a node or resources to install and/or execute the “business application,” as shown in the window of application manager 210 in FIG. 4. This request may be independent of a network configuration of a specific node. Rather than identification of a node and its network location, only the application is necessary from the user to receive a node. A node is selected from business application nodes 410 and provided for use by application manager 210. The business application is then installed or executed using the selected node.
The user request is based upon application centric conceptual view 400. Because known node attributes of the nodes allow for linking of nodes to applications, node 1 110, node 2 120 and node 5 150 are linked to the business application. Upon a request for a node linked to the business application, node 1 110, node 2 120 or node 5 150 may be selected for the business application.
In various embodiments, many nodes may have similar node attributes and may link to more than one application. For example, in diagram 500 of FIG. 5, node 2 120 and node 5 150 are linked to both the business application and the web server creation application, as shown by the business application nodes 410 and web server creation application nodes 430. By contrast, node 1 110 has node attributes for only the business application. Also, in this example, node 3 130 and node 6 310 have node attributes that link the nodes to only the collaboration application as shown by the collaboration application nodes 420. Note that in various embodiments, the nodes are multi-tenant and separate instances of applications may be created in a single node or application cloud.
According to an embodiment, FIG. 6 shows a more detailed view of application manager 210. Application manager 210 may include node attribute identifier 610, application linker 620 and node selector 630. Application manager 210 and its components are implemented with a computing device.
Node attribute identifier 610 is configured to identify nodes of a network with node attributes for executing applications on the plurality of nodes. Application linker 620 is configured to link each node of the plurality of nodes to applications based on the node attributes identified for the respective node. Each node linked to a linked application has node attributes for executing the linked application. Node selector 630 may be configured to receive a node request for a target application. The node request is independent of a node configuration. Node selector 630 may then select a node linked to the target application.
The selected node may be provided. When a selected node is provided, the selected node is made available for execution of the target application. This may include providing information identifying the node to a user, computer system, application manager and/or node manager. This may also include automatically proceeding with installation and/or execution on the selected node. Providing may include creating and/or associating a node configuration with an application. In other cases, this may include displaying a node configuration for the selected node to a user. Providing the selected node may include other operations that allow any combination of application life cycle stages to proceed on the selected node.
The target application is executed by the selected node. Each of these components may perform their respective functions, as described earlier and according to the processes described below in FIGS. 7-10.
FIG. 7 shows a process for application centered node selection, according to an embodiment. In block 702, network nodes with node attributes for executing applications on the nodes are identified. Node attributes may include capabilities and resources necessary for executing specific applications. Examples of node attributes may include databases, software, code bases, server configurations, physical or virtual processing power, quality of service (QoS) metrics, port configurations, or any other capability or resource for applications.
Some identified node attributes may signify other node attributes for linked applications. For example, an open TCP/IP port, such as port 3306, may signify a certain type of database, such as a MySQL® database, is available on the node for web applications. In another example, if a server has Java® and the tomcat-create-instance executable, it can be considered to have node attributes corresponding to a capability for Tomcat® software.
Each node may be linked to applications based on node attributes identified for a respective node, wherein each node linked to a linked application has node attributes for executing the linked application (block 704). Node attributes can be predefined by for use by certain applications. Links may be created and modified dynamically. Node attributes may change for some servers as certain software or applications are installed or removed on server nodes. In other cases, server nodes may go offline for maintenance, overcapacity or other reasons. New server nodes may become available. According to a further embodiment, each of these node attribute updates may be determined upon detection of a change (FIG. 8 block 802). Such node attribute updates may be broadcast to other nodes (FIG. 8 block 804).
According to another embodiment, nodes within cloud network 102 and/or application manager 210 may receive these broadcasts (FIG. 9 block 902). Links of nodes to applications can be formed and stored based on the node attributes (FIG. 9 block 904).
According to an embodiment, nodes may be queried for node attributes linked to applications (FIG. 10 block 1002). Nodes may be queried by application manager 210 on a node or other nodes. A respective node may be determined to be capable of executing an application based on a query result indicating the respective node has node attributes for executing the application (FIG. 10 block 1004).
A node with software for creating an instance of an application server may be linked to the application server, according to an embodiment. In another embodiment, a node with resources associated with a unique application identifier or an application key (appKey), may be linked to an application corresponding to the application identifier. Application identifiers may be used to uniquely identify applications and instances of applications, Application identifiers isolate or shield applications from other applications. Application identifiers also allow applications to find resources by type or name via DNS.
Returning to block 706 of FIG. 7, a node request is received for a target application. The node request is independent of a node configuration. No network location, IP address, server name or DNS name is asked of the user, entered by the user or selected by the user. The request asks that one or more nodes be provided so that a user may install or execute the target application on the one or more nodes. In some embodiments, the request may provide one or more virtual machines of the one or more nodes. In many cases, providing the name or reference of the target application is all that is necessary to proceed with node selection for the target application.
A node linked to the target application is selected (FIG. 7 block 708). A node may be selected from a number of qualifying nodes having sufficient node attributes. The node that is selected may be selected based on a number of factors, including but not limited to, CPU availability, memory availability, physical location, virtual machine configuration, IP addresses, software version, or other optimization considerations. Node selection may also be sequential or random. Node selection may not be limited a single node and may include multiple nodes.
The selected node is provided (block 710). The target application is executed by the selected node. In some cases, a target application may be installed on a node or installed to some degree on the node. Node selection then results in execution of the target application on the node. In other cases, node selection may result in installation, back up, restoring, starting, stopping, removal of an application on the selected node or any other application lifecycle events. The selected node, having been determined to be linked to a target application, can perform as necessary to ensure that the target application is utilized with the selected node.
According to an embodiment, node attributes may include a customer name. If the customer name is specified, nodes linked to the customer name may be provided. Such customer to node links may be formed based on one or more applications associated with or used by a customer being linked to a node. In some cases, node to customer links may require two or more node to application links relevant to a customer.
In another embodiment, a named resource or node attribute may be specified. In this case, a node with the named resource is provided. In yet another embodiment, if a QoS metric is requested, a node with the specified QoS metric is provided. Further embodiments may include selection of nodes linked to application based on application centered or customer centered requests.
The embodiments described above provide for real time information for node selection within a dynamic network or system, where nodes, node attributes and network configurations change but the request may remain simple and application focused. In such a system, resources may be reallocated and moved about as needed while providing a more universal model. Specific knowledge of the machines in network cloud 102 is removed from the request and management processes. Instead, the focus may be on applications, resource types and QoS metrics. In such a system, resources may be reallocated and moved about as needed while providing a more universal model.
According to an embodiment, the functionality of application manager 210, as described in the embodiments above, may be implemented in any combination of nodes 110-150 or node 310 of cloud network 102, as shown in FIG. 5. The functionality may also be implemented in a separate node. In that case, requests may be made through a node and any of the nodes may be selected for the target application without a separate computing device providing the functionality of application manager 210.
According to some embodiments, Redis™ data stores may be used for configuration data. Knife™ command tools may be used to create nodes and Chef™ software may be used to install the functionality of application manager 210 on a computing device or node. In a further embodiment, nodes 110-150 and 310 may have agents that work in coordination with application manager 210 or implement the functionality of application manager 210. Node.js® software may be used to implement these node agents. In yet another embodiment, RESTful APIs are used for internode connections.
In an implementation, the functionality of application manager 210 may be provided through a browser on a node or computing device. The browser may be any commonly used browser, including any multithreading browser. Application manager 210 may be software in a browser or software displayed by the browser. Application manager 210 may be software hosted by a server and served to client devices over networks, including cloud network 102.
As will be appreciated by one of skill in the art, aspects of the disclosure may be embodied as a method, data processing system, and/or computer program product. Furthermore, embodiments may take the form of a computer program product on a tangible computer readable storage medium having computer program code embodied in the medium that can be executed by a computing device,
FIG. 11 is an example computer system 1100 in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code. For example, the components of nodes 110-150, node 310, application 210 or any other components of systems 200-600 or methods 700-1000 may be implemented in one or more computer devices 1100 using hardware, software implemented with hardware, firmware, tangible computer-readable storage media having instructions stored thereon, or a combination thereof and may be implemented in one or more computer systems or other processing systems. Components and methods in FIGS. 2-10 may be embodied in any combination of hardware and software.
Computing device 1100 may include one or more processors 1102, one or more non-volatile storage mediums 1104, one or more memory devices 1106, a communication infrastructure 1108, a display screen 1110 and a communication interface 1112. Computing device 1100 may also have networking or communication controllers, input devices (keyboard, a mouse, touch screen, etc.) and output devices (printer or display).
Processor(s) 1102 are configured to execute computer program code from memory devices 1104 or 1106 to perform at least some of the operations and methods described herein, and may be any conventional or special purpose processor, including, but not limited to, digital signal processor (DSP), field programmable gate array (FPGA), application specific integrated circuit (ASIC), and multi-core processors.
GPU 1114 is a specialized processor that executes instructions and programs, selected for complex graphics and mathematical operations, in parallel.
Non-volatile storage 1104 may include one or more of a hard disk drive, flash memory, and like devices that may store computer program instructions and data on computer-readable media. One or more of non-volatile storage device 1104 may be a removable storage device.
Memory devices 1106 may include one or more volatile memory devices such as but not limited to, random access memory. Communication infrastructure 1108 may include one or more device interconnection buses such as Ethernet, Peripheral Component Interconnect (PCI), and the like.
Typically, computer instructions are executed using one or more processors 1102 and can be stored in non-volatile storage medium 1104 or memory devices 1106.
Display screen 1110 allows results of the computer operations to be displayed to a user or an application developer.
Communication interface 1112 allows software and data to be transferred between computer system 1100 and external devices. Communication interface 1112 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communication interface 1112 may be in the form of signals, which may be electronic, electromagnetic, optical, or other signals capable of being received by communication interface 1112. These signals may be provided to communication interface 1112 via a communications path. The communications path carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels. According to an embodiment, a host operating system functionally interconnects any computing device or hardware platform with users and is responsible for the management and coordination of activities and the sharing of the computer resources.
Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, JavaScript, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computer environment or offered as a service such as a Software as a Service (SaaS).
Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, systems and computer program products according to embodiments. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
It is to be understood that the functions/acts noted in the blocks may occur out of the order noted in the operational illustrations. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
Many different embodiments have been disclosed herein, in connection with the above description and the drawings. It will be understood that it would be unduly repetitious and obfuscating to literally describe and illustrate every combination and subcombination of these embodiments. Accordingly, all embodiments can be combined in any way and/or combination, and the present specification, including the drawings, shall support claims to any such combination or subcombination.
The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein.
The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments or any actual software code with the specialized control of hardware to implement such embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims (21)

What is claimed is:
1. A computer-implemented method, comprising:
acquiring, at an application manager, node attributes from a plurality of computing nodes of a network, wherein the node attributes correspond to resources of ones of the plurality of computing nodes;
identifying, by the application manager responsive to acquiring the node attributes, a portion of the plurality of computing nodes of the network having a node attribute for executing a software application on the portion of the plurality of computing nodes,
wherein the software application is a computer program selected by a user of the network to be installed or executed on one or more computing nodes of the portion of the plurality of computing nodes, and
wherein the node attribute for executing the software application indicates that a respective computing node of the portion of the plurality of computing nodes has a computing device configuration, a network configuration or required software to handle execution of the software application on the respective computing node of the portion of the plurality of computing nodes;
linking, within a data repository by the application manager, each respective computing node of the portion of the plurality of computing nodes to the software application based on the node attribute for executing the software application identified for the respective computing node of the portion of the plurality of computing nodes, whereby each respective computing node of the portion of the plurality of computing nodes linked to the software application has the corresponding node attribute for executing the software application;
receiving at the application manager a node request for the software application to be executed by one of the plurality of computing nodes, wherein the node request is independent of a computing node IP address and a computing node DNS name for any computing node of the plurality of computing nodes;
selecting, by the application manager, a selected computing node linked to the software application from among the portion of the plurality of computing nodes responsive to receiving the node request for the software application; and
providing, by the application manager, the selected computing node for execution of the software application responsive to the node request.
2. The method of claim 1, further comprising:
detecting a change in the node attribute of an updated computing node of the plurality of computing nodes, and, responsively, determining an updated node attribute of the updated computing node of the plurality of computing nodes; and
broadcasting the updated node attribute to ones of the plurality of computing nodes.
3. The method of claim 1, further comprising:
receiving broadcasts of broadcast node attributes from the plurality of computing nodes of the network; and
storing links of ones of the plurality of computing nodes to the software application based on the broadcast node attributes in the broadcasts.
4. The method of claim 1, wherein identifying comprises:
querying the plurality of computing nodes for node attributes linked to the software application; and
determining that the respective computing node of the portion of the plurality of computing nodes is capable of executing the software application based on a query result indicating that the respective computing node of the portion of the plurality of computing nodes has the node attribute for executing the software application.
5. The method of claim 1,
wherein the software application comprises a database used for web applications and
wherein linking each respective computing node of the portion of the plurality of computing nodes to the software application based on the node attribute comprises creating a link within the data repository between the respective computing node of the portion of the plurality of computing nodes and the software application based on the node attribute of the respective computing node of the portion of the plurality of computing nodes comprising an open TCP/IP port.
6. The method of claim 1, wherein linking each respective computing node of the portion of the plurality of computing nodes to the software application based on the node attribute comprises a creating a link within the data repository between the respective computing node of the portion of the plurality of computing nodes with resources associated with a unique application identifier and the software application corresponding to the unique application identifier.
7. The method of claim 1, wherein receiving the node request for the software application comprises receiving a customer name, and
wherein selecting the selected computing node linked to the software application comprises selecting the selected computing node among the portion of the plurality of computing nodes linked to the software application associated with the customer name.
8. The method of claim 1, wherein the software application is not installed on the selected computing node, and
wherein providing the selected computing node for execution of the software application comprises automatically proceeding with installation of the software application on the selected computing node prior to the execution of the software application on the selected computing node and responsive to the selection of the selected computing node.
9. The method of claim 1,
wherein the node attribute for executing the software application is a first node attribute acquired from the respective computing node of the portion of the plurality of computing nodes, and
wherein linking each respective computing node of the portion of the plurality of computing nodes to the software application based on the first node attribute comprises:
determining that a second node attribute not acquired from the respective computing node of the portion of the plurality of computing nodes indicates the computing device configuration, the network configuration or the required software to handle execution of the software application;
determining that the first node attribute acquired from the respective computing node of the portion of the plurality of computing nodes signifies the second node attribute.
10. A computer system comprising:
a processor; and
a memory coupled to the processor, the memory comprising computer readable program code embodied therein that, when executed by the processor, provides the following modules:
a node attribute acquisition module to acquire node attributes from a plurality of computing nodes of a network, wherein the node attributes correspond to resources of ones of the plurality of computing nodes;
a node attribute identifier module to identify, responsive to acquiring the node attributes, a portion of the plurality of computing nodes of the network having a node attribute for executing a software application on the portion of the plurality of computing nodes,
wherein the software application is a computer program selected by a user of the network to be installed or executed on one or more computing nodes of the portion of the plurality of computing nodes, and
wherein the node attribute for executing the software application indicates that a respective computing node of the portion of the plurality of computing nodes has a computing device configuration, a network configuration or required software to handle execution of the software application on the respective computing node of the portion of the portion of the plurality of the computing nodes;
an application linker module to link within a data repository each respective computing node of the portion of the plurality of computing nodes to the software application based on the node attribute for executing the software application identified for the respective computing node of the portion of the plurality of the computing nodes, whereby each respective computing node of the portion of the plurality of computing nodes linked to the software application has the corresponding node attribute for executing the software application; and
a node selector module to:
receive a node request for the software application to be executed by one of the plurality of computing nodes, wherein the node request is independent of a computing node IP address and a computing node DNS name for any computing node of the plurality of computing nodes;
select a selected computing node linked to the software application from among the portion of the plurality of computing nodes responsive to receiving the node request for the software application; and
provide the selected computing node for execution of the software application responsive to the node request.
11. The system of claim 10, wherein the application linker module further:
receives broadcasts of broadcast node attributes from the plurality of computing nodes of the network; and
stores links of ones of the plurality of computing nodes to the software application based on the broadcast node attributes in the broadcasts.
12. The system of claim 10, wherein the node identifier module further:
queries the plurality of computing nodes for node attributes linked to the software application; and
determines that the respective computing node of the portion of the plurality of computing nodes is capable of executing the software application based on a query result indicating that the respective computing node of the portion of the plurality of computing nodes has the node attribute for executing the software application.
13. The system of claim 10, the software application comprises a database used for web applications, and
wherein the application linker module further:
creates a link within the data repository between between the respective computing node of the portion of the plurality of computing nodes and the software application based on the node attribute of the respective computing node of the portion of the plurality of computing nodes comprising an open TCP/IP port.
14. The system of claim 10, wherein the application linker module further:
creates a link within the data repository between the respective computing node of the portion of the plurality of computing nodes with resources associated with a unique application identifier and the software application corresponding to the unique application identifier.
15. The system of claim 10, wherein the node selector module further:
receives a customer name; and
selects the selected computing node among the portion of the plurality of computing nodes linked to the software application associated with the customer name.
16. The computer system of claim 10, wherein the software application is not installed on the selected computing node, and
wherein the node selector module provides the selected computing node for execution of the software application by automatically proceeding with installation of the software application on the selected computing node prior to the execution of the software application on the selected computing node and responsive to the selection of the selected computing node.
17. The computer system of claim 10,
wherein the node attribute for executing the software application is a first node attribute acquired from the respective computing node of the portion of the plurality of computing nodes, and
wherein the application linker module links each respective computing node of the portion of the plurality of computing nodes to the software application based on the first node attribute by:
determining that a second node attribute not acquired from the respective computing node of the portion of the plurality of the computer nodes indicates the computing device configuration, the network configuration or the required software to handle execution of the software application;
determining that the first node attribute acquired from the respective computing node of the portion of the plurality of the computer nodes signifies the second node attribute.
18. The computer system of claim 10, wherein the software application is already installed on the selected computing node of the plurality of computing nodes as a first installation,
wherein the node selector module provides the selected computing node of the plurality of computing nodes for execution of the software application by automatically proceeding with a second installation of the software application on the selected computing node of the plurality of computing nodes prior to the execution of the software application on the selected computing node of the plurality of computing nodes, and
wherein the second installation is performed using a unique application identifier that identifies the second installation and isolates the second installation from the first installation.
19. A computer program product for operating a computer system, the computer program product comprising:
a non-transitory computer readable storage medium having computer readable program code embodied in the medium, the computer readable program code comprising:
computer readable program code to:
acquire, at an application manager, node attributes from a plurality of computing nodes of a network, wherein the node attributes correspond to resources of ones of the plurality of computing nodes,
wherein the application manager is executed on a management computing node that is distinct from the plurality of computing nodes of the network;
identify, by the application manager responsive to acquiring the node attributes, a computing node of the plurality of computing nodes having a node attribute for executing a software application on the computing node,
wherein the software application is a computer program selected by a user of the network to be installed or executed on one or more computing nodes of the plurality of computing nodes, and
wherein the node attribute for executing the software application indicates that the computing node of the plurality of computing nodes has a computing device configuration, a network configuration or required software to handle execution of the software application on the computing node of the plurality of computing nodes;
link, within a data repository by the application manager, the computing node of the plurality of computing nodes to the software application responsive to the computing node of the plurality of computing nodes having the node attribute for executing the software application on the computing node of the plurality of computing nodes;
receive at the application manager a node request for the software application to be executed by one of the plurality of computing nodes,
wherein the node request is independent of a computing node IP address and a computing node DNS name for any of the plurality of computing nodes;
query, by the application manager, the data repository to identify linked computing nodes of the plurality of computing nodes which are linked to the software application;
select, by the application manager, the computing node of the plurality of computing nodes linked to the software application responsive to the query of the data repository,
wherein the software application is not installed on the computing node of the plurality of computing nodes;
initiate automatic installation, by the application manager, of the software application on the computing node of the plurality of computing nodes prior to the execution of the software application on the computing node of the plurality of computing nodes, and responsive to the selection of the computing node of the plurality of computing nodes;
provide, by the application manager, the computing node of the plurality of computing nodes for execution of the software application responsive to the node request;
receive, at the application manager, updated node attributes from an updated computing node of the plurality of computing nodes; and
update, by the application manager, a link within the data repository between the updated computing node of the plurality of computing nodes and the software application responsive to the updated node attributes received from the updated computing node of the plurality of computing nodes.
20. The computer program product of claim 19,
wherein the software application comprises a database used for web applications, and further comprising:
computer readable program code to create a link within the data repository between the respective computing node of the portion of the plurality of computing nodes and the software application based on the node attribute of the respective computing node of the portion of the plurality of computing nodes comprising an open TCP/IP port.
21. The computer program product of claim 19,
wherein the node attribute for executing the software application is a first node attribute acquired from the respective computing node of the portion of the plurality of computing nodes, and
wherein the computer readable program code to link each respective computing node of the portion of the plurality of computing nodes to the software application based on the first node attribute comprises computer readable code to:
determine that a second node attribute not acquired from the respective computing node of the portion of the plurality of the computer nodes indicates the computing device configuration, the network configuration or the required software to handle execution of the software application;
determine that the first node attribute acquired from the respective computing node of the portion of the plurality of the computer nodes signifies the second node attribute.
US13/791,966 2013-03-09 2013-03-09 Application centered network node selection Expired - Fee Related US9270543B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/791,966 US9270543B1 (en) 2013-03-09 2013-03-09 Application centered network node selection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/791,966 US9270543B1 (en) 2013-03-09 2013-03-09 Application centered network node selection

Publications (1)

Publication Number Publication Date
US9270543B1 true US9270543B1 (en) 2016-02-23

Family

ID=55314785

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/791,966 Expired - Fee Related US9270543B1 (en) 2013-03-09 2013-03-09 Application centered network node selection

Country Status (1)

Country Link
US (1) US9270543B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351210A1 (en) * 2013-05-23 2014-11-27 Sony Corporation Data processing system, data processing apparatus, and storage medium
US20160380904A1 (en) * 2015-06-25 2016-12-29 Trifectix, Inc. Instruction selection based on a generic directive

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287825A1 (en) * 2005-02-10 2009-11-19 Cisco Technology, Inc. Distributed client services based on execution of service attributes and data attributes by multiple nodes in resource groups
US20100162260A1 (en) * 2008-12-18 2010-06-24 Veda Technology Limited Data Processing Apparatus
US20110080850A1 (en) * 2009-10-07 2011-04-07 Broadcom Corporation Systems and methods for providing service ("srv") node selection
US20110231477A1 (en) * 2010-03-22 2011-09-22 Ido Safruti System and method to service requests from a plurality of sources
US20120198073A1 (en) * 2011-01-27 2012-08-02 Computenext Inc. Dynamically organizing cloud computing resources to facilitate discovery
US20120303807A1 (en) * 2009-12-15 2012-11-29 International Business Machines Corporation Operating cloud computing services and cloud computing information system
US20130346543A1 (en) * 2012-06-22 2013-12-26 International Business Machines Corporation Cloud service selector
US20140215045A1 (en) * 2011-09-30 2014-07-31 Huawei Technologies Co., Ltd. Method and device for resource matching in vpc migration

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287825A1 (en) * 2005-02-10 2009-11-19 Cisco Technology, Inc. Distributed client services based on execution of service attributes and data attributes by multiple nodes in resource groups
US20100162260A1 (en) * 2008-12-18 2010-06-24 Veda Technology Limited Data Processing Apparatus
US20110080850A1 (en) * 2009-10-07 2011-04-07 Broadcom Corporation Systems and methods for providing service ("srv") node selection
US20120303807A1 (en) * 2009-12-15 2012-11-29 International Business Machines Corporation Operating cloud computing services and cloud computing information system
US20110231477A1 (en) * 2010-03-22 2011-09-22 Ido Safruti System and method to service requests from a plurality of sources
US20120198073A1 (en) * 2011-01-27 2012-08-02 Computenext Inc. Dynamically organizing cloud computing resources to facilitate discovery
US20140215045A1 (en) * 2011-09-30 2014-07-31 Huawei Technologies Co., Ltd. Method and device for resource matching in vpc migration
US20130346543A1 (en) * 2012-06-22 2013-12-26 International Business Machines Corporation Cloud service selector

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351210A1 (en) * 2013-05-23 2014-11-27 Sony Corporation Data processing system, data processing apparatus, and storage medium
US20160380904A1 (en) * 2015-06-25 2016-12-29 Trifectix, Inc. Instruction selection based on a generic directive

Similar Documents

Publication Publication Date Title
US10983774B2 (en) Extensions for deployment patterns
US11574063B2 (en) Automatic detection of an incomplete static analysis security assessment
JP6411698B2 (en) Custom communication channel for application deployment
US9575871B2 (en) System and method for dynamically debugging data in a multi-tenant database environment
US20160043967A1 (en) Demand policy-based resource management and allocation system
EP3788465A1 (en) System, method, and apparatus for maintaining and updating a common message user interface in a group based communication system
US9805326B2 (en) Task management integrated design environment for complex data integration applications
JP2021500658A (en) Computer implementation methods, systems, and computer program products that perform interactive workflows, as well as computer programs.
US9130943B1 (en) Managing communications between client applications and application resources of on-premises and cloud computing nodes
US11057276B2 (en) Bulk service mapping
US11423343B2 (en) Dynamic construction of cloud services
JP7079903B2 (en) Systems, methods, and devices for building and rendering message user interfaces in group-based communication systems.
EP3093809B1 (en) Systems and methods for state machine management
US9210043B2 (en) Recommending a policy for an IT asset
US10560356B2 (en) Assuring data correctness in non-stable network environment
US9270543B1 (en) Application centered network node selection
US20230254287A1 (en) Techniques for a virtual bootstrap environment in a distributed virtual private network
US20230273816A1 (en) Reentrant service deployments
US20230251873A1 (en) User interface for critical path resources
US20230251872A1 (en) Techniques for managing region build dependencies
US20230251909A1 (en) Region seed establishment
US9547540B1 (en) Distributed operating system functions for nodes in a rack
WO2023154679A1 (en) Associating capabilities and alarms
WO2023154211A1 (en) Techniques for managing region build dependencies
WO2023154680A1 (en) Virtual bootstrap environment for building regional data centers

Legal Events

Date Code Title Description
AS Assignment

Owner name: CA, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GIARDINA, NATHAN J.;TYREE, DAVID S.;HUCIK, ROBERT;AND OTHERS;SIGNING DATES FROM 20130118 TO 20130307;REEL/FRAME:029969/0924

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20200223