An O'Reilly study polled engineers about their experience with microservices.
In a new survey from O'Reilly on how, why, and in which scenarios people are using microservices, researchers found that many organizations are adopting and experiencing success with it. The Microservices Adoption in 2020 study was written by Mike Loukides, vice president of content strategy for O'Reilly, and analyst Steve Swoyer.
The survey was conducted from January 31, 2020 to February 29, 2020, and included responses from 1,502 software engineers, systems and technical architects, engineers, and decision-makers from around the globe.
While less than 10% of respondents said they had "complete success" with microservices, 55% said they were "mostly successful" and overall, 92% of respondents reported at least some amount of success with it. More than 60% said they have been using microservices for a year or more while nearly half said they have been using it for at least three years.
SEE: Deploying containers: Six critical concepts (free PDF) (TechRepublic)
About 30% said their employers are investing fully into microservices, migrating or implementing a majority of their systems using it.
"The majority of organizations have already started to migrate their monolithic systems, applications, and architectures to microservices, and many more are looking to begin that transition," said Mary Treseler, vice president of content strategy at O'Reilly.
"Breaking a monolith into microservices has clear engineering benefits including improved flexibility, simplified scaling, and easier management--all of which result in better customer experiences."
Just 8% of respondents said they had no success at all with microservices, but the vast majority of respondents said they saw concrete benefits and success from it. The study found a few clear factors that were tied to success with microservices, including development teams that controlled the entire development cycle.
Respondents said the biggest challenges they face with microservices adoption revolved around complexity and decomposition. Loukides and Swoyer note in the study that anecdotally, they have heard that most organizations are deploying microservices projects as replacements for large, legacy, monolithic software systems.
These systems themselves are already fairly complicated and have been in place for decades, making the process of divesting from them part of what made microservices complicated.
"The complexity of the monolith that's being replaced is a 'sunk cost' that has only partially been paid; it continues to extract a toll as that software is extended to support new features, changing business models, changing modes of user interaction, and more," the study said.
"Microservices may require paying a complexity cost again, but that's where the tradeoff comes in: In return for the complexity of re-engineering the system, you get increased flexibility, including a simpler path to adding new features, simpler management, simplified scaling as the organization grows."
There was a split among respondents between those who used containers to deploy microservices and those who did not, with most of those who did reporting success with it. The report found that the use of containers was one of the strongest predictors of success with microservices.
According to the report, most microservices are instantiated using a technique other than containers while on the other hand, most organizations that use microservices also instantiate at least some of them in containers.
"It seems adopters either go (mostly) all-in on containers, using them for most microservices, or use them sparingly. There's a critical, and intriguing, 'but' here: A higher than average proportion of respondents who report success with microservices opt to instantiate them using containers; conversely, a much higher proportion of respondents who describe their microservices efforts as 'Not successful at all' do not instantiate them in containers," the report said.
"With microservices, instead of deploying one monolithic application, you may need to deploy and manage hundreds or thousands of services. Using containers to standardize deployment, and container orchestration tools to automate ongoing management, greatly simplifies the burden of deployment and management. Containers are a simplifying technology."
Half of respondents who reported "complete success" with microservice deployments instantiate at least 75% of their microservices in containers. More than 80% who reported being unsuccessful with microservices said they used means other than containers.
The study touts the use of containers for microservices because it addresses one of the main complaints respondents had: The complexity of it all.
Another pain point for respondents was around centrally-managed databases. The survey found that those who did not use a centrally-managed database with microservices often reported failure with it.
"While container adoption in microservices contributes to microservices success, we saw a lower percent of container adoption than we did in our 2018 report," said Treseler. "For some adopters, technical debt from proprietary or monolithic systems might constrain them from using containers and it might be faster and less costly, at least in the short term, to deploy microservices in a database or application server."
- Listen to TechRepublic's Dynamic Developer podcast (TechRepublic)
- How to become a developer: A cheat sheet (TechRepublic)
- Microservices: A cheat sheet (free PDF) (TechRepublic)
- Hiring Kit: .Net developer (TechRepublic Premium)
- Programming languages: Developers reveal most loved, most loathed, what pays best (ZDNet)
- It takes work to keep your data private online. These apps can help (CNET)
- Programming languages and developer career resources (TechRepublic on Flipboard)