Microservices Architecture and Software Development

March 24, 2016

By Steve Mezak

architecture-skyscraper-urban-city-office.jpgMicroservices architecture had been quickly gaining in popularity, so much so, that two years ago the term had zero interest on Google. Developing out of the need to answer some of the challenges associated with monolithic architectures, microservices provide new ways to develop and deploy software for organizations of all sizes.

 

Great, so What Are Microservices?
Microservices are a fairly new way to design software applications as groups of independent services which can be deployed separately. So separately that different services can even be written in different programming languages. Basically, microservices are just another architectural solution for designing complex, and mostly web-based, applications.

One of the biggest benefits to a microservices architecture is scalability. In The Art of Scalability the authors utilize a model called the Scale Cube, which defines application scalability along three axes:

  1.    X-Axis: Horizontal duplication or scaling by cloning applications
  2.    Z-Axis: Data partitioning or scaling by splitting similar things
  3.    Y-Axis: Functional decomposition or scaling by splitting different things

While monolithic architectures scale relatively well along the X and Z axes, it’s the Y axis scaling where microservices really shine. By allowing services to be broken up and made independently deployable, you can save time by deploying individual services as they are ready instead of waiting to deploy once the entire application is finished. However, while decreased overall development time is an attractive benefit, there are many other advantages to deploying a microservices architecture.


Improve Fault Isolation
When something goes wrong within your software applications, debugging or searching for the error can be a time consuming process, especially as the code grows over time. The very nature of a microservices architecture should help eliminate this costly down time. Since each service can run independently, faults in one application should not take down the others, leaving your user base with at least some functionality. Furthermore, by isolating the application that is underperforming it makes it easier to find and repair critical issues within the code.


Eliminate Reliance on a Single Technology Stack
Since each microservice is independently deployable, you are free to mix and match languages, libraries and data stores. This ability enables large amounts of technical diversity. While it might seem mundane, there are some great advantages over a monolithic deployment.

In a monolithic architecture you can only deploy one version of a library leading to problems when it’s time to upgrade, as one part of your system may need the upgrade at the cost of functionality in another part of the system. The problem may only be exacerbated as the code grows large over time.

However, while a microservice architecture can eliminate some complexity, it’s important to note that you may be trading one level of complexity for another by transferring issues within the application to issues between applications.


Get New Developers Up to Speed Quickly
Over time your software applications can grow larger and larger as more and more code gets added to increase functionality and keep everything current. This makes it increasingly difficult to introduce new developers to your existing applications. Utilizing a microservices architecture, you can break your applications down into smaller functioning pieces. This allows developers to learn the inner workings of your software quicker and easier than if it was all packaged together under a monolithic architecture.

Microservices lend themselves to distributed software development, enabling companies to take advantage of the vast global talent pool. By utilizing a microservices architecture on your next project you could deploy multiple teams to work concurrently on the various modules, speeding up your time to market and mitigating some of your software development outsourcing risks.

If you’re struggling with where to start, or lack the time and resources necessary, to research and evaluate software developers who understand microservices architecture, contact us. Access to our certified partner network and in-house software development experts is free and we’ll ensure that you find quality partners for all of your software development initiatives.

Subscribe

Learn more about successful outsourcing and get the latest from Accelerance.