Microservices is a new concept that has been introduced in recent years as a way to deal with the complex needs of modern applications. A microservice-based architecture can be created by breaking down an extensive monolithic application into smaller services, each responsible for one part of the business functionality.
On the other hand, SOA stands for Service Oriented Architecture, and it's been around since 2006 when an IBM engineer coined the term. It was designed to help organizations quickly create Web Services using existing IT assets without writing proprietary code from scratch. The key difference between SOA and microservices is that SOA provides generic web service interfaces while microservices are more specialized in their responsibility.
Microservices architecture are real components that implement business functionalities, while Service Virtualization (SV) simulates the behavior of external services. SV emulates interactions with various target types like REST APIs, SOAP Web Services, and Database systems. Microservices can be deployed inside or outside the organization's private network demilitarized zone (DMZ).
The major benefits of using SV are to speed up development & test cycles by providing an isolated execution environment for each service, improved collaboration across teams through easier sharing of regression tests artifacts, and improved software quality due to less time spent on manual testing.
Distributed components are one of the available options in building service-oriented architectures. This approach consists of splitting application logic into different interoperable, standalone services that provide complex functionality. The main difference between micro-services and distributed components is that the first ones are small applications running inside separate processes. At the same time, the latter are involved only on the communication level.
Microservices represent business units that implement an individual functional capability or part of it. They can be deployed independently and communicate over lightweight protocols like REST APIs based on HTTP/JSON for modern architectures or even SOAP/XML for traditional ones.