Our project has been created to deliver the content to customers (a large broadcasting company) via API. The idea is to give the latest information about soccer, football, basketball, hockey and many other sports. Every event in a game (goal, foul, pitch, kick etc.) is supposed to generate a system event that needs to be delivered to every user of a mobile application or a web site.
The main EPAM approach is to move the service into the cloud, build the infrastructure and create a completed hosting solution for an extremely high-load application in the cloud way.
Therefore, application needed to meet the two main requirements:
- Scalability is an application behavior that can allow adding any number of its copies (or copies of its modules/parts) into the system and process data correctly.
- High availability is an infrastructure characteristic that makes it possible to avoid downtime for the whole system or its most valuable parts.
Moving application to the cloud also provides two great benefits:
- Low price of hosting solution. Cloud based infrastructure gives a possibility to build flexible system and decrease hosting costs.
- Maintenance facility. Cloud based infrastructure allows to decrease the number of support team members.
EPAM team reviewed the application code and found that it is not cloud-ready 'as-is'. We considered code refactoring, moving the application into the cloud and developing new services to extend the functionality of the project. We chose Java as an application language, OracleDB - as an RDBMS, GlusterFS - as a storage cluster. Caching and delivering content to end-users has been entrusted to Akamai CDN service.
We also picked Tomcat as a main application container. The application frontend is developed on Mule - a lightweight Java framework. The frontend has a caching proxy functionality.
The well-established process of tasks within EPAM allowed us to achieve a stable infrastructure based on Amazon Web Services, while using expertise by different EPAM teams and locations. In addition to application development the following steps were performed:
- architecting cloud infrastructure
- performance testing in the clouds
- security audit and penetration testing
- developing High Availability and Disaster Recovery scenarios
- application deploy automation
- developing and setting up a monitoring plan
After the main part of the project has been completed, one member of EPAM Kharkiv team and one member of EPAM Lviv team continue working on it on a full time basis to improve and support current infrastructure. The 24/7 monitoring team in EPAM Minsk is involved in the support process as well.
During performance testing the application showed stable behavior even in unlikely situations. Load generator created 10,000 sport events (goal, pass, foul etc.) per minute and this populates the event through thousands of users.
This done, the application has been successfully moved to the cloud receiving all of its benefits and advantages, including:
- rapid elasticity
- horizontal scalability
- high availability
- disaster recovery
- automatic configuration
- continuous delivery
You can find the case study details in the document attached to this page.