Thursday, March 31, 2016

Microservices - A trending architectural style for enterprise apps

We are quite used to building 3-layered (UI, business and data) monolithic applications and it’s very difficult NOT to see this style of layering in any enterprise app that’s worth its salt. This style of architecture is highly tried, tested and documented. We know the merits and limitations of this style and how to work around the limitations

While we know how to trade-off the limitations of monolithic apps, there were frustrations around the lack of agility in such approaches. Specifically on the maintainability and scalability standpoints. If there is a change then the entire monolithic monster (often a big .dll) will have to be regression/integration tested and pass through a DevOps pipeline before hitting the production without affecting the availability. Same way, when there is a surge in the demand for a specific business function (like the payment function in a e-tailer like Amazon during the holidays season), we scale out the whole app by provisioning a number of horizontal boxes and load balancing the requests. With the advent of cloud, a group of architects started working on a new (i.e. old wine in a new bottle) architectural style and it worked very well in the enterprise/public cloud scenarios. It’s time we take a look at it 


In the Microservices architecture, each business capability (like creating an order, authenticating an user, payment in a ecom site etc.) is built as an independently deployable, mini service. So one big monolithic app is decomposed into many different Microservices that run in their own processes and the communication between them is strictly through API service contracts  often conforming to lightweight protocols like http and REST. With the Microservices, if there is a change one small module is going to be updated, if there is peak demand for a business function that function alone is going to be scaled, not the entire app. Each module of an app can be written in any language/technology as long as they support the RESTful interfaces. To know more, you may see the web site of Martin Fowler . Sensing the popularity of Microservices, Microsoft introduced Microservices platform for Azure 

Sunday, March 20, 2016

Kano Model

While designing a product or service, it’s the main 3 categories of customer needs or requirements that influence the customer satisfaction, brand loyalty and ultimately the market success. While we may have some ideas about these needs already through our experience, Kano model puts that into proper perspective and helps how to choose the product/service needs scientifically. Obviously any successful product or service must have accomplished a clever, balanced mix of the 3 main categories of needs, happened either by choice or chance 

For more details browse here