AWS Partner Network (APN) Blog
Scaling Learning: How Geniusee Migrated a WordPress E-Learning Solution to AWS Serverless
Geniusee |
By Nazariy Hazdun, Chief Technology Officer – Geniusee
By Qalib Aliyev, DevOps Engineer – Geniusee
By Nikolay Sklyarov, Back-end Developer – Geniusee
By Damir Ravilov, Back-end Developer – Geniusee
By Bhavye Sharma, Partner Solutions Architect – AWS
By Rahul Kochhar, Partner Solutions Architect – AWS
Upgrading projects and ensuring scalability is important for any business. As customer demands increase and technologies advance, businesses must keep up innovations to avoid disruption.
Solutions built on serverless architecture enable customers to move faster from idea to application and business value, delivering higher system performance, enhanced security, and lower total costs. Serverless’ automatic scaling helps tackle the challenges of unpredictable workloads, making scaling much more manageable. Additionally, adopting this modern technology ensures that businesses remain competitive and agile, addressing operational burdens effectively.
Geniusee, an AWS Advanced Tier Services Partner, is a software development company that provides technology solutions for EdTech and Fintech industries.
In this article, we’ll look at how Geniusee helped a customer to update their e-learning solution with AWS Lambda and Amazon Elastic Container Service (Amazon ECS) with AWS Fargate. We’ll also find out why the client decided to make these changes and migrate their WordPress application to Laravel and React running on AWS serverless.
Background
Geniusee’s client, an e-learning SaaS solution provider, needed a qualified team of developers to modernize their solution to a global scale. The SaaS solution consists of multiple tenants, each tenant hosted in their own domain name with content focused on a particular learning area, i.e. finance, sustainability, or data science. These tenants share the same backend functionality and are managed from a single admin panel but are marketed as distinct products.
The client required a solution that can scale globally and is highly available to replace their existing WordPress-based solution. The Geniusee team came up with a solution using AWS Lambda and Laravel for the backend, and React for a completely customized solution with a redesigned UI/UX.
Requirements
After completing the discovery of requirements, Geniusee identified the following action items:
- Disaggregating and modernizing a monolith WordPress app to a modern serverless stack.
- Migrating the business logic from WordPress to Laravel.
- Securely integrating third-party services like the learning management systems (LMS), authentication (Auth0), subscription management, and search.
- Designing an architecture to support 1 million concurrent users with 99.99% SLA uptime, ensuring compliance with industry security standards such as ISO 27001 and GDPR.
- Creating easy-to-understand business and user analytics across all tenants.
Proposed Solution
Geniusee’s migration included a shift to a serverless stack i.e. modernization to minimize the overhead of managing the servers and ensure high availability and scalability. Additionally, there were integrations with various AWS services for both backend and frontend applications.
The modern architecture included:
- AWS Lambda backend using Laravel Vapor for easy deployment and versioning.
- Amazon ECS with AWS Fargate based frontend serving a React Node.js deployment to replace the existing monolith Amazon Elastic Compute Cloud (Amazon EC2) WordPress application.
- Amazon Cognito for secure authentication of users.
- Amazon Simple Storage Service (Amazon S3) for scalable storage for video content, images and other platform related files.
- Amazon API Gateway to monitor and secure the endpoints.
- Amazon Relational Database Service (Amazon RDS) for a highly available data store with Amazon ElastiCache for faster response times.
- Amazon Quicksight for analytics of the multi-tenant environment.
The proposed serverless solution aligns with and enables the key benefits of a modern e-Learning solution, as outlined below:
Agility: With the use of AWS Lambda and Amazon ECS with AWS Fargate, allows quick scale up or down based on user demand, it also enabled rapid deployment of new features.
Improved functionality: Using modern web frameworks Laravel on the backend and React on the frontend allowed Geniusee developers to implement bespoke solutions outside WordPress’s plugin-based architecture. Features like personalized learning paths, interactive content, and gamification kept learners engaged. Built-in assessments and analytics give the client valuable insight into how content is performing so they can optimize the learning experience.
Better integration: Developing a custom solution on Laravel from scratch allows easy integrations with other tools using APIs, for example LMS or video conferencing software. Also, integrations with services like Amazon Cognito and Amazon Quicksight, power secure authentication and comprehensive analytics.
- User visits the relevant tenant website and gets DNS information from Amazon Route 53.
- User request is received by the frontend Elastic Load Balancing (ELB) Application Load Balancer.
- Frontend Application Load Balancer routes the request to the ECS.
- The request is received and processed by the React Application running on ECS with Fargate. The static web assets and video content is fetched from S3 for that particular tenant.
- The incoming request is sent to the backend Application Load balancer if further processing is needed.
- The backend Application Load balancer routes the request to the Lambda running the Laravel application.
- ElastiCache is used to store the data in cache for fast responses.
- Lambda queries Amazon RDS to fetch stored customer data.
- As the user views content, it emits events which trigger the Lambda and stores them on Amazon SQS. This allows tracking the real-time progress of completion as the user is watching video modules.
- The Amazon Simple Queue Service (Amazon SQS) messages are sent to consumer Lambdas for processing. While processing, the Lambda function temporarily store the user view events in a Amazon DynamoDB table. DynamoDB is utilized as a fast I/O buffer before finally pushing the prepared data into Amazon Aurora.
- The data in Amazon Aurora is analyzed in Amazon Quicksight for generating and visualizing valuable business insights.
Outcomes delivered for the client
By optimizing this e-learning solution, the client achieved a significant increase in performance and efficiency. This enhanced experience led to higher client satisfaction and retention rates.
As a result, the modernization of the client’s e-learning solution with serverless architecture on AWS allowed them to scale globally while streamlining their service.
Move to Serverless with Geniusee
Geniusee has been a certified AWS Consulting Partner and AWS Advanced Tier Service Partner since 2021 with over 200 world-leading industry experts and 180 successful projects in Fintech, EdTech, and other industries. Geniusee is driven by the mission to contribute to improving the education of professionals and expanding their expertise.
For more details on AWS technologies and how the architecture can benefit you, visit the Geniusee website.
The content and opinions in this post are those of the third-party author and AWS is not responsible for the content or accuracy of this post.
.
Geniusee – AWS Partner Spotlight
Geniusee is a custom software development company with 200+ experts delivering projects across FinTech, EdTech, Retail, and more. As an AWS Consulting and Advanced Tier Service Partner, Geniusee holds 12 AWS Service Delivery Designations and the Education and DevOps Competency designations. Geniusee is ISO 9001:2015 and ISO 27001 certified for quality and information security management.