Pet care leader turns monolithic app into a global distributed solution on Azure

Pets, like their owners, need specialized care from time to time, but the referral system used by one major network of pet care providers needed care itself. The medical records didn’t always follow the client, and often the records got duplicated in the process. VCA, one of the largest pet healthcare companies in the United States, wanted to streamline referrals across more than 800 of its veterinary hospitals. The company turned to Microsoft Solutions Partner, CloudIQ Technologies, which created a cloud-native application on Microsoft Azure that solved the messy referrals problem.

VCA provides veterinary services, laboratory diagnostics, imaging equipment, medical technology, and pet care services. The company is a subsidiary of Mars Petcare (a division of Mars Inc.), which is one of the world’s leading pet care providers and the creator of global brands such as Royal Canin, Pedigree, and Whiskas.

“We’ve been developing analytics solutions and veterinary software for more than a decade,” says Adam Lind, vice president of software development for VCA. “Clinics are increasingly moving to the cloud for ease of deployment and for better data security, so we began pursuing a cloud-based solution.”

The challenges of growth

As VCA expanded, it recognized the need to improve the practice management software (PMS) used in its network of pet care facilities. The PMS software connects the medical teams and office staff, and it drives continuity of care for pets and their owners. However, the connection didn’t fully extend to referrals. A client would get a referral to a specialty hospital, and the hospital staff typically reentered that data, causing duplication within the system. In addition, there was no automated way to communicate a client’s status back to the organization that provided the referral.

The existing PMS system was built using Windows Presentation Foundation (WPF), a programming model that’s been powering line-of-business applications for more than a decade. As a monolithic application architecture, it’s presentation, business logic, and data layers are tightly coupled. To extend the existing system using the same tool set would take months of coding and testing—and this still wouldn’t solve the issue with the platform’s limited scalability.

VCA turned to its longtime partner, CloudIQ Technologies, to extend the PMS system to the cloud. “We’ve been working with CloudIQ for all our cloud-native initiatives,” says Lind. Based in the United States and India, CloudIQ Technologies is a Microsoft Solutions Partner specializing in all things cloud—migration, infrastructure, DevOps, tools, and solutions.

“We wanted to build cloud-native applications to supplement the existing application. Azure made it easy to ramp up.”

— Adam Lind: vice president of software development


A scalable, distributed solution on Azure

Working together, CloudIQ and an IT division at VCA decided on the best approach to meet the following objectives:

  • Make it easy for staff and doctors to make a referral.
  • Maintain an up-to-date list of the specialty clinics, organizations, and doctors who are part of the referral network.
  • Automate the transfer of patient records from a hospital or organization to a specialty clinic within the Mars Petcare network.
  • Improve communication between the specialty clinics and the source of the referrals.

The team of engineers planned to build a more modular, extensible system that would support future feature enhancements and a more frequent release cycle. A cloud-based solution can do that while providing the scale to meet present-day and future demands on the system. The solution also had to be secure enough to meet regulatory requirements, such as the California Consumer Privacy Act (CCPA).

As early adopters of container and container orchestration technologies, the team at CloudIQ has successfully designed, deployed, and managed high-performing container ecosystems for a diverse set of businesses. For VCA’s PMS system, the team wanted to use a microservices architecture.

“Using microservices, we could scale up the application easily and deliver new features faster to manage hospitals, patients, doctors, and staff,” says Prem Kandalu, founder and CEO of CloudIQ Technologies.

The team chose Azure because of CloudIQ’s long-standing partnership with Microsoft, and it chose Kubernetes as the container orchestration engine to scale the microservices on demand. The question was which version of Kubernetes to use. The open-source Kubernetes platform is a popular choice, but the development team wanted the ease of a managed service.

Azure Kubernetes Service (AKS) is a managed container orchestration service that also provides templates, code samples, and best practices to help developers ramp up quickly. In addition, Azure manages the infrastructure, freeing the team to focus on capabilities—not on operations.

“As a managed service, AKS made it much simpler for our team to get started with the Kubernetes ecosystem.”

— Natraj Thuduppathy: COO

CloudIQ Technologies

A new, cloud-native architecture

The resulting application, Automated Referral Function (ARF), is built to interoperate with the existing PMS application. The front end is an Angular single-page application (SPA). ARF supports all the modern web standards and can launch in a browser or through a WPF chromium interface. Back-end services use .NET Core, which supports microservices and containers.

ARF includes four main workflows:

  • The feed handler microservice updates the master data files containing the up-to-date lists of Mars Petcare organizations, staff at those organizations, and individual communication preferences.
  • The communications microservice automates emails and faxes associated with referrals.
  • The staff microservice provides endpoints for create, read, update, and delete (CRUD) operations on the staff collection.
  • The organization microservice provides endpoints for CRUD operations on the organization collection.

A client application accesses the ARF API through Azure API Management, a service for creating consistent and modern API gateways for back-end services. API Management makes it easy for the team to publish its microservices as APIs for internal and external consumption. The API gateway serves as a front door to the app, handling the incoming requests. For example, staff at a hospital might make a request to refer a client to a doctor or specialty service, or a clinic might need to fax a confirmation letter to the hospital that sent a referral.

