Product Development for Eduspire Solutions (now Securly)
We established a dedicated product development team for Eduspire Solutions to build a new version of their existing product FlexTime Manager (FTM).
Services
- Front-End
- Mobile
- QA
- DevOps
- Cloud
- Architecture
Duration
Project overview
Technologies
- AWSBack-endCloud
- AngularBack-end
- DockerBack-endCloudDevOps
- IonicMobile
- KubernetesBack-endCloudDevOps
- LaminasBack-end
- PHPBack-end
- SymfonyCloudDevOps
The objective
Scaling the system
The app was not developed with cloud architecture or scaling in mind. This did not align with their ambitious business plan for future user growth.
As a result they needed a reliable partner who could design, deliver and maintain a new microservice architecture using a cloud-native approach in order to achieve high-quantity scaling with a manageable cost structure.
The challenge
Complexity and performance were the two main challenges.
There was a lot of functionality and complicated business logic and this resulted in continual maintenance and bug-fixing.
Stability and performance, on the other hand, became a challenge owing to increased usage. Initially, there were only a few hundred users using the platform at once, but it now has to support between tens and hundreds of thousands of simultaneous sessions and there are future plans for scaling into the millions range.
The solution
Discovery, architecture design and scalability
We initiated a discovery process by auditing the existing app and then produced a report concerning various issues and security threats according to their severity and included recommendations for improvement. We designed a brand new intuitive and responsive UI for the various roles using the system and for the back-office system. The UI was then implemented with Angular and Bootstrap. In addition we used Ionic to build and deploy mobile apps for iOS and Android.
We designed modern new microservice architecture, decomposing the complex business logic to speed up and ease development and maintenance in the long term. The back-end is based on a PHP and Laminas framework, working with a combination of Symfony components.
Due to the nature of the product, the load is unpredictable and there might be hundreds of thousands of users accessing it simultaneously at any given time. We have used Docker and Kubernetes in combination with AWS autoscaling capabilities to orchestrate and automatically provision instances based on usage to achieve the scalability goals whilst optimising costs. The entire process of code integration, testing and provisioning is automated.
Main challenges
⯈What we did
-
- Business logic complexity
- We decomposed the complex business logic into several micro-services in consistency with DDD best practices while also separating frontend and backend logic.
-
- Performance
- To fulfill the performance objectives, we used software packaging technologies in conjunction with AWS' autoscaling solutions to provision instances based on consumption.
-
- Outdated technology
- We audited the legacy system and provided a plans for upgrades and enhancements.
-
- Outdated interface
- We designed all user portals with a a fresh look focused on usability but still on track with the interface that the users were already used to.
Based on our technical and design approach, we took their product to the next level, supporting 10x-100x growth using a modern cloud technology stack formulated and optimised for responsiveness to a high volume of simultaneous usage.