Microservices

I just listened to a Software Engineering Radio Podcast featuring James Lewis on Microservices, and I have to say I am in agreement with almost everything that he said. I love the term Microservices, especially as a way of describing an implementation SOA (Service Oriented Architecture) rather than a way of replacing it. I am not sure I can use the term to describe my own work, because I am not sure I have enough in agreement with the community that is building agreement on what it is. But one thing I think for sure, it definitely does not mean a SOA implementation using a Service Bus. An other thing that stuck out to me was his definition including the concept that a microservice should have only one reason to change. Object oriented principles used at the service layer. Of course this poses the same question that we had at the object layer. What is one thing? If I have a taxi and I am moving a customer from one location to another, is driving the car one thing? or is changing gears one thing. For now at least I am going to go with the idea that its driving the car.  I might go with the phrase that “they do one useful thing”. An Address service, that stores and address for my user might be useful, but a User Profile service might be even more useful. The devil as always is in the details. And you cant answer which is beter without understanding the Business domain. Something else that is not optional when designing Microservices.

Advertisements