On the back end, microservices run in containers. Access to the Kubernetes cluster is secured through an Nginx ingress controller, which allows the team to set ingress rules that protect the cluster and to use a single IP address for routing traffic to the multiple services that run in the cluster.

Azure App Configuration provides a central store for all the environment-specific application settings used by the microservices, such as the URL of the source service. The team can easily manage these settings, secure access, and change them dynamically without the need to restart the services. Programmers also use Azure Key Vault to store the passwords and other secrets that enable microservices to communicate.

The team monitors the Kubernetes environment using Azure Monitor and Azure Log Analytics, which keep the team informed about the status of the cluster and other infrastructure dependencies. Log Analytics also tracks performance metrics. “We wanted to make sure our API latency was under 100 milliseconds,” explains Natraj Thuduppathy, the chief operating officer (COO) at CloudIQ Technologies. “We reduced the average response time through caching, optimizing the data model and queries, and using Log Analytics to capture the metrics.”

Three data repositories, no duplicates

The new architecture solves the duplication problem that VCA was having under the old, manual referral process, and it automates communications between hospitals. The solution uses hot and cold paths for the data, and the data tier varies depending on workflow architecture.

Azure SQL Database, Azure Cosmos DB, and Azure Cache for Redis are all used. Transactional data, such as data about referrals, is stored in Azure SQL Database. Azure Cosmos DB provides the low latency and high availability needed for data that is frequently consumed or referred, such as information about staff and organizations. Because this information is used by other apps and microservices across regions, the globally distributed nature of Azure Cosmos DB is an advantage. Updates to this record store are also used as an event source in the application, triggering Azure Functions to handle the communications workflow.

Azure Cache for Redis, with its in-memory data store, is the message broker for updates. It provides fast access to the data that the app is required to store temporarily, with an expiration time, yet makes it available for consumption across sessions and services. This workflow also sends notification of changes to Azure Event Hubs via an Apache Kafka message that identifies the old and new values for each entity data. Other ARF services use the endpoints provided by API Management to consume the data stored in Azure Cache for Redis.

A secure, automated DevOps pipeline

DevOps practices are an integral part of developing and deploying the ARF application. The team used Azure Pipelines to create a continuous integration (CI) and continuous deployment (CD) pipeline. “For deployment, the build pipeline was defined as code to create a scalable pipeline,” says Thuduppathy. “It caters to many sources, and it takes less code, which means less time for us.”

The CI process starts when a programmer commits a change. The pipeline pushes both the service (as a Docker image) and the Helm chart (used for package management) to Azure Container Registry, a private registry. “The integration with Azure Container Registry simplified the storing of artifacts and deployment of our microservices,” explains Thuduppathy.

Through the CD process, an updated container image is deployed to the Kubernetes cluster, where pods containing an image scale automatically based on demand. For security, pods running in Kubernetes get their own first-class identity in Azure Active Directory. The pod identity feature allows pods to communicate securely with other Azure services, including Azure Key Vault, so that the programmers can store and pass the secrets to the microservices.

“We made sure that our environmental configurations can be read from a file to make it easy to deploy the application,” notes Thuduppathy. Terraform scripts create the environment, including the Kubernetes clusters. The scripts create the resource group on Azure and all services required to set up the Kubernetes environment, including Container Registry, Azure Storage, the cluster, and the logging and monitoring services.

“Azure services enabled us to provide a secure, fully monitored, enterprise-ready foundation to our implementation.”

— Adam Lind: vice president of software development


Next steps

The extension of the PMS software to the cloud has been a great success, giving the company the flexibility to expand its services without a big investment in additional servers. Most importantly, the solution has improved communications for the veterinary hospitals and clients.

“The automation is saving the office staff so much time, and the level of care is better now that we’re assured the records are up to date, no matter where the care is given,” says Lind.

The success has inspired VCA to embark on a cloud-native PMS solution. With this greenfield effort, the development team plans to expand the cloud benefits they’ve already seen on Azure—improved security, faster release cycles, easier management, and lower costs.

“The new system on Azure is even better than we expected. It’s had a huge impact on our business and operations.”

— Adam Lind: vice president of software development


Talk to our Azure Specialist

CloudIQ is a leading Cloud Consulting and Solutions firm that helps businesses solve today’s problems and plan the enterprise of tomorrow by integrating intelligent cloud solutions. We help you leverage the technologies that make your people more productive, your infrastructure more intelligent, and your business more profitable. 


3520 NE Harrison Drive, Issaquah, WA, 98029


Chennai One IT SEZ,

Module No:5-C, Phase ll, 2nd Floor, North Block, Pallavaram-Thoraipakkam 200 ft road, Thoraipakkam, Chennai – 600097

© 2024 CloudIQ Technologies. All rights reserved.

Get in touch

Please contact us using the form below


    3520 NE Harrison Drive, Issaquah, WA, 98029

    +1 (206) 203-4151


    Chennai One IT SEZ,

    Module No:5-C, Phase ll, 2nd Floor, North Block, Pallavaram-Thoraipakkam 200 ft road, Thoraipakkam, Chennai – 600097