Development of an Azure-Based Software Product
The Customer is a UN-based company offering software products and training services for managed services providers (MSPs).
The Customer wanted to deliver a SaaS product for providers of virtual Chief Information Officer (iO) services to help them automate business processes of their clients. The .NET-based application had to sustain an exceptional customer experience, ensure stable performance even in heavy load conditions and easily scale on demand.
The Customer wanted to quickly launch basic product functionality and then expand the product capabilities through frequent updates not to lose the loyalty of MSP clients.
For this reason, the Customer was looking for a reliable tech partner experienced in complex, distributed, cloud-native development to take over the full-cycle software development.
Our cross-functional team of a PM, a BA, .NET developers and architects, test automation engineers, and DevOps engineers was entrusted with the delivery of the new SaaS product.
The new software product сomprised a set of tools that allowed MSPs to:
- Create customizable client reviews (QBR) and complete vCIO services impact assessment.
- Manage service delivery strategies for every client.
- Organize and digitally present service initiatives and recommendations.
- Conduct online meetings with clients.
- Manage budgets.
- Establish and maintain custom IT standards.
- Access a structured repository of industry compliance guidelines.
- Gather client feedback.
- Pay for SaaS usage.
The team ensured its easy integration with popular third-party MSP and IT business management software solutions – ConnectWise, Autotask PSA, IT Glue, BrightGauge – to support automated data import.
To secure high availability, fault tolerance, safe and easy scaling of the complex microservices-based SaaS application, Our team enhanced its architecture with Azure services to enable a service mesh layer, load balancing, and automated container deployment and management.
To help the Customer ensure stable work of large distributed software, our team delivered a monitoring component that included a custom audit module and Grafana, Azure Application Insights, Kiali, and Jaeger functionality. The monitoring module:
- Collected data on the component performance metrics and custom purpose-specific logs.
- Automatically notified about specific events.
- Helped quickly trace a specific event through different architecture components and tenants to find out the reason for the issue.
- Analyzed the received metrics and provided a single console with interactive dashboards to easily check the health of the whole application infrastructure.
To comply with the Customer’s requirements of frequent and reliable releases, Our team established a lean product development process with integrated Agile/Scrum and DevOps techniques (Docker containerization and Docker Compose, CI/CD).
To further sped up software delivery, Our team used the proprietary IMAAT (Integrated Manual and Automated Testing) approach that resided in the balanced combination of automated and manual testing. The team automated functional regression, integration and cross-browser testing. Manual tests were saved for quick initial checks for newly implemented features, one-time runs, and served to provide prompt response to developers after hotfixes. Test automation engineers integrated continuous testing into the continuous integration (CI) pipeline to run tests automatically every time a new change was introduced and support safe nightly builds.
Combined, professionally established continuous integration, testing and delivery resulted in almost continuous readiness for quality releases of new features and updates.
The Customer managed to launch their SaaS application in time and regularly updated the product with new capabilities. Ensuring seamless modern experience of IO services management, the cloud-based application efficiently coped with the growing customer base.
Technologies and Tools
SaaS Development: .NET Core 3.1, C# 8; Angular 10, TypeScript 3.9, NgRx, MobX; Docker, Docker Compose; Istio; Ocelot API gateway (OSS); Nginx; Umbrella Management API; Entity Framework Core, Dapper; Grafana, Kiali, Jaeger; Chargify; Mailchimp with Mandrill; Google Analytics, Appcues, ZenDesk.
Microsoft Azure services: Azure Kubernetes, Azure Functions for Web Hooks, Azure Service Bus, Azure SQL Database, Azure Table Storage, Azure Blob Storage, Azure SignalR, Azure Application Insights, Azure App Service, Azure Container Registry, Azure Key Vault, Azure API Management, Azure Pipelines, Azure Virtual Machines (VM).
QA: xUnit; nUnit (C#), Jasmine (TypeScript), Selenium (TypeScript).