By Bikash Roy Choudhury, Principal Architect, NetApp
In past blog posts, I wrote about how DevOps is the natural evolution of the development culture for developers, operations teams, and business stakeholders. In this digital world, developing applications is part of every business that wants to go to market much faster with their products, services, and solutions. Doing so requires an agile development method that involves a continuous integration (CI) and a continuous delivery or deployment (CD) process in their environment. These two critical workflows or processes embody the DevOps practice. Let’s look into what CI and CD workflows are in an agile development model.
Continuous integration is an automated and iterative test and build process that enables teams to find bugs in code in the early stages of the development process. The CI process does not fix bugs but identifies where the bugs were introduced and removes them. Bugs can be identified at various levels: with unit and smoke tests in developers’ workspaces, during gated code check-ins, or during precode analysis before code check-in to the code repository or CI admin running builds and regressions. This process reduces development costs and build cycles and provides more flexibility.
Continuous delivery and continuous deployment are used interchangeably, but there is a difference between the two processes. Continuous delivery means that a successful build can be promoted to QA testing or preproduction staging requirements. The build to QA and to staging workflows is completely automated. However, manual engagement is required to deploy the application into production, as shown in Figure 1. For example, a cellphone manufacturer develops new firmware for its phone using the CI process but does not deploy the new firmware every day. So the software undergoes rigorous compliance and QA testing before the firmware is pushed out to mobile phone consumers. The release cadence can be longer with bug fixes and enhanced features.
Continuous deployment, on the other hand, is completely automated, from build through application deployment. No manual process is involved to promote an application to production. Continuous deployment is extremely helpful to consumer-driven businesses and e-commerce vendors that constantly push new features, content, and services to mobile devices, websites, social media, and other channels in very short release cycles. Automating the continuous deployment workflow along with continuous integration enables organizations to have an integrated code pipeline that pushes out new products, services, and features in days or hours compared to weeks or months.
Some might argue that continuous deployment is all about configuring the infrastructure that involves compute, network, and storage with high uptime. But to me it is more of a continuous operation in which the software and hardware resource changes are managed efficiently and in an automated process across different development platforms.
Although the goal of having a CI and CD workflow in a DevOps practice seems reachable to many organizations, the journey to having an agile development process poses a lot of challenges. Over the years, the application development landscape has been different to different teams within an organization. Each team has its own tools, platforms, and release cadence, which results in lengthening the go-to-market time. Applications might work in one environment but not in another because of the differences of tools and platforms.
With the evolution of DevOps, new roles have been introduced that are responsible for automating the infrastructure and the development workflows using RESTful APIs. The focus has shifted from the core IT and storage admins to the infrastructure developers, as illustrated in Figure 2, who provide various levels of services. These services include build as a service, deployment as a service, database as a service, security as a service, backup as a service, archival as a service, and so on through automation that enables the developers to use infrastructure as code. Infrastructure developers, also known as service providers, are responsible for operating and managing the services with adequate automation for the storage, network, and compute that are consumed by the developers.
Apart from infrastructure developers, there are also line-of-business (LoB) or application owners, who are the main decision makers in adopting an agile development workflow for their development environment. These decision makers have to fight an uphill battle in their organizations, facing challenges such as the following:
Despite the challenges, data is generated, processed, stored, and managed with an agile process. Data scaling, performance, and high availability are the key requirements for such an agile development model. NetApp, with its All Flash FAS and native technologies, provides horizontal scaling and submillisecond latency with flash for predictable performance and very high uptime. Cultural changes are not limited to the developer community; these changes also affect operators and service providers who consume infrastructure as a code for an agile development model. By integrating with various DevOps ecosystem partners, NetApp enables infrastructure and application developers to abstract the underlying infrastructure through various service offerings.
Come and meet NetApp at Jenkins World, Santa Clara Convention Center, September 13-15.