DevOps patterns to scale web applications using cloud services

This article was accepted to publication at SPLASH 2013Wavefront Experience track.

Scaling a web applications can be easy for simple CRUD software running when you use Platform as a Service Clouds (PaaS). But if you need to deploy a complex software, with many components and a lot users, you will need have a mix of cloud services in PaaS, SaaS and IaaS layers. You will also need knowledge in architecture patterns to make all these software components communicate accordingly.

In this article, we share our experience of using cloud services to scale a web application. We show usage examples of load balancing, session sharing, e-mail delivery, asynchronous processing, logs processing, monitoring, continuous deployment, realtime user monitoring (RUM). These are a mixture of development and system operations (DevOps) that improved our application availability, scalability and performance.
Continue reading

Cloud Computing x Grid Computing

We all already know that Cloud Computing is a buzzword since its unknown origin. Moreover, we also know that many concepts of cloud computing are not as knew as some companies and their marketing department pretend they are. Specially when compared to Grid Computing, which is a more than 13 year old paradigm, there are many similarities (and also some differences). I’ll try to expose some of these points here.

Question no. 1: Is “Cloud Computing” just a new name for Grid?

YES, in the sense that both aim to reduce cost of computing, increase reliability and flexibility

But NO: Grid is more than 10 years ago, when we didn’t have the computer power available today. They context and scale it was made to operate (expensive hundreds of machines clusters) is different of today’s available infrastructure (hundreds of thousands of “low cost” computers and virtual machines created within them). Grid and Cloud operate in different scales.

Nevertheless, YES: Cloud and Grid problems are mostly the same. The details are different, but both deal with the same issues.

Question no. 2: What is Cloud Computing?

Yes, I know, there are a lot of different definitions of what Cloud Computing is and not much consensus between those definitions [2]. Then, I choose the best and most complete definition I found til now. It is the US National Institute of Standards and Technology (NIST) definition. Their definition is short and complete, when they say that Cloud Computing is

 “a model for enabling convenient, on-demand network access to a shared pool of configurable resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction” [1]

In other words, Cloud is meant to be:

  1. Massively scalable
  2. Encapsulated as an abstract entity that delivers different levels of services
  3. Driven by economies of scale [3]
  4. Dynamically configured

Question no. 3: What is Grid Computing?

Grid Computing, through well defined standard protocols, aims to

“enable  resource sharing and coordinated problem solving in dynamic, multi-institutional virtual organizations” [4][5]

this means that Grid:

  1. Is distributed computing
  2. Operates across multiple federated organizations
  3. Coordinates resources that are not subject to centralized control
  4. Uses standards, open, and general-purpose protocols
  5. Delivers non-trivial QoS
While points 1, 2 and 3 holds true also for Cloud Computing, points 4 and 5 are still a challenge in the Cloud area.

Question no. 4: How to compare Cloud and Grid side-by-side? [6]

The following Figure is an insightful overview when we try to compare Grid and Cloud:
 

References

[1] MELL, P. and GRANCE, T. 2009. Draft NIST Working Definition of Cloud Computing.
[2] “Twenty Experts Define Cloud Computing”, SYS-CON Media Inc, 2008.
[3] J. Silvestre. “Economies and Diseconomies of Scale,” The New Palgrave: A Dictionary of Economics, v. 2, pp. 80–84, 1987.
[4] I. Foster, C. Kesselman, S. Tuecke. The anatomy of the Grid: Enabling scalable virtual organization. The Intl. Jrnl. of High Performance Computing Applications, 15(3):200–222, 2001.
[5] I. Foster. What is the Grid? A Three Point Checklist, July 2002.
[6] FOSTER, I., ZHAO, Y., RAICU, I. and LU, S. 2008. Cloud Computing and Grid Computing 360-Degree Compared. In Grid Computing Environments Workshop (GCE ’08), Austin, Texas, USA, November 2008, 1-10.