Continuous Transformation Blog

Microservices: Their Use, Benefits, and Potential Drawbacks

Written by Tim R | February 14, 2018

The foundations of the game changer

At a glance:

  • Microservices are a way to build flexible, independently deployable software for those working in service-oriented landscapes.
  • The benefits of microservices include (but aren't limited to): Autonomous deployment; lower IT costs; and stronger DevOps support.
  • Microservices inventorying is an indispensable element of modern EA Management that can be accomplished with select tools and associated integrations.

 

Allow us to present a quick run-down on the world of microservices. Reason being, it’s a practice at the centre of how LeanIX itself works and is something we actively encourage/facilitate through our product.

Perhaps all of this will come as a review, but either way, let’s begin…

 

What are microservices?

Microservices is an implementation approach for service-oriented architectures (SOA) used to build flexible, independently deployable software systems. Services in a microservices architecture (MSA) are processes that communicate with each other over a network to fulfill a goal. These services use technology-agnostic protocols, and the microservices approach is the first realization of SOA that followed the introduction of DevOps (to be discussed later…).

 

 

It is a method becoming exponentially more popular for building continuously deployable systems.

Applications designed using this architecture are comprised of small, modular, independent services. There are many benefits of having single-functioning services with their own supporting code base. These services are loosely coupled, communicate through APIs, and are generally easier to develop, update, and maintain.

Many of the features of microservices are listed in the image below:

 Image 1: Eight major features of microservices architecture. 

 

Benefits of Microservices

The most commonly cited advantages of microservices architecture fall into the  following areas:

Autonomous Deployment:

A decentralized method of creating and maintaining applications means fewer downtimes, quicker iterations, and a more flexible landscape. Whether correcting simple bugs, adding new fields to an already-running application, or updating a particular component of a pre-existing program, loosely coupled services allow system caretaking and development at speeds unavailable in monolithic architectures.

Take Netflix, for example. The streaming giant uses (and perhaps even pioneered!) microservices to ensure its 100+ million subscribers benefit from seemingly invisible patches, up to thousands of times per day, without their front-end interface ever noticeably being affected. 

Reduction in IT Cost

Microservices—and the time and resources it maximizes—save operations plenty of costs. These can be summarized as such:

Agility: Microservices architecture speeds up deployment. Faster deployment means rapid results. And rapid results = reduced IT spend + happier managers + thankful customers. 

Efficiency: Reducing the amount of complexity required to run a given application also results in savings. Up to 50% of costs are saved by reducing the complexity of an application’s infrastructure.

Flexibility: Dispersing functionality across multiple services eliminates an application’s susceptibility to a Single Point of Failure (SPOF). Stronger applications perform better, have fewer outages, and have the potential to scale rapidly.

Accountability: Decreased downtime directly increases revenue by improving user engagement, increasing consistency, and sharpening efficiencies. All of which boosts user retention.

DevOps

Regular readers of our blog know that DevOps, a term used to describe the closer collaboration between Developments and Operations during product/software management, is one of our favourite subjects here at LeanIX. Both DevOps and Microservices employ shared terminology and stem from comparable requirements, dependencies, and support needs—and the availability of Microservices allows DevOps environments to coordinate configuration repairs and build scripts. 

The benefit of DevOps + Microservices is such:

  • Increased productivity & reliability:  Quick solutions may be reached when applications are built with microservices architecture versus monolithic architectures. When applications are created on different servers, issues affecting one part of the application can be isolated and remedied (as opposed to applications built on monolithic services where the whole application can fail). Scalability is an innate feature of microservices.
  • Availability: Microservices architecture supports round-the-clock availability. Deploying a new feature or service requires little to no downtime.
  • Speed: Microservices frameworks offers increased agility for quick results, rapid re-iteration, and fast deployment.
  • Flexibility: With microservices, application components are loosely coupled and more straightforward to modify. This framework also supports the quick consumption of new data sources and libraries.
  • Management: Microservices can leverage the Agile methodology wherein application development is divided across teams to create smaller and more independent efforts. 

Potential Challenges of Microservices

As with any significant change, there are a few notable challenges to consider when moving from a traditional monolithic architecture to an agile, more scalable microservices architecture. Lee Atchison, Senior Director of Strategic Architecture at New Relic, lists six potential areas of concern when making the switch to microservices in his blog post, "Microservices: What They Are and Why You Should Use Them". 

So, to perform an obligatory safety lesson, let’s review Atchison’s list:

  1. Microservice architectures can be complex”: As a result of having many more moving parts, microservices bring about increased interconnections and interdependencies that raise complexity and the chance of mismanagement.
  2. A microservices approach requires careful planning”: Developers and software architects must carefully plan their structuring to map functionalities and dependencies appropriately. If unable to do so correctly, all beautiful promises of microservices will flitter away.
  3. Proper sizing of Microservices is critical, and hard to calculate”: Improperly scaling Microservices architecture will create an imbalance near impossible to solve without extra resources and special talent. If too big, you can end up operating with the very same shortcomings of monoliths. If too small, complexity will just outstretch to individual services and into the dependency maps. 
  4. You may have little control over third-party microservices”: Microservices are maintained by individuals you likely won't meet regularly. If third-parties badly modify your APIs, you need to know how to respond effectively.
  5. Downstream dependencies are difficult to track”: A key to microservices success is to limit interdependencies. Problems inevitably rise, however, and integrating perfect fault-tolerance tracking into a microservices-built application is (very) difficult.
  6. Multiple microservices may offer bad actors more opportunities”: The popularity of microservices is getting the attention of skilled cybercriminals attracted to the vulnerabilities present in systems juggling multiple operating systems and languages. Making matters even worse, it is quite difficult to gain visibility into the weaknesses of third-party services used by these applications.

 

The Microservices Management add-on in LeanIX

Microservices developed in the Java and the Javascript programming language with build systems Maven and NPM are now supported in the LeanIX platform. More programming languages and build systems will be added in the future thanks to the extensible architecture of Pivio.io. Instructions for developers and systems engineers on how to write the Metadata file and how to configure the CI server jobs are available at the LeanIX Developer Hub.

The LeanIX Microservices add-on enables IT executives and Enterprise Architects to foster the adoption of microservices in a fiercely managed way by automating documentation by software engineers and product owners to improve knowledge exchangesa critical need when conducting a company-wide microservices initiative.

It works like this:

  • All details related to a given microservice are stored in an Application Fact Sheet.
  • The dependencies to the used software libraries are reflected as IT Components and automatically linked to the Application Fact Sheet.
  • Each microservice is equipped with a metadata file, which is placed into its source code repository.
  • The metadata about the service is stored in a YAML-file, which is a developer-friendly format and also used widely in the context of Docker or Kubernetes.
  • Changes to the used software libraries are automatically detected.
  • The processing of the metadata file takes place in the job which builds the new release in a Continuous Integration (CI) Server, with the structure of the file residing on the Open Source project pivio.io.

With the microservices add-on, IT organizations will be better equipped to counter rising business complexity with transparency and real-time information.

As the first Software as a Service (SaaS) provider in the Enterprise Architecture (EA) market, LeanIX continues to make groundbreaking strides by adding powerful features like the Microservices Management Add-on to our award-winning portfolio.

LeanIX also offers individual training as part of the beta program. Ask your customer success agent to apply to join the three-month beta program free of charge. Prospects can join the Beta-phase as part of a Proof-of-concept project.