We’ve all heard the saying, “If so-and-so jumped off a bridge, would you?”
It’s an idea that’s fundamentally flawed and highly controversial, but the concept generally makes sense. Maybe you trust the jumper completely, maybe you just feel like jumping too, or perhaps most importantly, maybe there is a legitimate reason to believe that the jumper knows something you don’t.
So when big players such as Amazon, Netflix, Ebay, Twitter and PayPal start making radical changes to their technology infrastructure, it’s worth wondering: What the heck do they know that we don’t?
It’s also important to ask the question, “How high is the bridge exactly?” In the case of microservices, which all of these monster enterprises have embraced as part of their radically redesigned architecture, we’re talking less Golden Gate and more like hopping off a small ledge into a pool of deep, refreshing spring water.
In this article we’ll explore all things microservices – what they are, why businesses are adopting them, and what advantages switching to a microservices architecture brings to your business.
Important disclaimer: In no way are we advocating for jumping off a bridge of any kind. This is metaphorical only, so please, don’t be a dummy.
The Concept of Microservices
Before we take a deeper dive into what microservices are and the many benefits behind them, let’s do a quick real-world analogy:
Say you just bought a new car. This sweet new ride has all the bells and whistles, and you’re feeling like king (or queen) of the world. But as with almost anything else, your new wheels also come with a certain shelf life. The further you go and the more you use it, the more wear and tear it accumulates.
For example, one of the wheels snags a nail and goes flat. What do you do? Replace it. The carburetor fails? Get a new one. You can even get a new paint job or upgrade your cold air intake for a better look or more speed. So on and so forth.
This is essentially the concept of microservices: a bunch of interchangeable parts that work together in harmony to comprise a much larger machine (or network), all of which can be upgraded or replaced whenever necessary.
Even better still, using the concept of microservices in this analogy means that you could do all that tweaking and upgrading on the fly, without even so much as a need to stop by a repair shop. Just keep on cruising while the parts fix themselves in real-time.
Compare that to monolithic software, which is more like a car made from a 3-D printer. Every part is dependent on the others, and when one thing breaks down, you’re suddenly left with a lemon.
What are Microservices?
Microservices are independent, single-function modules with carefully defined interfaces and operations. They sit between end users and business services, replacing the business logic and data access layers of a traditional monolithic application design. Microservices effectively decompose applications into multiple independent components.
Microservices can be deployed, tweaked and redeployed with minimal impact on the overall application, which enables more flexibility when it comes to app development and more resilience to service disruption.
Microservices can operate at different levels of granularity. They include coarse-grained core modules for applying business rules to fine-grained API microservices designed to expose functionality externally, allowing further expansion of an application.
To enable an application to function, microservices need to talk to one another. They do this using simple routing protocols similar to those used by UNIX systems. This is in contrast to monolithic applications, which have to route all requests through a central Enterprise Service Bus (ESB).
Why Big Businesses Love Microservices
Although monolithic architectures have served big business very well over the early years of the internet, their limitations have started to become serious obstructions to business development.
For example, the marketing team may spot an opportunity which requires coding in some new functionality to an existing application. Even if the actual changes involve very small sections of code, the entire application may need to be redeveloped and a new version created. To revisit our previous car analogy: think of replacing a burnt out spark plug, but having to take apart the entire engine to do it.
In a fast-paced business environment, changes which require months or years to enact are no longer sustainable in the long-term. Not only is it incredibly expensive, but by the time your new version is ready for deployment, the situation on the ground will have already changed again and you’ll be right back at square one.
To cope with constant change (and to drive it), iterative Agile development processes have become the new norm in DevOps. Microservices fit neatly in with this new paradigm.
Microservices are simple to deploy and the code is relatively easy to understand. Applications can now be created or modified and tested on a weekly lifecycle, speeding up development and ensuring that businesses can keep pace with the competition. And since separate microservices can be built using different languages and technologies, there are far fewer barriers to deployment. Changes to applications can be managed on the fly more easily and without risk to operational integrity.
Businesses can also easily isolate and repair a fault with minimal disruption. When a microservice goes down, the application can usually continue to function while the issue is resolved. In other words, if your car’s spark plug burns out, that bad boy will continue to purr while the faulty plug gets repaired on the fly.
When a problem does arise, who is responsible for fixing it? On an organizational level, microservices can be managed by cross-functional teams, with each team taking responsibility for the development and performance of the service. This makes it much easier for the executive team to assign responsibility for getting a specific microservice back online. Or, as Amazon puts it: “You build it, you run it!”
Architectural Advantages of Microservices
While there is a certain amount of increased complexity with microservices, an architecture based around them offers several important advantages.
Microservices are an example of modular design principles, which are popular across many fields and industries, from car manufacturing to web design. As self-contained modules, microservices can run their own processes and be independently deployed. As mentioned before, they can even be written in different languages (although this is discouraged wherever possible) and make use of different data storage techniques. This makes it much easier to add new processes to an existing application, extending its function without undue complexity.
Microservices can also make an application much more future-proof. As the Internet of Things (IoT) becomes more established and businesses move towards remote and decentralized workflows, the number of devices connecting to an application will likely increase. That scale of development is simply unsustainable with traditional monolithic architectures.
Microservices in the Cloud
In case you’re wondering if microservices are compatible with cloud architectures, the answer is a resounding yes, with containerization and serverless technologies enabling rapid testing and deployment without the overhead of heavy VMs.
Microservices can also form part of hybrid systems, preserving the function of some legacy services while enabling easier development of other applications. There are certain issues that could arise, though, so if you don’t have a lot of confidence or experience with cloud architecture, it’s a good idea to bring in top-level cloud consultants like Shamrock Consulting Group to ensure that your hybrid or cloud network configuration is set up correctly for your business.
Availability and Risk Avoidance
As the popularity of microservices continues to rise, so too has the availability of automated testing and monitoring tools. The best of these can introduce further efficiencies into the development process, freeing DevOps teams up for creating and refining applications.
From a risk avoidance perspective, microservices also take away the ‘single point of failure’ that can bring a network crashing down in an instant. Amazon and Netflix know more than most what the effects of even a temporary loss of service can do to both profits and consumer confidence, so reducing any single point of failure should always be a key consideration.
Businesses that rely on a single ESB for communication or logical database for storage run the risk of a just small problem causing a major outage. Don’t let this be you! By implementing a microservice-oriented architecture, your network will be able to tolerate faults much more gracefully, with other services stepping in to pick up the slack. At worst, an application may experience some loss of function or performance, but the chance of a complete failure is much lower.
Make the Move to Microservices
The benefits of a microservice-based architecture are vast, and it’s only a matter of time before every major data-handling business decides to move in that direction. Make no mistake, the move to microservices does require a good amount of preparation, but it’s worth it in the end.
If you want to get ahead of the curve and not get left behind, or if you have general questions on how to get started with microservices, Shamrock can help. Feel free to reach out via email at [email protected] or give us a call at (310) 955-1600. We’ll help you make the leap, no bridges necessary.