A system is provided to provision and manage cloud-based clustered application deployment. In one example embodiment, a clustered computing application is detected as being launched on a cluster of nodes. Each node in the cluster is a virtual instance of a machine within a virtualization service. status of the nodes in the cluster are monitored to detect availability of a server within the virtualization service A notification message addressed to the server is issued in response to detecting the availability of the server. The notification message includes information for connecting to the cluster.
|
1. A method comprising:
receiving a request to launch a clustered computing application on a cluster of nodes, each node in the cluster being a virtual instance of a machine within a virtualization service;
monitoring, using a processor of a control server, a status of the nodes in the cluster to determine an availability of a database server within the virtualization service;
in response to the determining of the availability of the database server, sending a notification message to an application server, the notification message including information for the application server to connect to the database server;
in response to determining that the database server and the application server have started, configuring a load balancer to deliver messages to the application server; and
subsequent to launching the clustered computing application, automatically changing a size of the cluster based on data for the clustered computing application and on cluster-sizing rules.
9. A tangible machine-readable storage device in communication with at least one processor, the tangible machine-readable storage device having instructions which when executed by the at least one processor, cause a control server to perform operations comprising:
receiving a request to launch a clustered computing application on a cluster of nodes, each node in the cluster being a virtual instance of a machine within a virtualization service;
determining that a database server within the virtualization service is available;
in response to determining the database server is available, sending a notification message to an application server, the notification message including information for connecting to the database server;
in response to determining that the database server and the application server have started, configuring a load balancer to deliver messages to the application server; and
subsequent to launching the clustered computing application, changing a size of the cluster based on data for the clustered computing application and on cluster-sizing rules.
17. A computer-implemented system comprising:
one or more processors of a control server; and
one or more computer storage media storing computer-executable instructions that, when executed by the one or more processors, implement a method comprising:
receiving a request to launch a clustered computing application on a cluster of nodes, each node in the cluster being a virtual instance of a machine within a virtualization service,
monitoring a status of the nodes in the cluster to determine an availability of a database server within the virtualization service,
in response to the determining of the availability of the database server, sending a notification message addressed to an application server, the notification message including information for connecting to the database server,
in response to determining that the database server and the application server have started, configuring a load balancer to deliver messages to the application server, and
changing a size of the cluster based on data for the clustered computing application and on cluster-sizing rules.
2. The method of
3. The method of
4. The method of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein performing the change comprises at least one of the following:
starting an additional node hosting at least one of an additional database server or an additional application server, or
stopping an existing node hosting at least one of an existing database server or an existing application server.
5. The method of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein the request to change the size of the cluster is in response to executing one or more rules provided by a rules engine.
6. The method of
7. The method of
8. The method of
a load balancing tier comprising the load balancer executing on a first node in the cluster;
an application tier comprising the application server executing on a second node in the cluster; and
a database tier comprising the database server executing on a third node in the cluster.
10. The tangible machine-readable storage device of
11. The tangible machine-readable storage device of
12. The tangible machine-readable storage device of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein performing the change comprises at least one of the following:
starting an additional node hosting at least one of an additional database server or an additional application server, or
stopping an existing node hosting at least one of an existing database server or an existing application server.
13. The tangible machine-readable storage device of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein the request to change the size of the cluster is in response to executing one or more rules provided by a rules engine.
14. The tangible machine-readable storage device of
15. The tangible machine-readable storage device of
16. The tangible machine-readable storage device of
a load balancing tier comprising the load balancer executing on a first node in the cluster,
an application tier comprising the application server executing on a second node in the cluster, and
a database tier comprising the database server executing on a third node in the cluster.
18. The computer-implemented system of
19. The computer-implemented system of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein performing the change comprises at least one of the following:
starting an additional node hosting at least one of an additional database server or an additional application server, or
stopping an existing node hosting at least one of an existing database server or an existing application server.
20. The computer-implemented system of
receiving a request to change the size of the cluster; and
performing the change in response to the request, wherein the request to change the size of the cluster is in response to executing one or more rules provided by a rules engine.
|
This application is a continuation of, and claims the benefit of priority under 35 U.S.C. §120 to, U.S. application Ser. No. 12/830,080, filed Jul. 2, 2010, now U.S. Pat. No. 8,412,810, issued Apr. 2, 2013, the entire contents of which are incorporated herein by reference.
This disclosure relates generally to the technical fields of software and/or hardware technology and, in one example embodiment, to system and method to provision and manage a clustered computing application deployed on a cloud.
The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
The phrase “cloud computing” refers to an architectural paradigm, in which computation is moved from local servers to a remote service that provides computation as a commodity or utility. A “cloud” is typically a large collection of shared commodity computation resources that can be interchangeably provisioned in response to clients' computation requests. Cloud computing is frequently used in software-as-a-service (SaaS) application architectures and may be viewed as an implementation choice for application deployment that leverages shared resources and improved cost structure of the cloud. A cloud computing approach may be used to implement a variety of computational paradigms, such as virtual machines, jobs, remote procedure calls, traditional servers, etc.
A computing application that is deployed on more than one machine (node) is termed a clustered computing application (or merely a clustered application or a cluster). For example, a clustered application may comprise a load balancer, a database, and an application server, where the load balancer is deployed on one node, the database server is deployed on another node, while the application server is deployed on a further node. Historically, clustered applications have been deployed using hardware that is statically allocated to a cluster, thereby defining both the cost of running a cluster and the peak load that it could support. In the event of increased load, new hardware would be purchased and brought online, and the cost of running the cluster would increase. In the event of decreased load, there is no corresponding way to decommission hardware and realize cost savings. Furthermore, the period of time that would elapse between the urgent need for more capacity and its availability would typically be measured in days or weeks.
Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
In the following detailed description, numerous specific details are set forth to provide a thorough understanding of claimed subject matter. However, it will be understood by those skilled in the art that claimed subject matter may be practiced without these specific details. In other instances, methods, apparatuses or systems that would be known by one of ordinary skill have not been described in detail so as not to obscure claimed subject matter.
Some portions of the detailed description which follow are presented in terms of algorithms or symbolic representations of operations on binary digital signals stored within a memory of a specific apparatus or special purpose computing device or platform, :In the context of this particular specification, the term specific apparatus or the like includes a general purpose computer once it is programmed to perform particular functions pursuant to instructions from program software. Algorithmic descriptions or symbolic representations are examples of techniques used by those of ordinary skill in the signal processing or related arts to convey the substance of their work to others skilled in the art. An algorithm is here, and generally, considered to be a self-consistent sequence of operations or similar signal processing leading to a desired result, in this context, operations or processing involve physical manipulation of physical quantities. Typically, although not necessarily, such quantities may take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to such signals as bits, data, values, elements, symbols, characters, terms, numbers, numerals or the like. It should be understood, however, that all of these or similar terms are to be associated with appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device.
Method and system are described to provision and manage cloud-based clustered application deployment. In one example embodiment, a cloud-based clustered application deployment uses a three tier topology that includes a load balancing tier, an application tier, and a database tier. Each tier comprises a set of nodes, where each node is implemented using a virtual instance of a machine running within a public virtualization space, such as, e.g., the virtualization space provided by Amazon Elastic Compute Cloud (EC2) service.
The nodes in one tier of a clustered application are homogenous in that they each use the same machine image stored in the public storage space. Thus, the same machine image is used for launching each of the nodes in the application tier, while a different machine image is used to launch a node in the toad balancing tier, and still another machine image is used to launch one or more nodes in the database tier. The machine images, which are read-only boot images that are used for launching cluster nodes, are provided by a control server (also referred to as a controller). The controller is configured to enforce sequential start sequence of a cluster using an asynchronous messaging system that provides notifications to cluster nodes as the individual nodes of the cluster become available. This messaging system is also used when the size of the cluster is increased or decreased, providing change notifications to nodes that subscribe to these notifications.
A clustered application that comprises a set of nodes grouped into several logical tiers may distribute the load of the application across the nodes in order to support loads that are higher than single standalone instances can handle. A set of techniques for optimizing a clustered computing application in response to varying load may be referred to as elastic scalability. Elastic scalability may be supported in two modes: manual and rule-based in the manual mode, the size of a cluster can be increased or decreased in response to commands from an administrator initiated, e.g., through the cluster dashboard user interface (shown in
A system that provisions and manages a computing application hosted on one or more virtual nodes may be referred to as a hosted service system. A hosted service system may be configured to provide automated administration of a computing application, replacing the administration tasks that would otherwise be performed by the customer when running in an on-premise production deployment. The technology within an example hosted service system may hide the behavior of the underlying virtualization service, and provide instances of a computing application that are substantially indistinguishable (e.g., in terms of reliability, security, and performance) from local on-premise deployments of the computing application. An example computing applications that a hosted service system may provision and manage are Adobe® LiveCycle® Enterprise Suite (ES) and Adobe® ConnectPro® offered by Adobe Systems Incorporated. While embodiments of the hosted service system are described with reference to Amazon EC2 service, other virtualization services may be utilized.
In operation, a user can access a provider's web site and request to launch a computing application that can be deployed remotely on a plurality of virtual nodes (on a cloud) such that the user no longer is required to deploy the computing application locally, within their own data center, on their own hardware. A request may be triggered by a user, e.g., by activating a visual control such as a “Start” button presented on a web page. When a hosted service system receives a request to launch a computing application, a call is made to the application programming interface (API) associated with the virtualization service to trigger the loading of machine images associated with respective tiers of the requested computing application. In one embodiment, where a clustered application comprises a load balancing tier, an application tier, and a database tier, the load balancing tier and the database tier initially may each comprise one virtual node, while the application tier may initially comprise a plurality of virtual nodes. A request to launch a clustered computing application may be triggered explicitly by a user or automatically. The associated node is loaded with the contents of the machine image. In one embodiment, nodes of a load balancing tier are launched using a load balancer machine image, nodes of an application tier are launched using an application server machine image, and nodes of a database tier are launched using a database server machine image.
An example architecture within which method and system to provision and manage a clustered computing application hosted by a plurality of virtual nodes may be implemented is described with reference to an architecture diagram illustrated in
The virtualization service 130 may load a clustered application 132 onto a cloud. The clustered application 132 may be accessed by the client 110 via a browser application 112. As mentioned above, a user in control of the client computer system 110 may send a request to the hosted service system 120 to load the computing application. The request may be initiated via a user interface 122 provided by the hosted service system 120 to the client computer system 110 via the browser application 112.
The user interface 122, in one embodiment, provides both an end-user's and a system administrator's view of the clustered application 132 and also permits issuing control operations to the clustered application 132 and permits viewing the resulting changes in the state of the clustered application 132. For example, where the clustered application is LiveCycle®, an end-user may manipulate various electronic forms. The user interface 122 may also serve as a source of information for the hosted service system 120, including documentation, downloads, and support. The user interface 122, in one embodiment, uses Adobe® Flex® software, offered by Adobe Systems incorporated, as the user interface technology for the implementation of the user interface. The user interface 122, in one embodiment, uses an XML (Extensible Markup Language)-based representational state transfer (REST) style secure communications protocol to synchronize its operations with a control server 124. A request to access the user interface 122 may be authenticated using one of a variety of authentication techniques.
The request from the client computer system 110 to load the clustered application 132 is received at the control server 124, which responds to the request by activating an access interface 134 provided by the virtualization service 130. The control server 124, in one example embodiment, provides coordination between the components of the architecture 100, provides administration and monitoring of the virtualization service 130, and also may be configured to audit system usage and resource allocation with respect to the clustered application 132. The control server 124 includes a database to store information pertaining to various aspects of system usage. The control server 124, in one embodiment, runs within a standard Hypertext Transfer Protocol Secure (HTTPS)-compliant web server and may be deployed as a publically accessible web application that is available outside a firewall. The control server 124, in one embodiment, is implemented using Ruby on Rails™ technology,
The virtualization service 130 accesses the storage 144 of the network storage system 140 to obtain machine images in order to load the associated clustered application 132. The machine images can be uploaded to the network storage system by the control server 124 utilizing an access interface 142 provided with the network storage system 140. As mentioned above, the machine images obtained b the virtualization service 130 include a machine image for one or more virtual nodes running one or more load balancers, a machine image for one or more virtual nodes running one or more application nodes, and a machine image for one or more virtual nodes running one or more database nodes. The communications from the clustered application 132 to the control server 124, may include enforcing sequential start sequence of the clustered application 132 and providing notifications to cluster nodes of the clustered application 132 as the individual nodes of clustered application 132 become available, as well as providing notifications to cluster nodes of the clustered application 132 when the size of the cluster is increased or decreased.
The hosted service system 120 further includes a secure networking client 126 to provide a bidirectional, encrypted, compressed connection between a machine in the end-user's secure network environment (e.g., the client computer system 110) and a virtual node running within the virtualization infrastructure (t)e clustered application 132). The networking client 126 manages various aspects of transmission control protocol (TCP) traffic forwarding, encryption, and network discovery, such that the user can access the clustered application 132 as if it was running locally on the user's machine. In this mode, the user's network security envelope is extended to surround the clustered application 132 using comparable levels of encryption and protection against network security threats.
A diagrammatic representation 200 of a tree-tiered clustered computing application is shown in
The agent 330 is provided to permit communications between the virtual instance 320 and the network storage system 350, the client computer system 360, and the control server 370. The agent 330 includes an operating system (OS) adapter 332 to facilitate communication between the agent 330 and the operating system 324 and an application interface 334 to facilitate communications between the computing application 322 and the agent 320. A network storage interface 338 is configured to facilitate communications between the network storage system 350 and the agent 330. A network component 340 is configured to facilitate communications between the client computer system 360 and the agent 330. A web server 342 is configured to facilitate communications between the control server 370 and the agent 330. Another component of the agent 230 is a cluster listener 344. The cluster listener 344 that subscribes to cluster change messages the cluster listener 344, upon receiving of a cluster change message, makes changes to the state of the computing application 322 based on the change to the cluster.
The control server 370, in one example embodiment, is a web server that provides a web application architecture, in which objects are modeled within a relational database and actions performed on those objects are methods within a set of controllers. As mentioned above, the control server 370 is configured to enforce the start sequence of the cluster and to provide change notifications to the nodes in the cluster, using asynchronous messaging system. The control server 370 keeps track of the state of the nodes in the cluster and the links between the nodes, and also supports elastic scalability of the cluster by managing automatic changes in the size of the cluster. Some components of the control server 370 are described with reference to
The cluster status monitor 404 may be configured to monitor status of the nodes in the cluster to detect availability various nodes, e.g., the database server, within the virtualization service. The configuration module 406 may be configured to configure a node, e.g., to configure a load balancer that delivers messages to one or more nodes executing instances of the application server. The publishing module 408 may be configured to issue notification messages addressed to nodes in the cluster. The notification messages may include information that may be used by a node for connecting to the database server provided in the cluster and information for discovering other nodes in the cluster.
The cluster manager 410 may be configured to detect a request to change the size of the cluster and to perform the change in response to the request. The cluster manager 410 cooperates with the rules engine 412. The rules engine 412 may be configured to periodically access various measurements associated with the cluster, evaluate one or more rules based on the measurements, and produce a cluster size change recommendation or request. The cluster manager 410 may be configured to process the cluster size change request. The modules illustrated in
As shown in
In one example embodiment, in response to a request to launch a clustered computing application, all cluster nodes in the application tier and the database tier are provisioned and started within a virtualization service. A load balancer is provisioned but not configured until all nodes of the application tier and the database have been started. The control server 124 of
After the primary database becomes available, the publishing module 408 of
Each application node will then configure itself to join the cluster and connect to the primary database using the contents of the notification message. The database failover replica will also configure itself for replication of the primary database instance. As is shown in
After the load balancer 220 has been configured such that it can deliver massages to the application server node 230, the cluster launch detector 402 detects, at operation 540, that the clustered computing application 210 has been launched on a cluster of nodes, wherein each node in the cluster is a virtual instance of a machine within a virtualization service. Upon completion of this sequence, the cluster is available and ready for use in all respects. The load balancer 220 is assigned a dynamically generated Internet protocol (IP) address and hostname when it is provisioned, which is used to access the cluster. The generated hostname may be replaced with a vanity hostname and a corresponding domain name system (DNS) entry, for each customer in a commercial offering.
At operation 550, the cluster manager 410 of
For example, when the request to change a size of the cluster is a request to change the size of the application tier, either adding or removing application nodes, the control server 124 may operate as described below. Additional cluster nodes in the application tier are started or stopped as requested. Asynchronous notification messages addressed to all application nodes and database nodes are issued. In one embodiment, when adding nodes to the cluster, notification messages contain the same information that a cluster node would receive during the cluster start sequence. When removing nodes from the cluster, notification messages contain information about the removed nodes. Once the cluster size change has completed and all affected nodes have started or stopped, respectively, then the load balancer is reconfigured with the changes. Upon completion of this sequence, the cluster size has been changed and the newly configured cluster is ready for use in respects.
In one example embodiment, cluster type specifications that describe the contents and sizing of the cluster tiers may be created using XML. This approach provides an extensible mechanism to define new cluster topologies for using clustered applications. An example of a cluster definition for the default three-tier web conferencing application is shown below in Table 1.
TABLE 1
<cluster-definition>
<name>Connect Pro 7.5 Standard</name>
<tier-definition>
<name>Load Balancers</name>
<type>LB</type>
<elastic-enabled>false</elastic-enabled>
<min-size>1</min-size>
<max-size>1</max-size>
</tier-definition>
<tier-definition>
<name>Connect Pro Application Servers</name>
<type>APP</type>
<elastic-enabled>true</elastic-enabled>
<min-size>2</min-size>
<node-type>
<name>Connect Pro 7.5 Node</name>
<ami-id>ami-d1fd13b8</ami-id>
<instance-type>m1.large</instance-type>
</node-type>
</tier-definition>
<tier-definition>
<name>SQL Server 2005 Instances</name>
<type>DB</type>
<elastic-enabled>false</elastic-enabled>
<min-size>1</min-size>
<max-size>1</max-size>
<node-type>
<name>SQL Server 2005 Primary Database</name>
<ami-id>ami-d93ed2b0</ami-id>
<instance-type>m1.large</instance-type>
</node-type>
</tier-definition>
</cluster-definition>
The cluster definition, such as the definition shown in Table 1 above, is used by the control server 124 of
As mentioned above, a cloud-based deployment of a clustered application may be configured to permit elastic scalability where a node from any of the tiers may be added to or removed from the cluster. Rule-based elastic scalability may be implemented using the rules engine 412 of
Rules may be specified individually for any cluster within the system, e.g., using a language grammar derived from Ruby on Rails™, using XML rule specification format, or any other rule format. Rules may also be specified collectively for any set of clusters belonging to a single user. The set of rules for a given cluster may be evaluated in priority order, where priority is defined as a value, e.g., in [1, 100]—with 1 as the highest priority and 100 as the lowest—and each rule is assigned a priority value. Each rule may also specify that further rule evaluation for the duster is to continue or halt depending on the evaluation output of the rule.
In one example embodiment, a background thread within the controller is responsible for periodically evaluating the set of rules and autonomously modifying the state of each cluster accordingly. The background thread may execute with a configurable frequency (e.g., the rules may be evaluated every 30 seconds), and the results of the evaluation of each rule and any cluster commands that were performed are stored in an event log in the system database. A set of default rules for basic cluster management may be provided by default for any cluster. An editor to compose and register custom rules for a cluster may be made available via the cluster dashboard view.
The example computer system 700 includes a processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 704 and a static memory 706, which communicate with each other via a bus 708. The computer system 700 may further include a video display unit 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 700 also includes an alphanumeric input device 712 (e.g., a keyboard), a user interface (UT) cursor control device 714 (e.g., a mouse), a disk drive unit 716, a signal generation device 718 (e.g., a speaker and a network interface device 720.
The disk drive unit 716 includes a computer-readable (or machine-readable) medium 722 on which is stored one or more sets of instructions and data structures (e.g., software 724) embodying or utilized by any one or more of the methodologies or functions described herein. The software 724 may also reside, completely or at least partially, within the main memory 704 and/or within the processor 702 during execution thereof by the computer system 700, the main memory 704 and the processor 702 also constituting machine-readable media.
The software 724 may further be transmitted or received over a network 726 via the network interface device 720 utilizing any one of a number of well-known transfer protocols (e.g., Hyper Text Transfer Protocol (HTTP)).
While the machine-readable medium 722 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention, or that is capable of storing or encoding data structures utilized by or associated with such a set of instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media. Such medium may also include, without limitation, hard disks, floppy disks, flash memory cards, digital video disks, random access memory (RAMO, read only memory (ROMs), and the like.
Thus, method and system to provision and manage a clustered computing application deployed on a cloud have been described. While some example approaches described herein may be used with ADOBE® products, the techniques described herein may be utilized beneficially with various other products.
The embodiments described herein may be implemented in an operating environment comprising software installed on a computer, in hardware, or in a combination of software and hardware. Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Patent | Priority | Assignee | Title |
10044617, | Nov 14 2014 | Nicira, Inc. | Stateful services on stateless clustered edge |
10951584, | Jul 31 2017 | NICIRA, INC | Methods for active-active stateful network service cluster |
11153122, | Feb 19 2018 | Nicira, Inc. | Providing stateful services deployed in redundant gateways connected to asymmetric network |
11178217, | Jan 09 2017 | International Business Machines Corporation | DNS-based in-packet service version tagging |
11281503, | May 05 2019 | MasterCard International Incorporated | Automated core services bootstrap for on-premises clusters |
11296984, | Jul 31 2017 | NICIRA, INC | Use of hypervisor for active-active stateful network service cluster |
11533255, | Nov 14 2014 | Nicira, Inc. | Stateful services on stateless clustered edge |
11570092, | Jul 31 2017 | NICIRA, INC | Methods for active-active stateful network service cluster |
11579941, | May 05 2019 | MasterCard International Incorporated | Control cluster for multi-cluster container environments |
11593367, | Sep 29 2021 | Amazon Technologies, Inc | Selecting between hydration-based scanning and stateless scale-out scanning to improve query performance |
11727003, | Nov 26 2021 | Amazon Technologies, Inc | Scaling query processing resources for efficient utilization and performance |
11799761, | Jan 07 2022 | VMWARE, INC | Scaling edge services with minimal disruption |
9866473, | Nov 14 2014 | Nicira, Inc. | Stateful services on stateless clustered edge |
9876714, | Nov 14 2014 | Nicira, Inc. | Stateful services on stateless clustered edge |
Patent | Priority | Assignee | Title |
7689685, | Sep 26 2003 | KYNDRYL, INC | Autonomic monitoring for web high availability |
7941432, | Nov 21 2006 | GLOBALNOTICE, INC | Providing notice via the internet |
8069435, | Aug 18 2003 | Oracle America, Inc | System and method for integration of web services |
8412810, | Jul 02 2010 | Adobe Inc | Provisioning and managing a cluster deployed on a cloud |
20050080885, | |||
20050080982, | |||
20050160424, | |||
20090119642, | |||
20090193414, | |||
20110320224, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jul 01 2010 | TOMPKINS, DAVID | Adobe Systems Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036685 | /0093 | |
Apr 01 2013 | Adobe Systems Incorporated | (assignment on the face of the patent) | / | |||
Oct 08 2018 | Adobe Systems Incorporated | Adobe Inc | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 048867 | /0882 |
Date | Maintenance Fee Events |
Apr 06 2016 | ASPN: Payor Number Assigned. |
Aug 23 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Aug 23 2023 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 23 2019 | 4 years fee payment window open |
Aug 23 2019 | 6 months grace period start (w surcharge) |
Feb 23 2020 | patent expiry (for year 4) |
Feb 23 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 23 2023 | 8 years fee payment window open |
Aug 23 2023 | 6 months grace period start (w surcharge) |
Feb 23 2024 | patent expiry (for year 8) |
Feb 23 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 23 2027 | 12 years fee payment window open |
Aug 23 2027 | 6 months grace period start (w surcharge) |
Feb 23 2028 | patent expiry (for year 12) |
Feb 23 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |