The monolith of traditional enterprise software architecture has been crumbling for many years. The introduction of microservices and containers has the potential to speed this process and give big business a more efficient way to create portable applications that scale. This shift is happening in tandem with advances in tooling and an overall change in how enterprises think about their development and deployment methodologies. The transition begins with accepting that previous attempts at standardization, distribution and integration simply did not go far enough.
From service-oriented architecture to microservices
Where SOA paved the way, newer architectures hold the promise of even greater gains for teams seeking to shift to a more adaptable, cloud-ready development process. "Microservices, as an architecture, [have] evolved a lot over the years. We used to joke that it was 'the next coming of SOA,' because SOA was all about connecting things by way of APIs or a common protocol," said Chad Arimura, CEO at Iron.io, based in San Francisco. "At the time, SOA usually involved enterprise service buses that put you in a box around an enterprise stack. It was a walled garden. The reason microservices have become so popular is that we've now broken out of those walled gardens and created APIs around applications that communicate openly across the web and integrate with each other using standard protocols like HTTP, JSON and REST."
In a similar way, containers are offering the enterprise a fresh spin on the virtual machine (VM), with less demand on resources. Arun Gupta, Java champion and vice president of developer advocacy at San Francisco-based Couchbase, mentioned tools such as Chef, Puppet and Ansible that can help with configuration. But having the ability to create some helpful scripts doesn't go far enough. "You can set up a big VM, and on that, you can run a few processes. Yet, that doesn't cover how you package those processes, isolate those dependencies and so on." The process of configuring and maintaining applications in a multicloud environment is still labor-intensive. Docker may offer a more streamlined way to set up the OS and ensure all libraries and dependencies are automatically provided.
Microservices and containers -- better together
How do Docker and microservices mesh together? According to Arimura, "Containers and microservices architecture both have benefits, and the technologies can certainly advance in parallel. But the pairing of the two is very nice, because a microservice is small enough to containerize easily, compared to a large, monolithic stack. Containers are better suited to lightweight applications; small, ephemeral workloads; and background jobs or tasks."
Small gains that really add up may occur at the extreme end of the trend when developing portable applications. Arimura pointed to the emergence of microcontainers that are just 30 MB to 40 MB. These tiny containers are designed to be ultra-lightweight and don't require much network overhead. "With this pairing, you end up with microservices that are very portable, that you can use anywhere on any infrastructure for on-prem or cloud use."
Microservices often model best practices for the enterprise
For sectors like the financial service industry, adoption of any new concept tends to be a slow, painful process. Peter Lawrey, CEO at Higher Frequency Trading Ltd., understands the hesitation. Yet, there is plenty of low-hanging fruit that enterprises could be enjoying if they simply made a shift in mindset.
"There's this feeling that, 'We're at a bank, we can't have nice things.' But in reality, with microservices, you are bringing together best practices that have been around for a long time. In fact, banks are often using a decent percentage, perhaps 40%, of these techniques already," Lawrey said. "By rebranding or taking a different view on things, they can see this and realize where the quick wins are. Maybe they can take that percentage to 50% to 60%. It's an easy way to make significant gains without much effort or risk." These changes don't even have to involve the core, highly customized and finely tuned software of the business, but could focus on build, deployment, monitoring or management processes.
Continuous delivery entails continuous testing
Alon GirmonskyCEO, BlazeMeter
Alon Girmonsky, CEO at BlazeMeter, based in Palo Alto, Calif., provided insight into how containers that hold microservices are providing new opportunities and challenges for creating better-quality code. With integration moving from a once-in-a-lifecycle event to something that happens with every code commit, testing is catching up to the pace of development. Cumbersome, resource-intensive staging environments are being replaced with containers that can be born and terminated all in the span of a few minutes as a background activity with zero human touch. "Today, the entire process can go inside a container and run in a few seconds. And this happens with every code commit. It is less painful and costly than the old way of doing things," Girmonsky said.
However, with software being dissected into microservices and development teams potentially submitting hundreds of commits per day, the testing infrastructure itself must be robust. According to Girmonsky, this is an important issue the enterprise faces moving forward. "How do you test and debug? How do you even understand how to model an asynchronous service?" Girmonsky said. "The issues are solvable and have been solved in many cases. Don't reject microservices due to these issues that are sometimes handled poorly. You just have to learn how to handle them well." This includes having a grasp of methodology and selecting the right support tools.
The tools of today are building the software of tomorrow
Once again, the enterprise is faced with not one path forward, but many paths that converge when it comes to creating portable applications with Docker and microservices. Arimura drove this point home in his closing remarks. "What we are seeing is containers, serverless, microservices and multicloud. The confluence of those trends is where we are seeing software architecture going and where the applications of the future will be built. If you architect them using those four trends, you are positioning yourself for a modern enterprise stack."
It is tools that are giving big business the control and flexibility they need to make software work in a multicloud environment. Iron.io's container-based workload management and BlazeMeter performance testing for microservices are just two examples of services that help smooth the way for enterprises to prepare their architecture for the future.
How to revolutionize the desktop OS
Hot topics at DockerCon 2016
Why using portable apps in the cloud is difficult