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.
Customer offers SaaS multi-instance platform to its clients. Each client gets 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 warehouse.
Number of instances is expected to grow to hundreds. Manual configuration of a new instance includes setting up IIS websites, 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 like applying a planned release or a patch, deleting an instance. They are even more error-prone than creating new instance.
To be able to scale, Customer decided to automate deployment processes.
To solve the challenge, distributed deployment system was created. It consists of management portal and deployment service. On the portal administrators manage technical accounts of clients and create commands for the deployment service. Rich portal UI is built with ASP.NET MVC framework with extensive use of SignalR, knockout and bootstrap libraries.
Deployment service (Windows background service) pulls commands from management portal web API and executes them. It operates remote IIS, file system and databases. Operation log is written and in case of any failure the service rolls back the instance to previous working state. The service provides immediate feedback to the management system, so administrators can see what is happening in the portal UI.
From administrator prospective it is enough to register basic information about client in UI and click a button. Then in a few minutes the deployment system creates an empty, ready-to-work instance for the client.
The solution implemented by Arcadia team made it possible to scale Customer’s business. Now one person can manage large number of clients’ instances without any manual work.