In this application design important design consideration discussed mainly to make sure at least 1k concurrent users can use this app and also required reporting regarding review of content and dashboards. Major design objective is to scale this app to work with more users and more content.
- UI developed for both desktop and Mobile
- BFF to accept graphql requests from UI. This helps to in both aggregating services and also other benefits like flexibility of response data fields based on UI requirement . Which can reduce number of end points required . Apollo graphql client can add lot of inbuild capabilities as Talash has many apps so even it is possible to achieve graphql federation and sharing schemas across apps.
- Major objective is to make it as framework based on micro services so that all Talash apps can share the services quickly and reusability will be better.
- Operability point of view azure logging and using cloud for deployment can help to scale this app. Come across a tool where logs will show sql fired for that functionality and params passed to that sql Even though the code developed with ORM. that is quite innovative and reduce time to resolve issues quite quickly. These kind of tools integrations makes operability better. My favourite is serilog for logging as it has lot of integrations and data dog which can show response time of each api end point quickly. At some point I am using data dog to compare response time of each api between two releases and find out any performance issues quickly.
- Scalability wise either event driven or service bus processing should be implemented to handle high volumes of request processing wherever possible.
- Lot of analytics tools integration like data bricks , power BI helps to understand the user analytics and trends on the app and can help lot in enhancing the geo based or demographic based useful and prime content which can increase user engagement.
- Objective of all talash apps is not hosting huge content but just hosting prime content and user should be easy to grab prime content from web and can share and save for day to day use.
- App service for BFF can be made higher tier compared to Basic or Free tier. When I try to use function app which process data for 20 sec and scheduled for 5 min. total free cpu time for free tier exhausted. i.e 12 jobs per hour 24 hours running for 20 sec each job. 20*24*12 /60 min. Next app service tier may cost aorund 100$. so if we use data bricks for extraction of data and updating mongo db. It can save lot of cost on hardware.
- Async calls and using Service bus can increase decoupling of components.
- UI will post the upload data to Blob storage. Which can handle most of the calls and some bench marking can be done.
- Major processing is reading the user input and parsing the content and then pushing data to DB. This could be quite time consuming processing . Mongo DB can handle concurrent requests pretty well and the Back end component should use Tasks and update DB with bulk updates.
- Logging should use non blocking calls as well with proper tags so that session stitching quickly and retrieve required logs for analysis
- Additional component where user can give email and upload content.
- Admin can monitor the content and can delete based on some exceptions.
- As given above the content for review can use some of the AI features where
- the content can be analysed offline and mark content for ready for review.
- Using AI components will be costing bit more compared to manual work but
- can automate lot of review process.
- No user data will be saved at this stage as User login functionality is not attached to
- private data . This will be major enhancement once complete functionality is working fine.
- Validation of email if possible one time password.
- Save file content and user details .
- Validation of Data using AI services and manual services
- Validation rules implementation.
- Major AI services including
- Getting content description like image related data e.g. description..
- Getting copy rights of the content.
- Scanning for adult content.
- Checking duplicates .
- Separating premium and well classified data.
- Review UI
- Implementing approval stages for the content from ingest, review, final .
- Promoting data based on criteria.
- Analytics and dashboards using Data bricks.
- Enhance BFF and make it more modular by creating library for feature.
- Loggin in to Azure.
- Module should be pluggable into system so separate Data base, separate angular component and separate function app and service bus. Only BFF will be shared component from the talash.azure.com.au components.