This excerpt from Architecting Cloud Computing Solutions explains the various concepts of a hybrid cloud architecture, including hybrid user interface, processing, backup and application functions.
Hybrid user interface
Varying user group workload interacts asynchronously with an application hosted in an elastic environment while the rest of the application resides in a static environment. An application responds to user groups with different workload behavior. One user group presents a static workload, while the other user group presents periodic, once-in-a-lifetime, unpredictable, or continuously changing workloads. Since user group size and workload behavior is unpredictable, this interface ensures that unexpected peak workloads do not affect application performance while each user group is handled by the most suitable environment. The user interface component serving varying workload users is hosted in an elastic cloud environment. Other application components that are in a static environment. The user interface in the elastic cloud is integrated with the rest of the application in a decoupled manner using messaging to ensure loose coupling.
Processing functionality with the varying workload is in an elastic cloud while the remainder of the application is in a static environment. A distributed application provides processing functions with different workload behavior. The user group accessing the application is predictable in size but accesses the functions differently. Although most functions are used equally and experience static workload, some processing components experience periodic, unpredictable, or continuously changing workloads. The processing components with varying workloads are provisioned in an elastic cloud. Loose coupling is ensured by asynchronously exchanging information between the hosting environments via messages.
Data of varying size is in an elastic cloud while the rest of an application is in a static environment. A distributed application handles data with drastically varying size. Large amounts of data may be periodically generated and then deleted, data may increase and decrease randomly, or data may display a general increase or decrease. During these changes, the user number and application accesses can be static resulting in a static workload on the other application components. Elastic cloud storage offerings handle data with varying size that are unsuitable for static environment hosting. Data is accessed either by data access components hosted in the static environment or by data access components in the elastic environment.
For disaster recovery, data is periodically extracted from an application and archived in an elastic cloud. Requirements regarding business resiliency and business continuity are challenging. There are also laws and regulations that make businesses liable to archive data for audits over very long periods of time. A distributed application is in a local static environment. Data handled by stateful components is extracted periodically and replicated to cloud storage.
Backend functionality is made up of data-intensive processing and data storage with varying workloads is hosted in an elastic cloud while all other components reside in a static data center. A distributed application provides processing with different workload behaviors. Support for a mainly static workload needs to available, but some processing components experience periodic, unpredictable, or continuously changing workloads. Application components that have varying workloads should be in an elastic environment.
These components, however, need to access large amounts of data during execution making them very dependent on availability and timely access to data. The processing components with varying workloads are in an elastic cloud together with the data accessed during operation. Asynchronous messages exchanged from the static environment are used to trigger the processing components in the elastic cloud through via message-oriented middleware message queues. A static environment data access component ensures that data required by elastic processing components is in storage offerings The data location may then be passed to the elastic processing components via messages. Data not required by the backend functionality may still be stored in stateful components in the static data center.
Hybrid application functions
Some application functions provided by user interfaces, processing, and data handling is experienced varying workload and is in an elastic cloud while other application functions of the same type are in a static environment. Distributed application components experience varying workloads on all layers of the application stack: user interface, processing, and data access. All components provide functionality to the application user group, but user groups access functionality differently. In addition to the workload requirements, other issues may limit the environments to which an application component may be provisioned. Application components are grouped based on similar requirements and are deployed into the best fitting environments. Components interdependencies are reduced by exchanging data with asynchronous messaging to ensure loose coupling. Depending on the function accessed, a load balancer seamlessly redirects user accesses to the different environments.
Hybrid multimedia web application
Website content is primarily provided from a static environment. Multimedia files that cannot be cached efficiently are provided from a large distributed elastic environment for high-performance access. A distributed application provides website access to a globally distributed user group. While most of the website has static content, there is a significant amount of multimedia content that needs to be streamed to users. Static website content is in a static environment where users access it. The streaming content is in an elastic cloud environment where it is accessed from a user interface component. Static content is delivered to users' client software which references the multimedia content. Streaming content retrieval is often handled directly by the users' browser software.
Hybrid development environment
A runtime environment for production is replicated and mocked in an elastic environment for new applications development and testing. Applications have different runtime environment requirements during the development, testing, and production phases. During development, hardware requirements vary, so hardware resources need to be flexible and able to extend resources as necessary. During the test phase, diverse test systems are needed in order to verify proper application functionality on various operating systems or while being accessed with different client software. Large numbers of resources are also required for load tests. In production, other factors, such as security and availability are of greater importance than resource flexibility. The application production environment is simulated in the development and test environment using equivalent addressing, similar data, and equivalent functionality. Applications migration is ensured through the transformation of application components or the compatibility of runtimes. Some testing resources are exclusively provided in the development environment to verify the application behavior under different circumstances.
Each pattern employs certain characteristics and attributes. These help solution architects accurately visualize interoperability, and models, and compare the impact of economics, technology choices, and potential strategies. Pattern attributes and their associated metrics can also be used to models and test solutions using computing aided design tools. Aligning pattern characteristics, attributes, and metrics with organizational requirements and goals will normally lead to successful solution deployments.
Successful design requires a simultaneous balance between desired strategic, economic, technical, and risk attributes. Complex designs are not necessarily better and can introduce additional risk rather than mitigate it. Defined requirements are where design starts, not where it finishes. As architectures are designed, evaluated, and compared, insight is revealed. Insight often provides a feedback loop for requirements to update or change. Updated requirements lead to new design scenarios and, potentially, more insight. When strategy, economics, technology, and risk align, objections will subside or will be negotiated away. Only add design complexity if non-negotiable requirements dictate it.
This tutorial is an excerpt from Architecting Cloud Computing Solutions by Kevin L. Jackson, Scott Goessling and published by Packt. Get the recommended ebook for just $10 (limited period offer).