What’s the Difference: Microservice, Macroservice, Monolith

Posted in

In tech, trends change faster than it’s possible to keep up with. Big, flashy, splashy jargon gets big 32-point headlines for a year or two before being shuffled to the dustbin of obsolete technology. Yesterday’s buzzy trend is tomorrow’s forgotten fad.

Microservices are the latest trend to fall under scrutiny. Billed as the next big thing all the way back in 2016, tech blogs are now running articles wondering Are Microservices Dead?. Even Amazon, one of the world’s biggest microservice providers, made the move back to monolithic architecture for Amazon Prime.

Microservices aren’t exactly dead, as some of the more sensationalist headlines suggest. They’re just evolving as it’s become apparent microservices aren’t the answer for everything. With that in mind, let’s dig into some of the evolving language around microservices. We’ll focus on defining microservices, macroservices, and monolithic architecture to help you decide which architectural style is the best pick for your next project.

What Are Microservices?

The easiest, most direct way to understand the difference between microservices, macroservices, and the monolith is to begin with a brief explanation of each. Let’s start with the most obvious: what are microservices? To put it succinctly, a microservice is a small component dedicated to delivering a specific functionality. They’re usually decoupled and designed to be reused across projects and applications.

Amazon’s microservices are some of the best-known and widely used examples of microservices in action. They’re an integral part of their decentralized and distributed software strategies. Amazon’s microservices can be used for everything from caching to storing objects to building databases. If you’re looking for an example of a fully-featured, robust microservice environment that can do nearly anything, Amazon’s definition of microservices is worth looking at.

Airbnb’s use of microservices is another great example of how microservices can be used in a distributed platform. We’ve also detailed how Netflix, Uber, Etsy, and SoundCloud have taken advantage of internal microservice architectures. Microservices allow each component to be scalable while also being easier to maintain, as each component can be managed by a smaller team of engineers.

Advantages Of Microservices

  1. Faster deployment
  2. Multiple teams can work on the same component
  3. Scalable
  4. Reusable across multiple applications

Disadvantages Of Microservices

  1. Can be expensive
  2. Adds processing time
  3. Requires API management and a zero-trust policy
  4. Monitoring can be complicated
  5. Versioning can become complicated with multiple teams using the same microservice

What Is Monolithic Architecture?

Monolithic architecture, also known as “the monolith,” has also been a trending topic in recent years. In reality, though, monolithic architecture is just another name for the traditional unified software design model. Monolithic could also be described as “self-contained,” where each function or component is tightly coupled as opposed to the modular development environments of microservices architecture.

Examples of monolithic architecture are plentiful, as most self-contained software and applications are monolithic. An eCommerce application could be one example of monolithic architecture in action, as each component interacts with the same codebase and backend. Traditional software like word processors and financial applications are also often monolithic.

Advantages Of Monolithic Architecture

  1. Better throughput than microservice-based architecture
  2. Easier to test and debug
  3. Simplified logging with only codebase to keep track of
  4. Easier to configure and monitor than microservices
  5. Easier to deploy, as only one package needs to be migrated to the server

Disadvantages Of Monolithic Architecture

  1. Codebase can be difficult to understand
  2. Slower and more unwieldy to modify
  3. Changes can have unexpected downstream effects
  4. Takes longer to compile
  5. Longer load times

What Are Macroservices?

If you’re familiar with tech, you’ve likely already heard about microservices and monolithic architecture. Macroservices are the new kid on the block, so they’ve not been trending for as long. That’s bound to change, as a macroservice can split the difference between microservices and the monolith.

SystemSoft Technologies describe macroservices as “large or unwieldy microservices, services from the SOA (service-oriented architecture) or partial monoliths.” Even Financial describe macroservices more broadly as “a few, big, loosely coupled services.” Basically, they’re very large or complex microservices. Or they’re stripped-down and streamlined monoliths. That’s not all they are, though, as there are still some key differences between the three architectural styles.

In Even Financial’s PowerPoint presentation, they lay out their approach to macroservices and their philosophy for using them. Even Financial’s adoption of macroservices is intended as a bridge from a monolithic architecture to microservices. In their example, they advocate for each team to decide what services they’ll need, like operating a catalog or processing images. They recommend using macroservices, which can then be converted to microservices once the architecture is set up.

Software architect Mehmet Ozkaya makes macroservices even easier to understand with a handy infographic detailing the evolution of software architecture.

Macroservices architecture is somewhere between a monolith and nanoservices. Credit: Mehmet Ozkaya.

In this example of macroservices (which they also refer to as “modular monolithic”), you can see that each service behaves like individual microservices. They share some resources, though, with individual components attached to shared databases.

Advantages Of Macroservices

  1. Easier to monitor than microservices
  2. Share data across multiple functions
  3. Less tightly coupled than monolithic architecture
  4. Modular, like microservices
  5. Easy to upgrade, as they’re more self-contained than completely modular environments

Disadvantages Of Macroservices

  1. More tightly coupled than microservices
  2. Slower to deploy than microservices
  3. Can cause security concerns
  4. Can still suffer from performance issues
  5. Can sometimes be an intermediary step rather than a full solution

The Difference Between Microservices, Macroservices, and The Monolith

Telling the difference between microservices, macroservices, and the monolith can be difficult as there is a lot of overlap between the three architectural styles. Monolithic architecture can still adopt a microservice-like infrastructure, for instance. Alternatively, as the role of each microservice component expands and grows more complex, it could take on more of a monolithic design.

To put it briefly, microservices are designed to fulfill one purpose, which is usually conducted via a technology-agnostic protocol like HTTP. Monolithic architecture, on the other hand, is more like traditional software. This has some strengths, especially regarding monetization, but the monolith also has drawbacks. Instead of being comprised of small, more manageable modules, the monolith demands that everybody works on the same codebase. This means that one simple error can have untold downstream effects.

Macroservices have most of the benefits of microservices while avoiding some of the problems that plague monolithic architecture. Macroservices behave much like traditional monolithic architecture but are more customizable, as it’s actually a series of modules unified under a single UI.

One of the principal differences between macroservices and microservices is that macroservices use the same data stores as other macroservices or monolithic applications. They also often offer access to multiple data objects and processes. This helps avoid some of the problems common to microservices that slow down processing times.

Final Thoughts On Microservices vs. Macroservices vs. Monolithic Architecture

Whatever architectural style you end up deciding on, you’d do well to keep the others in mind. If you are working on a monolithic codebase, keep microservices and macroservices in mind to help keep functions from getting out of control. Macroservices could be considered a useful step in transitioning legacy monolithic solutions to microservice-based applications. Once the monolith has been converted to a macroservice, it’s much easier to turn each component into its own microservice.

Whichever architectural style you decide on, one thing is certain. Sound design and time-honored programming principles will do more for your development than any flashy trend or glittery gimmick.