Software development genetics, part 2: Microservices, containers and the DevOps connection

Two other software development methodologies—microservices and containers—are bringing genetics sciences-like changes to software development environments

Software development genetics, part 2: Microservices, containers and the DevOps connection

In part one of this two-part post, I walked through how DevOps and the development philosophies of lean and agile are related. In part two, I make the case that similar to the dynamics I described in Recombinant Communications, where the application programming interface (API) economy and as-a-service industries are making possible revolutionary innovations in the enterprise communications market, these "genetics" concepts also apply elsewhere.

Specifically, two other software development methodologies—microservices and containers—are bringing genetics sciences-like changes to other software development environments. As described in the first post, DevOps, lean and agile are the tools. And increasingly corporate organizations are adopting those concepts.

In this post, we’ll discuss the “genetic” material. In the analogy, this material is represented by the concept of containers. The traits that containers express are microservices.

Defining microservices

Peter B. Nichol explains that microservices are “independently deployable services [that] have limited responsibilities and run as a suite of smaller services that together comprise a single application.”

Paul Rubens says, “Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another. A container consists of an entire runtime environment: an application, plus all its dependencies, libraries and other binaries, and configuration files needed to run it, bundled into one package.”

And Pete Johnson says microservices offer “the ability to break a problem into smaller pieces, … and containers offer a way of doing that on a scale not possible before.”

A new application biology

In the way that genetic materials can be recombined to create biological results not found naturally, containers represent a way to cross-breed software that traditional development might never intermingle. And APIs represent a way to insert capabilities between diverse applications. Containers and the microservices similarly provide “genetic” material that creates opportunities for other forms of application "recombination."

Popularized by the open source Docker movement, the concept of the container is spreading organically to other deployment platforms, including Kubernetes sponsored by Google, Amazon Web Services and Microsoft Azure. Although established vendors may resist, as in nature, cross-pollination is inevitable.   

Johnson said, “For the daily lives of developers, containers are revolutionary.” I contend that the impacts stretch much further. Similar to how genetically modified crops have revolutionized agriculture, I predict that the new “genetics” of software development will have broad-ranging implications. When the application capability from one vendor can be inserted to complement features of another, not only will new innovations result, but the nature of competition will change. It will be similar to how genetically modified foods have wide ranging economic, social and environmental effects. These new “genetic” sciences of software development change everything.

The DevOps connection 

Pulling this discussion together, we have a trend where corporations are increasingly employing DevOps. Many that do also embrace agile and lean software development philosophies. The ability to provide microservices expressed via containers increases the flexibility and drives down the barriers to transposing software expressed traits. A new software development biology results.

The two worlds I have described across these posts—development techniques used in enterprise communications and the techniques used in other software development environments—are even beginning to themselves “cross-breed.” An example is an Avaya Breeze Snap-in. A Snap-in is a container, coded in a Java, that provides a microservice. If you really want to get your geek on and have about 10 minutes to spare, you can watch a Snap-in being built in the video Create Your First Snap-in.

A brave new world of software development

We might conclude from all of this that we have entered a brave new world of software development. Like genetic engineering through recombination is transforming life itself, DevOps, agile/lean software development practices, microservices and containers are transforming how software gets built and combined. Where once we had monolithic stacks of application capabilities encapsulated in proprietary packages, as Nichol points out, today we have the “benefits of the microservices architecture” and DevOps recombination.

This article is published as part of the IDG Contributor Network. Want to Join?

How to protect Windows 10 PCs from ransomware
Shop Tech Products at Amazon