Microservices SOA
Architecture Designed to host services which can function independently Designed to share resources across services
Component sharing Typically does not involve component sharing Frequently involves component sharing
Granularity Fine-grained services Larger, more modular services
Data storage Each service can have an independent data storage Involves sharing data storage between services
Governance Requires collaboration between teams Common governance protocols across teams
Size and scope Better for smaller and web-based applications Better for large scale integrations
Communication Communicates through an API layer Communicates through an ESB
Coupling and cohesion Relies on bounded context for coupling Relies on sharing resources
Remote services Uses REST and JMS Uses protocols like SOAP and AMQP
Deployment Quick and easy deployment Less flexibility in deployment