Monday 28 October 2013

SOFTWARE DEVELOPMENT WITH CLOUD HOSTING (AWS)

A key success factor for businesses is their ability to provide their employees with the infrastructure and support necessary to produce quality products. Unfortunately, infrastructure has long been burdened by the old IT mindset of ‘fixed costs’ and ‘additional resources’.

UNDER UTILIZED ON-PREMISE SERVERS & OPTIMIZING WITH THE AWS ALTERNATIVE

A key success factor for businesses is their ability to provide their employees with the infrastructure and support necessary to produce quality products. Unfortunately, infrastructure has long been burdened by the old IT mindset of ‘fixed costs’ and ‘additional resources’.
For Pantha Corp, this problem arose from the use of self-hosted servers for software development and testing. The issue with hosting these servers is that they are a fixed cost; when no one is coding or testing, the servers are still being paid for.
To solve this problem, Pantha Corp looked to the cloud-hosting platform Amazon Web Service (AWS). AWS provides virtualized servers that operate on a pay-as-you-go basis; this means that only actual server use is charged for.
Below we will explore the benefits Pantha Corp has gained from using AWS over traditional servers, which includes being able to better control server operating time, utilizing infrastructure provisioning and, of course, reducing operating costs. 

TRADITIONAL SERVERS VS. AWS CLOUD COMPUTING SERVERS

In alignment to agile software development best practices, Pantha Corp uses continuous integration to build and test software multiple times a day rather than in an overnight batch. Pantha Corp found that these servers are really only needed 25% of the time. Whereas traditional servers would cost whether or not they are being used, an AWS server and its API’s allow anyone, with the appropriate access, to temporarily shut down servers overnight or even decommission an old server, reducing costs to almost zero. 
Below is a screenshot demonstrating the ease of shutting down servers at night: 
As it can take 2 to 6 weeks to get a new traditional server up and running, planning the number of servers needed for the different stages of a project can be a balancing act. Planning for too much wastes time and money, while planning for too little will leave developers and testers unable to function optimally. These problems are made clear when a project progresses and an increased amount of infrastructure is needed to support testing, such as automated integration and regression testing.
This problem is virtually non-existent with the AWS servers as infrastructure can be provided in real time. The process to acquire and start a new server takes no more than a few minutes. 

SUMMARY OF BENEFITS GAINED BY USING AWS SERVERS:

  • Production-like environments: Ease in reproduction or creating production infrastructure that the development team can use early to support issues that can only be 
    detected in a ‘true’ production environment (security layers, redundancies, CDN, etc.).
  • Scalable automated testing: The development team and business analysts can implement automated non­regression test suites (increased number of automated tests 
    and running them throughout the day becomes cheap and provides high ROI).
  • Easy to control servers: Controlling server operating time to fluctuate with development teams being active results in optimized development and testing costs
  • Instant infrastructure provisioning: No delay in infrastructure provisioning which allows development teams get additional servers in real time, cutting out the need for capacity planning. 

HOW DOES IT WORK?

What are the inherent tools and mechanisms that allow AWS cloud servers to help businesses to better control their infrastructure and ultimately their costs?

AMI




One such tool is the AWS AMI system that simplifies the provisioning and decommissioning process of servers. The system manages snapshots of servers, whose image can then be reused to start more servers. This is easy to perform on the AWS console (or through the API) as shown below: 



JENKINS






Another application that Pantha Corp uses is Jenkins, which acts as a release and deployment coordination tool. Jenkins allows for continuous integration by detecting source code changes, triggering deployments, and can run tasks or scripts on schedule. Jenkins used alongside AWS API can seamlessly manage the startup and shutdown of servers over week nights and weekends. Below is an example of a Jenkins job that has to stop and start the AUAT LOAD environment:
While the previously mentioned tools allow for the ability to provision and change the state of servers, other tools can be used for controlling configuration changes and large scale provisioning, some of which include: 
* Nagios: Allows operation team to check servers are actually stopped at night. * Chef and Puppet: These are configuration orchestration tools. * Cloud Formation: Creates a whole environment by defining the different services and technology in use. * Foreman: Web based dashboard for controlling technology stacks in the cloud environment using Puppet (the monitoring and control panel allows servers to be shut down, provisioned and reconfigured by batch).

OVERALL BENEFIT FOR BUSINESSES, DEVELOPMENT AND TESTING TEAMS

It is of utmost importance to provide employees with an optimal work environment to help them to complete their tasks. With traditional servers, development and testing teams waste time, and therefore money, to plan for infrastructure that may be too little or too much. Businesses will obtain the true benefits of cloud hosting when their developers and testers only have to focus on what they do best. Only then can they be truly free to create innovative software that can be delivered to customers faster.

1 comment:

  1. Nice blog. It seems very impressive. I want to try AWS alternative, which is cost effective and provide good service. Thanks for sharing.

    ReplyDelete