Looking Inside the Contemporary Application Architecture for the Cloud Age

Businesses today are increasingly moving away from fixed infrastructure and turning to the cloud when it comes to hosting their applications. The reasons behind this change are manifold. Cloud offers many benefits to enterprise users, but unlimited to more control over infrastructure, flexibility, speed and scalability. Cloud deployments come in various forms - public, private, and hybrid. There is an entire range of players offering advanced cloud computing services and frameworks. This includes Amazon Web Services, Microsoft Azure, Google App Engine, Docker open platform, Open Stack software, Heroku platform, Deis open-source platform, Cloud Foundry industry-standard for cloud apps and, more recently, Mesos.

Alongside the advent of the cloud, we are also witnessing the rapid adoption of software development methods such as agile and continuous integration & continuous development (CI-CD). It is important to separate them from a development and operations (DevOps) perspective, which lays emphasis on closer collaboration between software developers and operations teams.

Let's take a scenario wherein a new e-Commerce web application needs to be implemented on the cloud. There are three key areas we need to be concerned about in this implementation - Infrastructure & application code, Integration & Deployment and Operations.

Infrastructure and Application Code
It is important to ensure the source code is separated into infrastructure and application code. The purpose of the infrastructure code is to set up an immutable (permanent) infrastructure on a chosen cloud provider. The infrastructure component of an e-Commerce application takes the shape of servers, storage, networks, databases, load balancers, security controls, as well as the content delivery network (CDN). This ensures that even where the organization switches from one cloud provider to another, the application is portable between the cloud providers. To make migration between cloud providers flexible, one can look at tools like Terraform or Mesos. Like application code, infrastructure code can also be tested using frameworks like Test Kitchen.