Welcome!

Related Topics: @CloudExpo, Microservices Expo, Agile Computing, Cloud Security, @DXWorldExpo, SDN Journal

@CloudExpo: Article

Basic Cloud Computing Patterns for Application Development

Design patterns help not only in the development process but across the application development life cycle

Over the past few years, the cloud evolution has answered all questions on the cloud being the right strategy. The key challenge that remains now is leveraging cloud capabilities and features in such a way that they can be used to innovate as well as solve business problems. If we relate different cloud migration strategies executed over time, we'll find many similarities. There has been focus on cloud assessment as well as a consideration for application development approaches. Even though business cases are different, we can still link the proposed or implemented cloud-based solutions with a set of design patterns. If we have to define a design pattern, the most common definition states it as, ‘A widely used concept in computer science to describe good solutions to re-occurring problems in an abstract form.' Any abstract solution to recurring problems in the domain of cloud computing can be referred to as a cloud computing pattern that is independent of concrete providers, products and programming languages.

The following are some basic application architecture patterns. Most of these were referred to as cloud best practices in the beginning. As we come across multiple real-time implementations, we shall be able to easily identify a pattern in them.

Composite Application
On a higher level, traditional application architecture has to deal with challenges such as difficulties integrating with other applications and lack of flexibility for supporting changing functionalities in an application lifecycle. Since in a cloud environment applications can be scaled individually, it's always a good option to divide the application functionality into multiple components that can later be integrated to form a unified application.

Composite applications are one of the main elements in service-oriented architecture (SOA) that help in contextual collaboration. This approach makes applications extendable right from the beginning. The integration of other applications is also simplified by using the same integration techniques inside individual applications.

Example of a Composite Application for a Travel Booking Process

The key to a successful implementation of this pattern is achieving the correct balance in the distribution of functionality across multiple components. With too few components, integrating new functionality and changing the application flexibly will need extra time due to likelihood of errors. On the other hand, if the functionality is distributed among too many components, there will be a higher communication overhead for the application to perform. Composite application patterns used along with loose coupling (explained earlier) helps extract the benefits of cloud features like elasticity, payment models and standardized management.

Loose Coupling
In essence, loose coupling isolates the various layers and components of your application so that each component interacts asynchronously with the others and treats them as a "black box." The key principal for this pattern is to reduce the set of assumptions for the information exchange between components, which eventually results in better scalability.

Decoupling your components, building asynchronous systems and scaling horizontally become very important in the context of the cloud. It will not only allow you to scale out by adding more instances of the same component but also allow you to design innovative hybrid models in which a few components continue to run ‘on-premise' while the other components can take advantage of the ‘cloud-scale' and use the cloud for additional compute-power and bandwidth.

The following is a sample illustration of decoupling components using queues and AWS specific tactics:

Ref: Whitepaper on Architecting for the AWS Cloud: Best Practices.

AWS specific techniques for implementing this best practice are as follows:

  1. Use Amazon SQS to isolate components
  2. Use Amazon SQS as a buffer between components
  3. Design every component in a way that it exposes a service interface and is responsible for its own scalability in all appropriate dimensions and interacts with other components asynchronously
  4. Bundle the logical construct of a component into an Amazon Machine Image so that it can be deployed more often
  5. Make your applications as stateless as possible. Store session state outside of component (in Amazon SimpleDB, if appropriate)

Loose coupling normally results in performance reduction because asynchronous communication using messages adds a lot of overhead due to the communication path being longer. Though it needs to be weighed between loose coupling and performance, things can be easily handled by scaling resources out.

Elastic Component
As an application is componentized, components are distributed among multiple compute nodes. The system utilization is tracked by these nodes using parameters like CPU load, memory usage, or network I/O for scaling decisions. As the utilization of compute nodes exceeds a specified threshold, additional hosting components are provisioned that contain the same application component.

In cloud, elasticity can be implemented in three ways:

  1. Proactive Cyclic Scaling: Periodic scaling that occurs at fixed interval
  2. Proactive Event-Based Scaling: Scaling just when you are expecting a big surge of traffic requests due to a scheduled business event
  3. Auto-scaling based on demand

Other Cloud Computing Patterns
The following are some other commonly used cloud computing patterns:

Stateless Component
In regular component-based applications in cloud, the chances of failure increase as components can be distributed across multiple nodes. Components are added/ removed to address scalability needs with changes in demand. ‘Stateless Components' is a pattern in which components do not contain any internal state, rather external persistence storage is used for state management.

Map-Reduce
The Map-Reduce pattern is used to achieve performance requirements for complex queries on large data sets as most of the conventional storage solutions do not support such queries natively. Map-Reduce is often used to query large amounts of weakly structured/unstructured data for analysis purposes. For example, it can be used for the analysis of web service logs to determine user access statistics or the analysis of order information to find popular products.

Design patterns help not only in the development process but across the application development life cycle. In their abstracted form, patterns make themselves applicable to challenges that the developers of cloud application face today that are independent of the actual technologies as well as cloud services that are being used. Applying them to the cloud lets your application extract maximum benefits of cloud platforms.

More Stories By Mahesh Kumar

