Designed and implemented a backend and frontend solution with MongoDB and Spring Boot, successfully meeting business needs for media and content providers.
SaaS application, AWS based solution for big content providers that allows to manage complex metadata. Key points: scalable, microservice architecture
Products: AccedoOne, AppGrid.
Product main goal to give ability to content providers maintain and control "look-and-feel" of the end-customers applications.
Main challenges:
be able to scale fast - from 70k requests per minute to 5-7 millions per minute within 3-5 minuntes
API performance - API can return complex JSO objects that may be dynamically constructed for each customer
Simplified AWS clod diagram with main services used:
Service fully based on the cloud(AWS). Java services packed into Docker containers and deployed with ECS. Main data storage represented with MongoDB and S3.
S3
EC2
Load balancer
auto-scaling
DocumentDD/MongoDB
Elastic container service
redshift
Main AWS services used: S3, EC2, ECS, load-balancer, DocumentDB, redshift
Architecture diagram:
SaaS gives business managers a way to set required parameters to their applications and end users consuming those data via delivery API
Management console: initially AngularJS and after some time migrated to ReactJS
Front-end API: SpringBoot service, S3, Spring Security - users can authenticate with their ow credentials and all API requests controlled by the individual permissions granted to each user
Microservices: domain drive designed services with Spring Boot and uses MongoDB for main data storage and for data analytics used Redshift and RabbitMQ
Delivery API: represented by the highly scaleable gateway service writen with GoLang
Additional features:
Management API - API designed for system-to-system communication with unique API key for each user and allow to control data by integrating with other systems
Analytics - app usage data collection and representing it via dynamic charts and dashboards
A/B testing - gives ability to test changes only with some group of people before beploing to all users