“Ideas of the day” is a mobile app designed to promote the best daily ideas from around the world to a simple feed. Addressing the problem of information overload and short attention spans, this application will be designed to limit users to one 300-character post per day, promoting quality over quantity. Users can engage with the dialogue by promoting or downvoting posts, and responding with their own. All posts are either manually or automatically categorised into a discrete number of domains to facilitates people’s individuality and interests.
Name: Maxwell Schroder
Student number: 46414025
The application provides a simple interface for ingesting and posting ideas (posts). There are several core features that make up its MVP:
The scope for the Minimum Viable Product (MVP) of the “Ideas of the Day” application will include strict limitations on the core functionalities:
Scalability is important for this application due to potential peak user engagements changing constantly over time. To handle high volumes of requests for voting, feed generation, responses, and media uploads, we will implement a horizontally scalable architecture. This will prevent service degredation as the user base grows during peek times.
High availability is needed to deliver the core value of the application, which is the best posts from anywhere in the world, at any time. Achieving this requires a robust digital infrastructure with redundant components and automated failover mechanisms. Given reasonable constraints of an MVP, Semi-Global reach (Australia and South-East Asia for MVP) is appropriate and can be achieved using a Content Delivery Network, which will minimise latency for users worldwide. Continuous uptime will be achieved through automated monitoring and alerts tools. The application will also be designed to be resilient to regional outages, having database replication and backups to prevent data loss.
Modularity is important for this use-case to ensure the system can evolve and adapt over time. A microservice architecture will be implemented, allowing individual components to be developed, deployed, and scaled independently. This modular design promotes the decoupling of services, enabling the addition and replacement of features without disrupting core functionality. Well-defined and documented APIs and interfaces will facilitate communication between services, such as recommendation services, ensuring that components can be interchanged
Scalability will be assessed through performance testing using the open-source tool K9, simulating real-world peak user activity. We will mimic scenarios such as a surge of concurrent users performing high-frequency actions within a short timeframe, and a sustained rate of some set amount of media uploads per minute. To quantify performance, we will measure key metrics including API response latency, aiming for an average of under 300 milliseconds (chosen due to industry standard). Real-time monitoring of resource utilisation (CPU, memory) will ensure the application remains within acceptable performance thresholds.
Availability for this application incorporates both uptime, as well as accessibility given different regions of the world. This will be evaluated through continuous monitoring, focusing on Australian and South East Asian regions. We will aim for a 99.9% uptime within these regions, tracking key indicators such as API response times, error rates, and basic system health. Monitoring tools will be used to identify periods/areas of high latency and system errors.
Modularity will be evaluated by assessing the architectural design’s ability to facilitate the independent operation and replacement of services. We will measure the ease of service replacement, such as swapping the current NLP service or recommendation service, to demonstrate the decoupling of our design. Success will be determined by the system’s ability to quickly integrate and replace components, demonstrating a well-defined and modular architecture.