DevOps-Driven Approach to Development in Cloud



DevOps,
a prevalent terminology in organizations today, has evolved as a paradigm that
once was SDLC. From the mammoth concept of the “WaterFall Model” to the more
recent Agile Framework and the emerging DevOps methodology, the Software
Development Life Cycle saw a huge business win in “Time to market”, over
several other advantages like risk aversion, flexibility, requirement
readjustments, collaboration etc. to name a few. This whitepaper elaborates on
the various salient features of DevOps that shapes the way software releases
are made today. DevOps is most suited to
Cloud and this paper explains the way the two technologies synergize. Service Oriented
Architecture is an architectural style that is essential in simplifying the
business and this paper explains how DevOps facilitates creation of granular
services that ultimately helps in attaining flexibility and agility of
development and operations in Cloud.




INTRODUCTION
DevOps, a now-popular terminology in organizations, has evolved as a paradigm that once was SDLC. From the mammoth concept of the "WaterFall Model" to the more recent Agile Framework, the Software Development Life Cycle saw a huge business win in "Time to market", over several other advantages like risk aversion, flexibility, requirement readjustments, collaboration etc. to name a few.
DevOps is one leap above Agile, where we are no longer talking about just the software but also the infrastructure. DevOps facilitates the marriage of IT and Development to such an extent that organizations now wouldn't need two disconnected teams working in silos but fosters collaboration and unification of these two services within the business. Not only does it foster collaboration between teams but also brings about a unified approach to development that smoothens interaction between the developers, testers, project managers and end users.
Adopting DevOps is however not simple. Every technology faces resistance in a paradigm shift and DevOps is no different. In recent years, Cloud Computing has evolved as a platform where many companies see advantage of migrating their workloads. Since Cloud offers many advantages in moving from manual processes to automation, it is an ideal environment for DevOps implementation. We would therefore be emphasizing on DevOps in the context of Cloud.
This whitepaper is divided into seven major sections. Section 1 gives a brief history of how DevOps came into being. Section 2 elaborates the salient features of the DevOps paradigm. Section 3 illustrates the tools used to realize DevOps. Section 4 explains the two complimentary technologies that aid DevOps -Cloud and Microservices. The section discusses why Cloud is most suitable for DevOps. In Section 5, we talk about the various best practices that can be leveraged while implementing the DevOps strategy in Cloud. Section 6 talks about the several challenges of DevOps in Cloud. In Section 7 we present two different use-cases that demonstrate how UST utilized the various features of DevOps in Cloud for solutioning its clientele.

A SHORT HISTORY OF DEVOPS
"Necessity is the mother of invention" -DevOps came about as a by-product of the ego-struggle between different teams and roles. Patric Debois, a software developer who had assumed different roles in large enterprises, helped plant the seeds of DevOps movement in 2008 at an Agile conference at Toronto. In 2009, two Flickr employees made a seminal talk called "10+ Deploys per Day: Dev and Ops Cooperation at Flickr". They made a case that the only sensible way to develop, build and deploy applications is to make Development and Operations transparent. Debois got inspired by viewing the presentation and organized his own conference in Ghent, Belgium, called the DevOps day. In 2010, the first DevOps Day gets organized in US, with the help of John Willis, an enterprise system management expert and Kris Buytaert, a Linux and Open source consultant. In 2011, Cameron Haight from Gartner predicted that by 2015, 20 percent of global 2000 businesses will embrace DevOps. The DevOps community started to build open source tools like Vagrant that worked with existing configuration management tools like Puppet and Chef. In 2012, DevOps days began springing up in many cities around the world, from Bangalore to Boston. In 2013, many DevOps related books started appearing, like, "The Phoenix Project", "Implementing Lean Software Development", "The Lean Startup" etc. In 2014, DevOps was embraced by brands such as Nordstrom, Target and LEGO. The "DevOps Enterprise: The Agile, Continuous Delivery and DevOps Transformation Summit", the first industry event focused on helping enterprise software organizations, was held in Burlingame, CA.
In a survey published in January 2016 by the SaaS cloud-computing company Right scale, DevOps adoption increased from 66 percent in 2015 to 74 percent in 2016. And among larger enterprise organizations, DevOps adoption is even higher -81 percent.

