DevOps adoption is transforming almost every aspect of how software is developed and delivered. Regardless of the type of application, the promise of delivering new and improved software-enabled experiences faster, and at scale, has become a business imperative for most organizations.
This is the first in a blog series that will focus on dealing with challenges that organizations encounter as they seek to benefit from adopting DevOps practices. I’m going to start with an area that seems obvious, but in many cases is not well understood in terms of how it affects the development process: data, or more specifically, data management.
All phases of the application development process have data dependencies. There are several, but the following three essential “data-based” elements exist in most development environments:
- Source code consists of computer programs written by programmers and developers. Multiple source code repositories are managed by version control system (VCS) tools such as Perforce and Git on servers in private data centers, in the public cloud, or on managed services such as GitHub.
- Development tools such as Jenkins and Maven and dependencies or prebuild artifacts such as compilers, libraries, debuggers, and run-time environments are among the tools used during a continuous integration (CI) and continuous delivery (CD) The build process compiles the source code along with all the dependencies in the form of an executable or binary.
- Binary repositories are different from source code because binaries are compiled versions of application source code along with prebuild artifacts such as compilers, linkers, and library files, as shown in the following image. Binary repository managers such as JFrog Artifactory host and manage multiple repositories used in the development and deployment process.
Midsize to large enterprises are evolving their application development processes to be more Agile. They are replacing or supplementing centrally managed VCS tools such as Perforce and Subversion for monolithic and legacy source code repositories with distributed VCS tools such as Git.
Different flavors of Git, such as GitLab and Atlassian Bitbucket, are popular where smaller scale or modular code application development and deployment are done. Microservices are the fastest growing form of this type of development, and are frequently developed in container-based environments. (Another future blog topic.)
The common ingredient that underpins all these development tools and workflows is data. This data needs a platform where it can be stored, managed, and protected. After all, data in the form of code is the work product (code) that is the primary output of the software development lifecycle.
ONTAP provides standard data management for data generated during the agile development process. ONTAP 9 provides data infrastructure management for appliances such as NetApp® AFF, and it also has ONTAP Cloud for AWS, ONTAP Cloud for Azure, Cloud Volumes for AWS and Azure, and a software-defined data system with ONTAP Select. This allows data to be portable everywhere so that applications can be both developed and deployed anywhere.
In my next blog, I’ll get into more details on how ONTAP data management techniques can enhance the source code and binary repository management capabilities in the agile development process.