Architecture is an important aspect of software development for most solutions regardless of the programming language they are written in. A well-architected software solution lends itself to being easy to maintain, debug and add extensions with new features. Whereas a poorly architected software solution can be difficult to change or debug.
Microservice Architecture or MSA is growing in popularity as a paradigm for structure software. In this blog post, we look at:
- What is Microservices Architecture?
- What are the benefits of Microservices Architecture?
- Who is using Microservices Architecture?
What is Microservices Architecture?
Way before object-oriented programming, software applications were developed in a monolithic fashion, developed from top to bottom, line after line. Sometimes, these programs had no real structure or consideration for future maintainability which often made such applications difficult to maintain or change.
The advent of object-oriented programming, and subsequently service-oriented architecture (SOA) changed all of this. Modern applications are no longer built as monolithic solutions. Instead, they are often built as collections of loosely coupled services.
Microservices Architecture is the next evolution of Service Oriented Architecture whereby each microservice can be developed, independently of the other, even in a different programming language if required, which can run on its own. At the heart of it, each microservice satisfies a use case or business requirement.
A popular way to implement microservices is by leveraging protocols such as REST/HTTP and often JSON. As an architectural design pattern, a lot of SaaS providers have started to adopt microservices as a key approach to the development of their solutions.Modern applications are no longer built as monolithic solutions. Instead, they are often built as collections of loosely coupled services. Click To Tweet
Some of the main players in the tech world like Microsoft and IBM are already implementing this pattern. But before we explore who’s using microservices architecture, we’ll look at some of the benefits this approach to software development has.
What are the benefits of Microservices Architecture?
Microservices Architecture has been growing in popularity and this ultimately comes down to the benefits it can bring to software development process. In an increasingly interconnected world and as software continues to increase in its complexity, having the option to componentize functional areas or user stories into discrete, independent microservices can bring many benefits.
Some of these benefits can include, but are not limited to:
- As each service represents a single functional area or business use case, your codebase is easier to understand. This can also have the knock-on effect of improving developer productivity.
- With an easier to understand codebase, it is much easier for developers to identify faults in an application.
- You can accelerate the delivery of your software solutions as each microservice is developed independently of the other. Multiple programming languages can be used if you want, thereby increasing the size of the talent pool you have access to. All of this helps improve the velocity of your team.
- As everything is encapsulated into individual microservices, you only need to deploy the services that you’ve changed and not the entire application, this can make your deployment process more streamlined.
- As microservices are, by their nature, componentized and self-contained, they naturally lend themselves to being integrated with other applications or services via industry standard interfaces such as HTTP or REST. This makes your applications truly scalable.
- As each microservice is organized around business cases and not individual projects, microservices can be reused and easily slotted into other projects or services, thereby further reducing development costs.
Who is using Microservices Architecture?
Now that we’ve explained what microservices architecture is and looked at some of the benefits of this architectural design pattern, it’s time to look at microservices in action in the real world.
Rob Birgham, who is a senior AWS Product Manager shared a story where he explained how microservices architecture was used to let Amazon deliver software at scale.
Back when Amazon was newly launched, the website was developed as one big monolithic solution, a lot of web applications were built that way back then. Over the next few years, however, as Amazon branched out to other retail areas other than books, the number of developers required to build, debug, integrate and maintain the website started to impact the team’s productivity.
It wasn’t out with the ordinary to allocate days, or sometimes whole weeks, to merge developer changes into the master branch of the product, again all affecting how quickly the team could ship product.
Realising that working like this wasn’t scalable or sustainable if the business wanted to grow, Amazon decided to decouple their monolithic codebase by adopting a microservices architecture.
After this process was complete, it then allowed Amazon to design a highly decoupled architecture whereby each service could function independently which consequently meant the business could be agiler in their software delivery.
eBay is another online giant that implemented the microservices architecture. The online marketplace processes millions of transactions a day. CTO Steven Fisher goes on to say that eBay consists of over 1,000 services with “front-end experiences that call back service APIs”. There is a service for each job that must run within eBay and each development team is responsible for its own set of services. By adopting microservices architecture, the team can:
- decouple and remove unnecessary dependencies
- make it easier to allocate new development work
- make it easier to add new functionality
When new development has been completed on a service, eBay is then able to spin up a continuous integration environment in its cloud environment with the required infrastructure and can then transition the new development or microservice through the respective DEV, TEST, STAG and PRODUCTION release paths.Microservices Architecture has been growing in popularity and this is ultimately down to the benefits it can bring to software development process. Click To Tweet
All of this is made possible due to the independent nature of each microservice. This just wouldn’t be possible if eBay’s web application was still developed as one big monolithic software solution. With as many as 800 million items for sale on the site at any given time, eBay can’t afford to have much of the way of scheduled downtime.
You can read more about eBay’s infrastructure and microservices implementation here.
In this blog post, we’ve looked at Microservices Architecture. We discussed what some of the benefits of this architectural pattern are and how they might be able to add value to your business. We’ve also highlighted some points that might give you some ideas in terms how this pattern can help software professionals better structure their applications. Finally, we finished up with looking at how Amazon and eBay have adopted microservices into the software the powers their solutions.
Here at Growth Acceleration Partners, we have extensive expertise in many verticals. Our nearshore business model can keep costs down while maintaining the same level of quality and professionalism you’d experience from an onshore team.
Our Centers of Engineering Excellence in Latin America focus on combining business acumen with development expertise to help your business. We can provide your organization with resources in the following areas:
- Software development for cloud and mobile applications
- Data analytics and data science
- Information systems
- Machine learning and artificial intelligence
- Predictive modeling
- QA and QA Automation
Latest posts by Rodolfo Acuna (see all)
- Improve Your Software Delivery with Release Management - July 19, 2018
- An Introduction to Microservices Architecture - June 28, 2018
- Construct an Agile road for app development - March 12, 2015