SALIENT FEATURES OF DEVOPS
There are three key features that define DevOps. To be able to treat infrastructure the way developers treat code is a leap in thinking that has allowed deployments of infrastructure to be automated. This feature enables collaboration between the operations and the development teams so that both teams are equally well-equipped to handle releases.

Continuous
Integration/Continuous Deployment is the terminology given to that feature of DevOps where the primary focus of the developer would be confined to writing code and checking in. The rest of the process of building, testing, integrating and deploying to production would be a continuously automated process.
While virtualization technology provides an environment for an application to run in a virtual machine with an OS and run-time of choice, it is not entirely light-weight. An alternative to virtualization is containerization wherein the application one deploys is contained in a software container that has all elements of a desired OS and its run-time. This makes the process of deployment extremely efficient and lightweight. Cloud Computing is a technology that has been pervading the IT landscape for the past decade where enterprises see benefit in moving infrastructure from their own on-premise data centers to the datacenter of a third-party vendor, from cost, reliability, performance and security point of view. Among several advantages, agility is a huge reason for the popularity of Cloud. DevOps also focusses on agility and Cloud makes it possible for infrastructure to be immediately available when demand necessitates.
Apart from Agility, the features of DevOps are easily realized in Cloud. Infrastructure in Cloud is packaged as "Machine Image" and instantiating a virtual machine is nothing but a run of a script. Hence Cloud is a natural place for maintaining Infrastructure as a Code.
Automating Continuous Integration and Deployment is easily realizable in Cloud.
The feature of elasticity that Cloud renders is an advantage when one talks of implementing DevOps. Bringing up Test Environments, running tests and staging Production environments is a seamless process irrespective of the load on the machines. Cloud also lends itself easily to Containerization where it is easy to spin off and cluster Docker containers.
Micro services on the other hand, is an architectural approach to system design that evolved from Service Oriented Architectural framework. In this approach, a system is broken down into granular components that are selfcontained so that each component can be individually developed, tested, built and deployed, leading to the architectural advantage of loose-coupling. The concept of Docker, where a component of the application can be packaged in individual containers has played a pivotal role in realizing the micro services approach to architecture.
Cloud lends itself well to loose-coupling and when Cloud, Micro service architectural framework and Containerization synergize, one ends up building powerful enterprise architectures.
An area in Cloud called the "Function as a Service" or "Serverless" architecture has gained huge popularity amongst the community who are interested in taking micro-services to the next level. FaaS provides enormous cost savings and the offering is completely managed. It is also AGILE RELEASE MANAGEMENT DEVOPS MICROSERVICES CLOUD an architecture which is above the concept of DevOps and is popularly known for being "No-Ops" that is better known as "SuperOps". The fact that server provisioning is not needed to deploy the serverless framework makes it irrelevant to formalize continuous integration and deployment. Serverless is in the rudimentary stages of maturity and still needs wide adoption but as far as DevOps goes, it is a perfect example of integrating the Development and Operations functions in the enterprise.

DEVOPS IN CLOUD -BEST PRACTICES
While implementing DevOps in Cloud, the following are few best-practices one must take care to implement in order for the solution to be effective:

DEVOPS IN CLOUD -CHALLENGES
In the previous sections we have seen the opportunities that prevail in DevOps in Cloud. In this section, we will see that not everything is rosy in the DevOps path and we will see why the industry faces certain challenges while choosing a DevOps strategy. The following are some of the biggest challenges we see in implementing DevOps in Cloud: Developers push their code to Bitbucket and the Jenkins server in AWS cloud pulls the change and kicks off a bunch of jobs which include, build, and deploy to test environment and running automated test cases. Once the test cases pass, the production environment is staged. If any test case fails, jira tickets are logged and an email is sent to the Business Analyst, who assigns the tickets to the developers.
For containerizing the application, Docker containers were used and the containers were orchestrated by AWS's Elastic Container Service. Application monitoring was done with the help of AppDynamics.

Case Study 2
One of our clients on AWS cloud wanted a very scalable and cost-effective architecture for their Portal Application. We offered them a serverless microservices architecture on AWS Cloud where their web services were exposed through AWS's Cloudfront serving off API Gateway, which in turn was powered by Lambda functions on the back-end that interacted with a DynamoDB DB Tier .

End Devices
Amazon S3