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 fall close enough to the consensus the community is building on what Microservices are. But one thing I know for sure, it definitely does not mean a SOA implementation using a Service Bus. Another 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 addresses 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 better without understanding the business domain. Something else that is not optional when designing Microservices.

Advertisements