I observed that DevOps approach is a natural part of tech startups culture because startup team consists of few developers who are responsible for full delivery which includes responsibility of operation as well.
What is DevOps: DevOps is an approach which combines development and operations, it emphasize on communication, collaboration and integration between software developers and IT professionals. DevOps improves deployment frequency, which can lead to faster time to market, lower failure rate of new releases, shortened lead time between fixes and faster mean time to recovery in the event of a new release crashing or otherwise disabling the current system, it aims to maximize the predictability, efficiency, security and maintainability of operational processes.
Agile gives organizations the ability to quickly respond in a fast changing market. Here I would like to quote Martin Fowler’s definition of DevOps and Continuous Delivery. As Martin Fowler has described that continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time, you achieve continuous delivery by continuously integrating the software done by the development team, building executables and running automated tests on those executables to detect problems. Furthermore you push the executables into increasingly production-like environments to ensure the software will work in production. To achieve continuous delivery you need: a close, collaborative working relationship between everyone involved in delivery (often referred to as a “DevOps culture”) and extensive automation of all possible parts of the delivery process, usually using a DeploymentPipeline.
According to puppet labs state of DevOps survey, companies that incorporate DevOps deploy code up to 30 times more frequently than their competitors and less than 50% of their deployments fail. In a typical DevOps environment, there is one team composed of cross-functional team members including developers, QA, DBAs, business analysts, operations engineers and so forth, collaboration across these different roles delivers many benefits.
Technical benefits: continuous software delivery, less complex problems to fix, faster resolution of problems
Business benefits: faster delivery of features, more stable operating environments, more time available to add value (rather than fix/maintain)
The combination of a shared code base, continuous integration, test-driven techniques and automated deploys expose problems in application code, infrastructure or configuration earlier because the software isn’t “thrown over the wall” to Operations at the end of coding. Problems tend to be less complex because change sets are smaller. And resolution times are faster because team members don’t need to wait for a different team to troubleshoot and fix the problem. DevOps aids in software application release management for an organization by standardizing development environments. Events can be more easily tracked as well as resolving documented process control and granular reporting issues. From methodologies such as Agile, lean principles and just in time manufacturing, startups adopted DevOps as a means to compete, innovate, and move faster. DevOps is inherently a quicker, better way to get product to market – a perfect fit for startups.
Implementing DevOps process usually starts with adopting an automation platform like Chef or Puppet. Once an automation platform has been adopted, it is used to code all systems related configuration and deployment. The idea is to remove the human element of manually configuring servers or deploying an application across multiple environments and multiple servers, automated configuration can get deployed on Cloud-based systems. As per the study of market research firm Gartner there are strong growth opportunities for DevOps toolsets, with the total for DevOps tools reaching $2.3 billion in 2015, up 21.1% from $1.9 billion in 2014. Cloud Providers and their Platform as a Service (PaaS) offering are helping startups and developers with no dedicated Ops team. For startups and tech companies the value of implementing DevOps helps in achieving higher productivity at lower costs resulting in more reliable systems.
Let’s take a look at some popular tools which help in the implementation of DevOps, particularly useful for startups…
IBM Bluemix: Bluemix is a cloud platform as a service (PaaS) developed by IBM. It supports several programming languages and services as well as integrated DevOps to build, run, deploy and manage applications on the cloud. Bluemix is based on Cloud Foundry open technology and runs on SoftLayer infrastructure. Bluemix supports several programming languages including Java, Node.js, Go, PHP, Python, Ruby Sinatra, Ruby on Rails and can be extended to support other languages such as Scala through the use of buildpacks. For more information visit IBM BLUEMIX
Atlas: Mitchell Hashimoto’s HashiCorp introduced Atlas, an application development and delivery system, it is a unified dashboard and workflow for developing, deploying, and maintaining applications on any public, private, or hybrid infrastructure. It provides visibility into infrastructure, including servers, containers, and virtual machines, in addition to configuration management and service discovery. Atlas enables devops across a variety of cloud services, including AWS, Google Compute Engine, Azure, and OpenStack, and provides a dashboard for developing, deploying, and maintaining applications. For more information visit ATLAS
Chef: Chef is a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration “recipes”. Chef is used to streamline the task of configuring and maintaining a company’s servers, and can integrate with cloud-based platforms such as Rackspace, Internap, Amazon EC2, Google Cloud Platform, OpenStack, SoftLayer, and Microsoft Azure to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems, with features and pricing for the respective ranges. For more information visit CHEF
Docker: Docker is an open platform for distributed applications, it brings portability to applications via its containerization technology, wherein applications run in self-contained units that can be moved across platforms. It consists of Docker Engine, which is a lightweight runtime and packaging tool, and Docker Hub, a cloud service for application-sharing and workflow automation. For more information visit DOCKER
Puppet: Puppet is an open source configuration management utility. It runs on many Unix-like systems as well as on Microsoft Windows, and includes its own declarative language to describe system configuration. Puppet is produced by Puppet Labs, founded by Luke Kanies in 2005. Puppet is designed to manage the configuration of Unix-like and Microsoft Windows systems declaratively. The user describes system resources and their state, either using Puppet’s declarative language or a Ruby DSL (domain-specific language). This information is stored in files called “Puppet manifests”. Puppet discovers the system information via a utility called Facter and compiles the Puppet manifests into a system-specific catalog containing resources and resource dependency, which are applied against the target systems. Any actions taken by Puppet are then reported. For more information visit PUPPET
SaltStack: SaltStack is fast and scalable systems and configuration management software for predictive orchestration, cloud and data center automation, server provisioning, application deployment and more. SaltStack provides systems management for data automation, server provisioning, cloud building, and application configuration. It is an event-driven cloud infrastructure automation tool, it can automate tasks within the devops workflow. SaltStack provides a common way and a common language to manage servers, thereby helping to bridge the gap between the two camps. For more information visit SALTSTACK
ScriptRock GuardRail: GuardRail provides configuration monitoring, with continuous overseeing of machine configuration state. It can help users ensure their production environment is identical to QA, test, and dev environments. ScriptRock’s GuardRail is designed to quickly pinpoint differences in configurations on servers and desktops, comparing states between systems and over time. With GuardRail you can see just what has changed, helping simplify diagnostics — and reducing downtime. For more information visit SCRIPTROCK
Splunk: Splunk is a tool for finding and fixing issues in real time across the application lifecycle, allowing developers to visualize data from production environments without having to access production machines. Splunk helps users embrace devops processes, including continuous integration and deployment. For more information visit SPLUNK
Recent Developments: On April 15th ProfitBricks, an IaaS provider announced that ProfitBricks will be launching a new DevOps Central and REST API, in combination with API features which are already in place. ProfitBricks is also introducing several new libraries that will greatly increase developers’ freedom to choose their own coding language, thus making it easier to integrate ProfitBricks’ services into a wider variety of existing networks. The new libraries support Python, Ruby and Java. The Chef company at its recent ChefConf event announced that it is going to launch Chef Delivery, a workflow engine that takes either infrastructure or application code and moves it from the developer’s workstation through build, test and production, streamlining software and infrastructure deployment according to patterns that the company has observed at successful DevOps shops. On 22nd April, 2015 Ness Software Engineering Services (SES), a leading provider of software product engineering services, has announced the launch of its end-to-end, Ness Connected Framework to enhance DevOps on complex projects.