Posted September 07, 2018
Effective Hosting of Virtual Services with Docker
Docker isn't just a buzzword
When was the last time someone mentioned Docker and your head spun in all enthusiasm with huge respect for the person who just could not get over mentioning Docker multiple times and speaking at length about all the amazing things his/her organization had achieved with “Docker”? Seriously, Docker is the modern technology catchword. (At least until you are aware of Kubernetes...)
All kidding aside however, with Docker, it is extremely easy to spin-up software or a software suite in its own operating system-like environment, without the hassle of complex installation procedures. You can also tear it down in seconds without worrying about the after effects of un-installation. All of this is an extremely reliable technique.
Combining service virtualization with Docker
Service virtualization is a strategy that is extremely beneficial when real / 3rd party services are unavailable (a tool like ServiceV Pro is great for developing virtual services in a short span of time).
When considering hosting virtual services on Docker, here are a few questions to ask yourself:
- Do these virtual services need to be up & running all the time, even while users are not integrating/testing?
- Do I have enough budget to maintain the real infrastructure for these virtual services?
- Am I happy spending my lean budget on VMs & public cloud options for hosting?
I am sure the above list of questions puts in some curiosity within you to explore an improvised architecture with service virtualization as focus. This post is my one such suggestion. While my proposed architecture may not fit everyone's use case, it is a pretty liberal approach to accommodating changes as desired and demanded by your business process. My attempt is towards provoking new thoughts and design changes for technical architects to maximize the value out of virtual services, while also being extremely cost sensitive about hosting them.
The New Architecture with Advanced Integrations for Virtualization
Your developers continue to develop code for your application while your QA engineers are developing tests. A small subset of engineers develop virtual services for non-existing services and 3rd party services consumed by your application. These artifacts continuously being fed to a Central Repository.
While the above process may occur as routine business processes in your organization, you greatly benefit by introducing Docker as your deployment platform for your virtual services.
VirtServer on Docker
VirtServer, an extension of SmartBear's service virtualization tool, ServiceV Pro, is used to deploy and host services, and can be quickly deployed as an image on a Docker container and the designed virtual services hosted. Using Jenkins as a Continuous Integration (CI) controller, any source code changes in the application triggers a build. The build can consist of steps to deploy the application (Docker can work here too) and spin up a Docker container image to deploy the virtual service on a VirtServer Docker Container.
Deploying virtual services to VirtServer container from above
To take this to the next level, you could add your automation tests as part of the build process, which would provide seamless feedback back to dev & test teams without any manual Intervention. Also your tests running end-to-end with VirtServer takes care of hosting the virtual services.
Getting started with virtual services
Whereas many popular service virtualization tools have a steep learning curve that requires a considerable amount of onboarding time, ServiceV Pro from SmartBear democratizes the creation of virtual services and makes it easy for anyone to get started, regardless of expertise. When you're ready to get started, the tool is available to try for free for 14 days.