June 6, 2023

Last Updated on December 28, 2023

Microservice architectures are increasingly popular for building web applications. You’re probably familiar with traditional “monolithic” software architectures, where you have a large, unified application that you incrementally add functionality to. Microservices architectures are at the opposite end of the spectrum. They represent a “deconstructed” design consisting of separate services, each with a specific role to play in the overall system—a concept called “single responsibility.”

At the design level, microservices certainly look like a great idea. Instead of trying to figure out how to update a giant, complex ball of code with a 15-year history, you can just add a new service to your microservice architecture.

But microservices come with their own complexities. Ultimately, very few organizations only build applications from microservices. A popular option is “hybrid” architectures where you may have a monolithic legacy code base forming the core of a system, with newer code consisting of microservices.

Benefits of microservices

Microservices offer several advantages for orgs looking to update legacy/foundational code. They can be written using a wide range of modern software languages or frameworks. And being discrete, small units, they are comparatively easier to update and maintain versus a monolithic block of older code whose developers have long since departed. These qualities make microservices appealing to teams looking to add new functionality to an existing system, or to embrace new technology in an introductory way.

Another benefit of microservice architectures is they can increase the level of autonomy between development teams, allowing multiple teams to work in different ways. If you have one team that’s focused on real-time systems problems and another team working to deliver mobile experiences, a microservice approach gives them more flexibility to choose languages or frameworks.

What about debugging?

With traditional applications, tools like debuggers can help you understand the “flow” through an application: where it branches, what functions call what other functions, and so on. With microservices, that can get more complicated.

But as software development has changed, so have the supportive tools like debuggers and logging/monitoring tools. Even so, if you’re like Netflix working with thousands of microservices, an old-school architecture diagram for how they relate can get very complicated. This increases the importance of an architect role on the software development team.

What’s next?

For more guidance on this topic, listen to Episode 119 of The Virtual CISO Podcast with guest Laura Bell Main, CEO at SafeStack.