Our client provides enterprise text proofing solutions to media companies, large corporations, nonprofit organizations, and government agencies worldwide. The solution was primarily deployed on-premise windows servers and cloud VMs as an n-tier application. Their flagship customers – leading newspapers and magazines – were experiencing performance issues. The application was unable to scale on demand during peak loads and required manual interventions for maintaining availability SLAs with Enterprise customers. This was becoming difficult because of regional deployment of limited support resources supporting geographically diverse set of customers. Moreover, the same solution was now being offered in a SaaS model to a broader market. Traditional solutions of using more and/or higher end infrastructure resources with a 24/7 support coverage through a globally distributed support staff were not economically and technically viable.
Raykor Product Engineering team analysed the existing architecture and, technical and business issues. They realized that ensuring high availability and scalability of the solution along with efficient use of infrastructure resources was a primary importance.
Wholistic approach with long term view
After analysing the existing architecture and the technical and business issues, Raykor Product Engineering concluded that modernizing the apps to a cloud-native architecture was the appropriate solution. When client team reviewed this proposal, they realized that this was not only a solution to the issues at one customer site, but the future architecture very much supportive of the SaaS model that the company wanted to promote aggressively.
Raykor proposed a cloud adoption roadmap for the entire line of proofing solutions. It was then decided to begin the cloud adoption journey with their flagship product.
Wholistic approach with long term view
Raykor team used a phased iterative and incremental approach for modernization of the solution. The initiation phase included high level project planning and the development of the future application architecture.
In phase 1, the focus was on containerization. Some components were migrated from older technology/frameworks to RESTful architecture using the latest technologies (Node.js, Redis cache) to make them cloud friendly.
Phase 2 continued to integrate the other components into the new architecture.
Phase 3 is the most ambitious one, which includes refactoring the core application into smaller components.
Each phase delivered a production ready software which was deployed in various AWS regions.
All the architecture, design and execution decisions were guided by the customer needs and goals of ensuring high availability and scalability while also ensuring smooth transition of existing customers to the new architecture
Higher availability and scalability
Multiple instances of each component using Docker/Docker Swarm make the application highly available and scalable. Replacing use of file system with Redis cached improved performance.
Lower infrastructure cost
The new multi-tenant architecture with many small components permits use of lower configuration servers which can be shared among multiple customers optimizing the cloud infrastructure costs.
Security of the entire application is enhanced through the optimal configuration of Virtual Private Cloud and Docker network, considering various types of accesses required by cloud administrators, developers and users worldwide.
Use of Agile and DevOps has made deployments and upgrades faster. Use of AWS CloudFormation features (using infrastructure-as-code) allows accurate provision of environments in minutes in the desired regions. Overall agility of the business has increased as new features, enhancements and bug-fixes can be rolled-out to a large group of customers smoothly and efficiently.
Node.js, AWS cloud, Containerization, DevOps