Friday, October 27, 2017

Building microservices in an agile environment

How to start to fail. I am the crazy guy saying the end is nigh. Building Micro-services and Agile are somewhat at odds. Good Micro-service design needs big design up front planning which is anti-iterative, succeed or fail, rinse, wash, repeat. In order to have the proper motivation to spend time and effort planning and succeeding at Micro-services you must fail at the monolith and retain a large enough percentage of your team to learn the lessons from that failure and repeat. Fail at scale has been batted around a lot lately. Unfortunately failing at scale sounds great, but business owners aren't always on board with with the failure, most don't understand it is apart of the cyclical process. Too often failure is not tolerated even though it is necessary for the greater good. Failure must be seen from the economic perspective, building incrementally accelerates value delivery. Without failure, ROI alone is not enough motivation to rebuild a component.

To build micro-services in an agile environment first you build the monolith, then you must fail. Then you must be able to retain most of your team, and properly plan out the service implementation. Then you build out the services. Each successive generation getting you closer to the original vision of decoupling, scalable, reslient, non-hacked together Microservices.


Sufficient design upfront not big design. Always design just enough to get finished and to solve the problem while creating new and unique problems to solve.

I think this is why we have the "Three throw a ways rule". Getting management to buy off on the fact the first two times were just throw aways is the hard part. Its like windows, nothing good till version 3.1.


0 Comments:

Post a Comment

<< Home