However, actually building microservices-based applications may be easier said than done.
Berkholz, the 451 Research analyst, says teams that have embraced an agile or devops mindset are more likely to succeed in building microservices applications. Devops is the practice of uniting developer and operations functions – literally or in some team-based fashion.
In these environments, code is written quickly, tested and deployed rapidly. Many devops shops have embraced an automated, self-service infrastructure, such as a highly virtualized or cloud environment for test and development or production-grade apps. 451 Research studies show that two-thirds of organizations have adopted agile methodologies for application development and about 40% use devops. Those are the organizations that Berkholz says are the most likely to succeed with microservices. Organizations that have not adopted these next-generation application development trends may find a transition to microservices more difficult.
Typically in these agile and devops shops, application containers are being used. For Pick at HBC, he said containers and microservices are symbiotic. When you break up a monolithic application into components, running those services in containers allows application developers and the infrastructure operations team to be on the same page. Developers know to package the app in a container and the operations teams prepare the infrastructure to run containers.
There are other infrastructure implications too for microservices. Forrester analyst Dave Bartoletti says the role of IT infrastructure inherently changes when developers in their organization begin embracing these trends.
“Developers who build microservices will not go to IT and file a ticket for new VMs,” he explains. Agile developers have an expectation that infrastructure resources are available on demand, via an API and elastically scalable.
There are, of course, plenty of tools available to support that type of infrastructure environment. Private cloud software from VMware or OpenStack can be used to build an internal cloud. And public cloud platforms from Amazon, Microsoft, Google and others are available if IT doesn’t want to build out the infrastructure themselves. A PaaS platform from Cloud Foundry or Red Hat can be used to automate infrastructure control. So-called ‘serverless’ computing platforms are ideal for event-driven applications, such as those in Internet of Things use cases. Fundamentally with each of these platform changes the role of IT shifts from provisioning infrastructure to setting up the environment that developers can deploy microservices on to themselves.
What microservices are best for
Not all apps will benefit from a microservices architecture. The app has to be complex enough that it can be broken into a number of different components, Berkholz says. If it’s a straightforward app that does a single function (think of a marketing campaign with a single website that will only be live for a number of weeks), then there’s likely no need for microservices. A complicated app with many components, such as one built to handle streaming Internet of Things data, could benefit from being developed and managed as individual components.
Sign up for CIO Asia eNewsletters.