Developing software has always been about creating products that work. Unfortunately, “work” is a relative term when the goal is to satisfy hundreds, if not thousands, and perhaps even millions, of users across all manner of disciplines.
This is why DevOps is quickly supplanting the traditional waterfall model of development. Once you have established basic functionality, it makes much more sense to roll out continuous improvements quickly rather than wait a year or more for the next big upgrade, which may or may not solve the problems that users want solved.
But this is a big change for developers who have spent their lives in a world that valued consistency and stability over flexibility and dynamism, which is why getting DevOps right the first time is proving to be crucial for the enterprise.
“Before DevOps practices, the burden of deploying a piece of code to production was on the developer and the release engineer,” said Fred Simon, co-founder and chief architecture at software release developer JFrog. “The goal of all the tooling and DevOps practices is to remove these burdens by making the supply chain fully automated, enabling the developer to concentrate on writing code, releasing, and getting feedback as fast as possible.”
In other words, DevOps must focus on making positive changes to the development process – otherwise, you end up with a convoluted pipeline that increases frustration for knowledge workers and produces poor products and services on the backend.
Essentially, argues Simon, DevOps converts a single, gargantuan development project into a steady series of micro-projects, with the aim of getting code to production fast and receiving feedback equally fast – what JFrog dubs “liquid software.”
“The key to fast release cycles and easy updates is small changes that are delivered quickly and seamlessly to the end consumers,” he said. “Whether these are major banks running enterprise applications, a mobile app or a smart light bulb, they all require software updates. Ideally, the flow is continuous, like flowing water.”
One of the ways the enterprise can smooth this transition for developers is to get the tooling right. To that end, Simon says many organizations are embracing open solutions to foster greater diversity in the work environment while maintaining commonality throughout the entire DevOps pipeline.
“Rather than one dominant DevOps platform, most DevOps tool providers are actually eating their own dog food by using DevOps best practices to release fast, with open systems that easily integrate with one another.”
This should run the gamut from version control systems like Git to leading continuous integration platforms, testing and code review tools, and even runtime environments whenever possible. The more difficult it is to hand projects off between these stages, the slower the overall process becomes and the greater the chance that security flaws and other bugs will slip through the cracks.
Another effective tool in the DevOps pipeline is a good REST API, which allows the dev team to pick and choose the right language for any given project.
“The fact that today’s developers are using more than one language, and everyone is using the language that fits their environment and needs, is pushing innovation, speed of development and software creation forward,” Simon said. “Multiple development teams using different languages can work on the same product and provide a single experience to the end user, which is something very recent and quite amazing for our industry.”
He notes, however, that this is not necessarily the case on the operations side.
“The main battle is more around the actual runtime platforms and orchestration tools, such as Java VM, Go, Ruby, Kubernetes and Docker, as well as monitoring and automation at scale.”
Below are some of the leading development solutions for DevOps environments:
Apache Maven
Apache Maven grew out of the Apache Turbine project as a way to streamline build and management processes of Java-based projects. Its goal is to provide developers with a complete project state in a short period of time using simplified processes, a uniform build system, a best-practices framework and other tools.
Bitbucket
Bitbucket is a distributed version control system that streamlines code collaboration across highly scaled environments. The system specializes in pull requests to facilitate code reviews, as well as granular access control for branch contributions and semantic, code-aware search for improved usage tracking.
GitHub
GitHub is a web-based hosting service that supports a number of open and proprietary software projects. The site offers lightweight code review, project management, documentation and other features designed to support user-defined workflows. To date, the GitHub community numbers more than 24 million developers, representing 1.8 million businesses around the globe.
JFrog
JFrog provides a fully automated pipeline for distributed trusted software releases. It provides artifact lifecycle management, visibility and control, release management and binary transparency to eliminate vulnerabilities and maintain consistency across projects. It supports numerous CI servers and tools, as well as container, deployment and QA platforms.
Jira
Jira is a project management tool for agile development. It features scrum and Kanban boards for iterative development and visibility into continuous delivery processes, and generates multiple real-time, actionable reports for optimal team performance. It also supports custom workflows, rules and triggers and is integrated with many leading development tools.
Vagrant
Vagrant is designed to build and maintain virtual machines in a single workflow. It provides for easily configurable, reproducible and portable work environments on top of industry-standard platforms like VirtualBox, VMware and AWS. It also isolates dependency configurations while preserving editors, browsers and other tools to maintain a consistent environment for team members.
Visual Studio
Visual Studio is an integrated development environment (IDE) for Android, iOS, Windows, web and cloud applications. It offers a full suite of development, debugging, test, collaboration and extend tools aimed at rapid coding without losing current file context. It also provides easy access to call structure, related functions, check-ins and other details for improved pipeline management.
webpack
Webpack is an open-source static module bundler for JavaScript applications. It utilizes a dependency graph to first map all the modules that a given project requires and then bundles them accordingly. As such, it does not require configuration files even though the system is highly configurable through the use of configuration objects through either a terminal or Node.js.
Arthur Cole writes about infrastructure for IT Business Edge. Cole has been covering the high-tech media and computing industries for more than 20 years, having served as editor of TV Technology, Video Technology News, Internet News and Multimedia Weekly. His contributions have appeared in Communications Today and Enterprise Networking Planet and as web content for numerous high-tech clients like TwinStrata and Carpathia. Follow Art on Twitter @acole602.