Service virtualization and microservices are technology techniques being used to drive a modern software development model to lower cost and increase the speed of software deployment. Rather than depending on a single team to create monolithic application, this model integrates teams to work with multiple interdependent software components.
By combining service virtualization and microservices, an organization can develop software that can be delivered from various locations and dissimilar environments. Proponents believe that coordinating the interaction of these components can improve the speed of deployment and the quality of software. Testing needs to be continuous throughout the development cycle.
Using Service Virtualization and Microservices
A distributed, virtualized approach to software, coupled with the use of microservices, requires the coordination of two separate technology trends and architectures. Service
Service Virtualization is a method of software development where the development environment contains virtualized components of the overall solution. This enables testing organizations to participate far earlier in the development process. This supports more thorough testing at the system level when only discrete unit testing used to be achievable.
Microservices develop software systems as a suite of independently deployable, small, modular services. In a microservice architecture, each service runs a unique process and communicates through well-defined, lightweight mechanisms such as HTTP/REST and JSON.
Why Service Virtualization & Microservices Now
Both business and technical trends are driving the need for service virtualization and microservices including quality, time-to-market requirements and reduced development costs.
To meet those needs engineers are utilizing service-oriented architectures (SOA). Even simple websites today rely on use of third-party software. This saves developers from having to build similar native functionality from scratch and saves time.
Service virtualization also reduces costs and saves time. Third party components can consist of anything such as CRM, ERP, or other financial processing components that may charge access fees or have limited availability. By virtualizing these components teams can test as needed, reduce transactions on production systems saving time and money.
Microservices are often built using Docker and Linux containers. Microservice architectures can also reduce costs. When an application is created with microservices, a small component can be isolated, changed, and redeployed without taking the entire application offline. Microservices can also support the Internet of Things (IoT) as it is often unknown how many or what types of devices will access the service in the future.
Microservices also represents a change in how teams do their work. A central authority typically handles governance of development and system improvements. Developers would hand-off code and only work on it as they were directed. Microservices teams are different and are responsible for their components during both development and operations. If there is a problem, they are expected to be aware of it and fix it. Microservices employs a decentralized governance methodology.
Examples of Where Service Virtualization & Microservices are Used
Imagine the development of a network service that incorporates multiple authentication checks and updates a number of financial systems. Perhaps one of the financial systems that are involved in every transaction is not available for testing. Should this stop development? No. That service can be virtualized and development and testing can continue.
And that same network service will most likely be built on microservices architecture like most modern applications. Some examples of modern microservices architecture based applications include Netflix, eBay, Amazon, Twitter, PayPal, Gilt, Bluemix, Soundcloud, and many others.
Netflix, as an example, receives over one billion calls a day, from more than 100’s of types of devices, to its streaming-video API. Each API call then prompts around five additional calls to the backend service.
Many modern digital services and companies such as Netflix are using virtualization and microservices to reduce the cost and time to deploy applications. There is ample evidence that the trend toward distributed, concurrent development and testing methodologies, which are supported by service virtualization and microservices, will become increasingly important in the software development lifecycle.