The next big disruptive event could be around the corner. Is your cloud-based business continuity plan in place?
Read More >
WHAT WE WERE LOOKING TO SOLVE FOR THE CLIENT
WHY WAS THIS IMPORTANT
And when the legacy app in question is a Learning Management System (LMS) for an edtech business, it becomes vital to overcome these limitations.
The project involved the modernization of the client’s legacy LMS built on the Microsoft technology platform, into a cutting-edge application based on a Services-Oriented Architecture (SOA) using microservices. The app makes use of a blend of Kubernetes and Serverless architecture to deploy the microservices of the application optimally.
The application includes an admin portal, where managing server load in real time is not a major concern - therefore, deploying this part of the application using Kubernetes made the best sense in terms of flexibility and cost.
On the other hand, for the student-facing portion of the application, the load was likely to vary greatly – from a few thousand to hundreds of thousands of students accessing the application concurrently. Using Kubernetes in such a scenario would have required investing into a large number of Kubernetes pods to cater to the highest expected traffic – meaning this approach would be inefficient in terms of cost management and resource utilization.
Additionally, as the traffic levels fluctuate, server resources would also need to be scaled up or down in real-time to ensure optimization of performance and cost. With these considerations in mind, serverless architecture using Azure Functions was utilized to handle the student journey portion of the application.
With the modernized LMS playing a pivotal role in the client’s business, right from the outset, our focus was on ensuring a holistic digital transformation through three areas of focus:
Reduction in operation cost by automating routine service request
DAILY TICKETS RAISED FROM AN AVERAGE OF 12 WAS REDUCED TO 4
Improved Scalability by 10X for launching high volume courses
10,000 CONCURRENT USERS HAS BECOME 100,000 CONCURRENT USERS
An important first step to ensure that the modernized LMS would deliver significant incremental value was to gain an in-depth understanding of the legacy application. By comparing the insights gained from this deep-dive into the old LMS against the business requirements documents through interviews with the client, we performed a gap analysis to define the contours of the new application.
This not only helped to document the business and operational requirements that the updated app would need to fulfill, but also enabled the elimination of some of the requirements that existed for the earlier system, because these processes could now be automated.
"With Microservices approach, a number of integrations were made possible."
One important part of the modernization plan was to ensure optimization of both the student user journey and admin functionality by writing different styles of code for each.
While a serverless architecture using Azure Functions was adopted for the student journey to seamlessly and automatically handle scaling up and down of resources based on traffic, a microservices architecture based on Java was used for the admin portal to ensure optimal cost and flexibility.
Thanks to the microservices approach, a number of integrations were made possible - this meant that key functionalities that were already available in third-party applications could be utilized without needing to be completely redeveloped from scratch.
The client’s legacy LMS was hosted on-premise. This meant that scaling up resources was time consuming and expensive, and scaling of resources in real-time was out of the question. With the available infrastructure, servicing 300-400,000 users per annum was proving to be extremely difficult, and during traffic spikes, the LMS faced significant performance issues.
In fact this concern over performance and scalability was one of the key drivers for the decision to modernize the application.
With the Microsoft Azure cloud-based infrastructure platform used for the new application, these concerns were completely addressed, with the new infra allowing the LMS to support at least 100,000 concurrent users.
"The new infra supports at least 100,000 concurrent users."
The need for a dedicated in-house customer service team was almost completely eliminated by the modernized LMS. This was achieved through a detailed analysis of historical customer service requests, through which about 95% of such requests were eliminated. This meant that the customer service team was reduced from a team of 4 to a team of 1 and was merged with the help desk that serviced the application for internal and external stakeholders.
"The process of managing course configurations on the new LMS was simplified."
The new app was built as a Platform as a Service (PaaS). Therefore, any requirements from the client were handled by CloudNow’s support team, and the process was also made far more structured thanks to the layer of testing included as part of our standard process.
The process of managing course configurations on the new LMS was also simplified. In the old application, separate components of a course were created as independent assets that needed to be mapped to a particular state and course. This was eliminated by creating an intuitive course configuration wizard that handled everything in one cohesive workflow. This approach has also facilitated the ability to update the course without affecting other dependencies.
In the modernized app, on the other hand, creation of chapters, mapping to courses, and assignment of courses are all possible through an integrated interface, making changes also easy to implement.
The modernized learning management system delivers a very intuitive user experience, making use of limited sub menus and simple navigation, making it possible for a user to easily locate and access the available functionalities.
As a result, the new app has eliminated the need for in-depth knowledge transfer or training for users. In turn, this has removed dependence on subject matter experts or specific individuals from the team to operate the application, saving time and money.
Project Management & Collaboration Jira, Confluence
Database Azure Database for MySQL Server
Source Code Repository GitLab
User Interface React.js, Wordpress 5.7.2
Infrastructure Platform Microsoft Azure
API Layer Spring Boot Framework, Azure Functions
Architecture Microservices, Serverless
Static Code Analyser SonarQube
Dynamic Code Analyser Rapid7
Deployment Process CI/CD using Jenkins pipelines
Deployment Platform Azure Kubernetes with Ingress Load Balancer, Azure Functions App, Azure Cloud Storage (enabled static site), Azure API Management