Chris Richardson is not a microservices skeptic, though you wouldn’t know it from the title of his keynote presentation, “There Is No Such Thing as a Microservice!”

On the contrary, Richardson, a software architect, author, founder of microservices.io, and consultant, who founded the original CloudFoundry.com, is an enthusiastic proponent of the microservices approach to programming because it can lead to better, faster software development in a way that is “meaningful to a business person.”

Oracle

Chris Richardson, creator of the original Cloud Foundry, shared his views on microservice platforms during the luminary keynote at Oracle Code New York.

What are microservices? They are the opposite of monolithic software programs that tend to grow in complexity the bigger they get, often causing slowdowns in enterprise software projects. Microservices break applications into small software pieces, so they’re easier to maintain, evolve, test, and deploy.

“Businesses want to innovate faster,” Richardson said during a March 21 keynote at Oracle Code in New York. “What that means for software developers is we have to build better software, faster.”

Developers can do that by organizing into small teams, reducing the time involved in defining business requirements, and increasing deployment frequency using microservices.

Richardson spoke about the advantages of microservices and a microservices architecture—but he also said microservices may not be the answer in every situation. Here are my three big takeaways from his presentation.

1. To understand microservices, think of service architecture.

Why does Richardson say there’s no such thing as “a microservice?” The reality is that microservices is an architectural style, so it’s not helpful to think about deploying a single microservice.

A microservices architecture structures an application as loosely coupled services, which means developers can refine one piece of the app with less risk of breaking the entire app.

One underappreciated advantage of microservices is that developers can use the latest technologies to build a new service, since it only needs an application programming interface (API) to integrate with other services. “A service, by definition, is deployable independently of any other service,” says Richardson.

With a monolithic app, you’re often stuck with the programming languages and technology stack you picked from the start. Microservices, on the other hand, let you “incrementally evolve your technology stack one service at a time,” he adds.

For large, complex applications, microservices “are almost always the best choice,” he says.

2. Forget “micro” and focus instead on a single business function.

“The first thing you hear is ‘micro,’ which kind of suggests that these services should be tiny,” says Richardson. That has spawned rules of thumb, such as a microservice should not be more than 100 lines of code, or it should comprise a single REST endpoint.

It makes more sense, says Richardson, to think of microservices in terms of the business capabilities they support. He recommends that each service:

Performs one business function. “It should do something that is meaningful to a business person.”

Is developed by teams of only six to eight people. “Each team is responsible for 1 or more services, so that will constrain the size of your service.”

Reduces lead time—the time from concept to deployed code—and is deployed at a high frequency, even multiple times a day.

Develops, tests, deploys, evolves, and manages software programs that are the embodiment of business capabilities. The size of the microservice is secondary, says Richardson.

3. Microservices are not always the answer.

Despite all the benefits, applications based on a microservices architecture can actually add new complexities. For example, monitoring can be more challenging, because there are now many mini apps to deploy and watch. And testing can get complicated, given the dependencies among more, smaller software elements.

“You don't want to underestimate the complexity of that change,” Richardson says. That said, automation tools help with these challenges.

In other words, microservices bring a new set of nuances and considerations to software development. “I feel as developers, we’re constantly chasing the latest shiny silver bullet,” says Richardson. “But every technology has downsides.”

Are microservices right for your business or application? There isn’t a single answer, says Richardson. Development teams will have do their homework.

But, where they are a good fit, microservices can help developers and IT leaders accelerate software innovation so their companies don’t get steamrolled by digital disruption—or “Uber-ed or Netflix-ed,” as Richardson puts it.

Microservices are just one of the development trends being discussed at Oracle Code, a global, 20-city event series with stops in Toronto and London coming up. The free events bring developers together to discuss modern programming practices, including containers, chatbots, machine learning, open source, and much more. You can learn more about these trends and register for Oracle Code at Developer.Oracle.com.