If SOA and microservices architecture sound similar, that’s because they are. They’re both service-oriented architectures, designed to solve the problems that come with the single-application build approach of monolithic applications by decoupling functionalities within it. Monolithic architecture is designed as a single unit, that has traditionally been the standard in development.
Both microservices and SOA services allow for automation in processes that can make teams more agile and productive compared to monolithic architecture.
However, key differences remain. As Martin Fowler, a pioneer in the world of microservices, once said we should think about SOA as a superset of microservices.
SOA tends to be for larger and more diverse environments because services are different sizes and messaging protocols can be different, but integrated via the enterprise service bus. Microservices tend to be used for smaller environments such as mobile and responsive applications. SOA is considered more “coarse-grained” and microservices are more finer grained with more granularity.
In terms of new deployments or code changes, because microservices have such small modules, each can be modified without affecting other modules. But SOA, because some services have interdependencies, you might have to also upgrade the other services when performing a general upgrade.
In terms of communication, SOA services rely on communication and data storage outside the services. However, microservices communicate APIs, which are language-agnostic protocols, typically over a network, and feature many remote calls. This means microservices typically have faster communication than SOA.