Our customer is an independently owned, client-driven company working with some of the largest international awarding, professional and government bodies to offer a complete range of e-Assessment services from consultancy to testing and custom development. They created one of the most comprehensive, secure and innovative solutions in the area which benefits and improves the educational process for the end users.
The customer offers its clients a SaaS multi-instance platform. Each client gets its own instance consisting of several web applications hosted on IIS, several SQL Server databases, a data warehouse, and several ETL (Extract-Transform-Load) jobs putting data to the data warehouse.
The number of instances is expected to grow to hundreds. Manual configuration of a new instance includes setting up IIS websites and file system ACLs, changing application settings, creating databases, schemes, static and default data, and so on. It takes at least an hour and is very error-prone. Besides rolling out new instances, there are other maintenance activities, such as applying a planned release or a patch or deleting an instance. They are even more error-prone than creating a new instance.
To be able to scale, the customer decided to automate deployment processes.
To solve the challenge, we created a distributed deployment system. It consists of a management portal and a deployment service. On the portal, administrators manage technical accounts of clients and create commands for the deployment service. Rich portal UI was built with ASP.NET MVC framework with extensive use of SignalR, knockout, and bootstrap libraries.
The deployment service (Windows background service) pulls commands from management portal web API and executes them. It operates remote IIS, file system and databases. There is an operation log, and in case of any failure, the service rolls the instance back to the previous working state. The service provides immediate feedback to the management system, so administrators can see what is happening in the portal UI.
From the administrator perspective, it is enough to register basic information about a client in the UI and click a button. In a few minutes, the deployment system creates an empty, ready-to-work instance for the client.
The solution implemented by Arcadia's team made it possible to scale the customer’s business. Now one person can manage a large number of clients’ instances without manual work.