Access and Feeds

Microservices: Greater Agility and Flexibility at the Cost of Greater Complexity

By Dick Weisinger

SOA – Services Oriented Architecture — has been around for some time.  And recently, it is coming back strong, but with a new name: Microservices and Containers.  The idea is that rather than create monolithic applications, create applications by bundling and packaging collections of small self-contained services.

Big advantages of using an architecture designed with microservices include easier development and testing, and easier upgrades that may affect only a subset of all services that make up a complete application.  Or, at least, that’s the basic idea. Companies like Amazon, Netflix and Twitter all attribute some of their success to being able to easily scale with a platform built with a microservices architecture.

Things may not always work out as well in practice though.  For example, recently SDTimes reported John Frizelle discuss problems that frequently come up when development groups first try implementing microservices.

Development Issues. If not designed well, microservices can have interdepencies that can actually cause  more maintenance and development issues. Changing one may trigger a cascade of changes that need to be made across other services.  Microservices need to be versioned and identifying which sets of versions are compatible.

Test Issues. Because microservices are tiny, testing should be well contained and straightforward.  But what often happens is that testing expands well beyond the scope of just the microservice that is being tested — it points out that not just the ‘unit test’ of the microservice is important, but also the interoperability of all the services within an application.

Complexity. Maybe the biggest challenge of working with microservices is their complexity.  The use of microservices introduces a lot of moving parts.  It’s necessary to monitor the health of all the individual services of an application.

Kate Stanley, software engineer at IBM UK, said that “the thing we haven’t seen before is we’re seeing more and more people iterate faster and deliver faster. It’s no longer a case of bring something new out every year. You need to bring out every week or every hour even. Maybe the complexity the system added wasn’t worth the reward that it got for me to move faster. Now the rewards are greater. So it’s worth taking on the complexity.”

 

 

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Leave a Reply

Your email address will not be published. Required fields are marked *

*