Traditional monolithic software is generally a singular large block of code. When anything goes wrong it can bring the entire application down. New cloud-based applications are assemblies of small microservices that are each called upon when needed. If one should develop a problem the software simply discards it and re-instantiates another one. Microservice-based software is therefore far more resilient, far more transportable, and far more flexible. This is where all coding is going.
A new core objective for software development has emerged and, as with all new emerging things, there are many definitions emerging for them. In this case, one could say we’re driving CI/CD to get to CD/CI. That is, we’re embracing the idea that software developed using a methodology of Constant Iteration & Constant Delivery will lead us to Constant Development and Constant Improvement.
That last one is the big one, Constant Improvement. Since cloud computing enables everything to happen faster it follows that we need a way to take advantage of that and have software that adapts to changing business rules incredibly fast, constantly. Evolving software.
Changes in Code
The most fundamental change is from “monolithic” programming to microservices. Like the famed monolith in 2001: A Space Odyssey or your local handball wall, picture a big block. Up until now, software has been architected as a great big block of code running on some server somewhere. The challenge has always been that if anything went wrong with the runtime of the code, the software usually stopped functioning altogether until the problem was corrected.
Programming has always been modular to some extent. We’ve always had functions and subroutines we could call from the main program to perform frequently needed activities.
Microservices are the natural extension of that. In Microservices Architecture each function that needs to be performed is a small module which is referred to as a “service”. Rather than be tightly sequenced, these services are loosely coupled, so any of them could be called by the main process at any time. Beyond lending incredible flexibility to the software, it also adds tremendous resilience. Should anything go wrong with a particular service it is discarded and instantly re-instantiated. This does not stop any other part of the software from functioning.
Adding to the flexibility, and making microservices architecture ideal for cloud computing is the fact that different services can run on different processors.
Changes in Coders
This changes the shape of programming teams completely. Now, instead of one team with many subteams developing segments of a monolithic program, each function of the architecture may be assigned to different teams. Since the services each stand alone, different teams can be dedicated to develop different services. A mistake made by one team on one service will not affect the work of the other teams. Small modular services are self-documenting, easily understood, simple to test, deploy, and maintain. Teams can now function on specific business rules to develop best-of-breed services for each of them, and do so in parallel to each other adding tremendous speed.
All About Agility
The entire concept of “DevOps” helps us understand that greater results are achieved when the development team works hand in hand with the operations team. The cycle starts with the development of code. This is then deployed to users and operated by operations. Operators begin soliciting feedback from users immediately, and feed that back to the developers who immediately begin work on the next iteration of the code in the form of improvements to various services. These updates are rapidly deployed to users and operated by operators who solicited immediate feedback and so on, and so on, and so on.
This rapid, iterative process is the constant development, constant delivery, and constant deployment described early that leads to constant integration, constant iteration, and ultimately constant improvement. A truly responsive process that takes fullest advantage of the power of cloud computing.
No More Monoliths
As you are beginning or further developing your software development career, talk to a New Horizons career counselor about microservices and the many products that help create, test, orchestrate, deploy, and manage them. This is the beginning of the new DevOps-driven, microservices-enabled world.