Mahesh Kumar is currently working as a Senior Tech Lead at Harbinger. He is a member of Technology Forum and Proposal Engineering Group at Harbinger Systems. He is an active contributor in the technology arm of Harbinger’s Marketing division. Mahesh Kumar has over 7 years of experience in design and development of Enterprise Applications in BI, Healthcare and eLearning domain. His core technology expertise is in Java, J2ee, Java Frameworks and libraries, Android, Big Data and Cloud. He is frequently invited as a guest speaker at Management Colleges and Universities.

Mahesh Kumar holds a Bachelors of Engineering in Information Technology from University of Pune, India.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Latest Stories
DX World EXPO, LLC, a Lighthouse Point, Florida-based startup trade show producer and the creator of "DXWorldEXPO® - Digital Transformation Conference & Expo" has announced its executive management team. The team is headed by Levent Selamoglu, who has been named CEO. "Now is the time for a truly global DX event, to bring together the leading minds from the technology world in a conversation about Digital Transformation," he said in making the announcement.
"Space Monkey by Vivent Smart Home is a product that is a distributed cloud-based edge storage network. Vivent Smart Home, our parent company, is a smart home provider that places a lot of hard drives across homes in North America," explained JT Olds, Director of Engineering, and Brandon Crowfeather, Product Manager, at Vivint Smart Home, in this SYS-CON.tv interview at @ThingsExpo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
SYS-CON Events announced today that Conference Guru has been named “Media Sponsor” of the 22nd International Cloud Expo, which will take place on June 5-7, 2018, at the Javits Center in New York, NY. A valuable conference experience generates new contacts, sales leads, potential strategic partners and potential investors; helps gather competitive intelligence and even provides inspiration for new products and services. Conference Guru works with conference organizers to pass great deals to gre...
DevOps is under attack because developers don’t want to mess with infrastructure. They will happily own their code into production, but want to use platforms instead of raw automation. That’s changing the landscape that we understand as DevOps with both architecture concepts (CloudNative) and process redefinition (SRE). Rob Hirschfeld’s recent work in Kubernetes operations has led to the conclusion that containers and related platforms have changed the way we should be thinking about DevOps and...
The Internet of Things will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform. In his session at @ThingsExpo, Craig Sproule, CEO of Metavine, demonstrated how to move beyond today's coding paradigm and shared the must-have mindsets for removing complexity from the develop...
In his Opening Keynote at 21st Cloud Expo, John Considine, General Manager of IBM Cloud Infrastructure, led attendees through the exciting evolution of the cloud. He looked at this major disruption from the perspective of technology, business models, and what this means for enterprises of all sizes. John Considine is General Manager of Cloud Infrastructure Services at IBM. In that role he is responsible for leading IBM’s public cloud infrastructure including strategy, development, and offering m...
The next XaaS is CICDaaS. Why? Because CICD saves developers a huge amount of time. CD is an especially great option for projects that require multiple and frequent contributions to be integrated. But… securing CICD best practices is an emerging, essential, yet little understood practice for DevOps teams and their Cloud Service Providers. The only way to get CICD to work in a highly secure environment takes collaboration, patience and persistence. Building CICD in the cloud requires rigorous ar...
Companies are harnessing data in ways we once associated with science fiction. Analysts have access to a plethora of visualization and reporting tools, but considering the vast amount of data businesses collect and limitations of CPUs, end users are forced to design their structures and systems with limitations. Until now. As the cloud toolkit to analyze data has evolved, GPUs have stepped in to massively parallel SQL, visualization and machine learning.
"Evatronix provides design services to companies that need to integrate the IoT technology in their products but they don't necessarily have the expertise, knowledge and design team to do so," explained Adam Morawiec, VP of Business Development at Evatronix, in this SYS-CON.tv interview at @ThingsExpo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
To get the most out of their data, successful companies are not focusing on queries and data lakes, they are actively integrating analytics into their operations with a data-first application development approach. Real-time adjustments to improve revenues, reduce costs, or mitigate risk rely on applications that minimize latency on a variety of data sources. In his session at @BigDataExpo, Jack Norris, Senior Vice President, Data and Applications at MapR Technologies, reviewed best practices to ...
Widespread fragmentation is stalling the growth of the IIoT and making it difficult for partners to work together. The number of software platforms, apps, hardware and connectivity standards is creating paralysis among businesses that are afraid of being locked into a solution. EdgeX Foundry is unifying the community around a common IoT edge framework and an ecosystem of interoperable components.
"ZeroStack is a startup in Silicon Valley. We're solving a very interesting problem around bringing public cloud convenience with private cloud control for enterprises and mid-size companies," explained Kamesh Pemmaraju, VP of Product Management at ZeroStack, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
Large industrial manufacturing organizations are adopting the agile principles of cloud software companies. The industrial manufacturing development process has not scaled over time. Now that design CAD teams are geographically distributed, centralizing their work is key. With large multi-gigabyte projects, outdated tools have stifled industrial team agility, time-to-market milestones, and impacted P&L stakeholders.
"Akvelon is a software development company and we also provide consultancy services to folks who are looking to scale or accelerate their engineering roadmaps," explained Jeremiah Mothersell, Marketing Manager at Akvelon, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
Enterprises are adopting Kubernetes to accelerate the development and the delivery of cloud-native applications. However, sharing a Kubernetes cluster between members of the same team can be challenging. And, sharing clusters across multiple teams is even harder. Kubernetes offers several constructs to help implement segmentation and isolation. However, these primitives can be complex to understand and apply. As a result, it’s becoming common for enterprises to end up with several clusters. Thi...