In: Computer Science
present and critically discuss key attributes of two cloud design patterns offered by commercial cloud services providers. Explain what use cases the design patterns address and how they operate (Should NOT be, Web hosting, Lab-on demand, testing facility and Performance cluster)
Before discussing the two cloud design patterns of our choice offered by a commercial cloud service provider, let us first look at the challenges in cloud development:
1) availability- proportion of time for which system is functional and working ( percentage of uptime). This is affected by system errors, infrastructure problems, malicious attacks, etc. To resolve this issue cloud provides users with SLA ( service level agreement) to users, this helps in maximizing the availability.
2) data management- data is hosted in different locations and across multiple servers for reason such as performance, scalability, availability. Data consistency and data synchronisation becomes a major concern.
3) design and implementation- consistency and coherency in designing and deployment of components, maintanibility to simply administration and development, reusability to allow components and subsystems in other applications becomes important.
4) messaging- messaging infrastructure that connects components and services ideally in a loosely coupled manner to maximize scalability becomes important because of the distributed nature of cloud.
5) management and monitoring- management of information to administer and operators for handling requests and customising without stopping application.
6) performance and scalability- responsiveness to system to evaluate any action within a given time interval and ability of a syasys to handle increase in load without impact on performance or for availability resources to be readily increased.
7) reseliency- gracefully handling and recovering failures
8) security- prevent malicious or accidental actions outside of designed usage.
Before we present and discuss the key attributes of the two cloud design patterns and also present with the relevant usecases and how they operate, let us first have a brief look over the key attributes of any generalized cloud design pattern:
1) pattern name - summary, brief description
2) issues that led to pattern creation
3) issues/challenges- to be solved through this pattern
4) resolution in cloud- description of terms/ how to solve problems in cloud
5) implementation- how to implement pattern using AWS
6) benefits- application of pattern
7) notes: description of tradeoffs, advantages, design and points to note when applying this pattern
8) other: comparison with other patterns, use cases
Now, we will discuss the first cloud design pattern and for this we have selected Ambassador pattern:
1) Ambassador pattern
2) description-
a) useful for offloading commercial client connectivity tasks such as monitoring, logging, routing, security (such as TLS).
b) used with legacy applications or other applications that are difficult to modify, in order to extend network capabilities.
3) issues- circuit breaking, routing, metering, monitoring, ability to awake network related configuration updates.
4) challenges- network calls require substantial configuration, authentication and authorisation. Network and security functionality need to be managed by central trigger within an organisation.
5) solution-
a) client framework and libraries are put into external process to act as a proxy between your application and external services.
b) deploy proxy on same host environment as your application to allow control over routing, reseliency, security features and to avoid any host related access restrictions
c) to standardise and extend instrumentation
6) benefits-
a) need to build a common set of client connectivity features for multiple layers or framework
b) need to offload cross cutting client community concerns to infrastructure development
c) need to support cloud requirements in legacy applications
7) disadvantages-
a) when network requirement is critical this is not appropriate cloud design to choose
b) when client community features are consumed by a single language, this is not an effective cloud design pattern to rely on
c) when connectivity features can not be generalized
8) An application addressing usecases by ambassador design pattern is attached as image file in this answer.
The other design pattern that we are going to discuss is : Gatekeeper
1) description- protects applications and services by using a dedicated host instance that act as a broker between clients and applications or services, validates and sanitized requests, and passes requests and data by them.
2) issues- if a malicious user is able to compromise with the system or gain access to the application hosting environment.
3) challenge- application exposes their functionality to clients by accepting and processing requests.
4) resolution- use a facade/dedicated task that interacts with clients and then hands off the requests- perhaps through a decoupled interface to the hosts or tasks that will handle the request.
5) benefits-
a) controlled validation- the gatekeeper validates all requests, and rejects those that doesn't meet validation requirements
b) limited risk and exposure- the gatekeeper doesn't have access to credentials used by trusted host to access stage and services
c) application security- the gatekeeper runs in a limited private mode. Acts like a firewall.
6) when to use-
a) applications that handle sensitive information
b) distributed applications when it's necessary to perform request validation repeatedly for maintenance
7) limitations-
a) the gatekeeper must be in a limited private mode
b) impacts performance of the sussys due to added extra layer to application to implement gatekeeper pattern
c) single point of failure
8) diagram illustrating what usecases the gatekeeper design pattern addresses is attached as image format.