My colleague Yamen recently started the Sydney Microservices meetup group and the response was surprisingly strong with more than 86 people registered within 10 days. The first meetup on September 3 has 36 RSVPs. This is merely a local indication of the buzz that surrounds microservices at the moment.
You may have heard of about microservices. They’ve been documented in various places, including a recent article by Martin Fowler and James Lewis:
”…the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms…”
But this has not been without controversy. Martin and James’ article attracted a strong backlash about the difference between microservices and plain old SOA. The general reaction along the lines of “we don’t need another SOA buzzword” was documented quite well by Mark Little in a news item on InfoQ.
I was initially doubtful about this new term. SOA is more important now than it ever was. With new application architectures and new ways of sourcing functionality from the cloud and SaaS, the ability to decouple business processes from data and functions through standalone, reusable, re-mixable services is the essential foundation for the new ways of doing business. And as I predicted in 2007, SOA has become “part of the wallpaper”, certainly an important part of mainstream enterprises as well as underpinning the concepts of APIs and cloud-based services.
But although it is mainstream, people still struggle with SOA for all sorts of reasons. SOA has only just pulled itself out of the “trough of disillusionment” and part of the problem was that vendor marketing departments appropriated SOA to mean “web services” - that over-engineered stack of ws-* standards that became CORBA with angle-brackets. We need to keep the SOA conversation going and I think that new buzzwords such as APIs and microservices, which relate to SOA but are different, help to keep SOA fresh and interesting. The fact that 36 people can gather in Sydney to talk about SOA on a chilly August night is testament to that refresh.
So are microservices just another name for SOA? Certainly we can hold microservices up to the principles of the SOA Manifesto and behold they match! And Steve Jones has done the same with the Oasis SOA Reference Model. But perhaps there are some behavioural subtleties here that declarations don’t capture. In the first chapter of his book “Building Microservices” Sam Newman urges us to think of microservices as a specific approach for SOA in the same way XP or Scrum are specific approaches for Agile software development.
The IT world has changed dramatically in the last few years. Agile has become mainstream, SOA has become mainstream, DevOps is gaining traction. Cloud technologies—IaaS, PaaS and SaaS—have exploded and companies like Netflix, with their “lightweight SOA architecture”, are exemplars of the post-cloud world. The context in which we provide, consume and think about services has change dramatically. Microservices are useful at enterprise scale and for building individual applications. In fact as Netflix has demonstrated, it is becoming harder to distinguish between an enterprise made up of services and an individual application within that enterprise. Services are becoming fractal in nature…appearing at different scales. Indeed Martin and James’ article explicitly states that microservices are an application architecture whereas I think SOA has always been conceived as an enterprise-level architecture.
So are microservices just another name for SOA or is there really something new here? The great thing is that it doesn’t matter. By reigniting the conversation about SOA and microservices, we’ll learn and teach a lot more about both.