Title: SSChat - A Secure, Scalable Messaging App
Abstract
SimpleChat is a mobile messaging app designed to provide a seamless, secure communication experience. It focuses on three key quality attributes: high availability, ensuring users can always access their chats; scalability, allowing the app to grow to millions of users; and robust security, protecting user data and privacy. SimpleChat achieves this through a minimalist feature set, enabling rapid development of a reliable and efficient app.
Author
Name: Jiaqi Zhang
Student number: 48159861
Functionality
SimpleChat allows users to easily connect and communicate with each other. Its core features include:
- Secure 1-on-1 and group chats: Users can send text or voice messages, photos, short videos and files to individual contacts or create groups for team collaboration or social circles.
- Customizable profiles: Users can create an account, set a profile picture, and manage their visibility settings.
- Intuitive contact management: Users can add, remove, or block contacts, and organize them into custom lists for easy access.
- Flexible notifications: Users can customize their notification preferences for each chat, choosing between push notifications, in-app alerts, or no notifications.
To ensure user privacy, all messages are end-to-end encrypted, and the app collects minimal metadata.
Scope
For the initial release, SimpleChat will include the following features:
- User registration and authentication: Users can sign up with an email and password or through third-party OAuth providers.
- Basic profiles: Users can set a display name and profile picture.
- 1-on-1 text chats: Users can start a chat with any of their contacts.
- Sending photos: Users can send images up to 10MB in size within chats.
- Contact list: Users can add contacts by email or phone number and view a simple list of their contacts.
- Push notifications: Users receive notifications for new messages when the app is closed.
Quality Attributes
SimpleChat prioritizes three key quality attributes:
- Availability: SimpleChat aims for 99.9% uptime, ensuring that users can access their chats and contacts whenever they need to. This is achieved through a robust, decentralized server architecture and automatic failover mechanisms.
- Scalability: SimpleChat is designed to scale effortlessly to support millions of concurrent users. It uses a microservices architecture, distributed databases, and real-time messaging protocols to enable horizontal scaling across multiple regions.
- Security: SimpleChat employs industry-standard encryption protocols (such as Signal Protocol) for all user data, both in transit and at rest. It also implements secure user authentication, with options for two-factor authentication and anomaly detection to prevent unauthorized access.
Evaluation
To ensure SimpleChat meets its quality attribute goals, we will conduct rigorous testing and evaluation:
- Availability: We will measure the actual uptime percentage over a 1-month period, using automated monitoring tools to track server responsiveness and alert on any outages. We aim to identify and resolve any availability issues within 30 minutes.
- Scalability: We will conduct thorough load testing, simulating 1 million concurrent users sending messages and performing typical actions. We will measure key performance metrics like response time, error rates, and resource utilization, and optimize the architecture to handle the target load.
- Security: We will engage an external security firm to conduct comprehensive penetration testing and code audits. They will attempt to identify vulnerabilities in our authentication, encryption, and data storage systems. We will promptly resolve any critical security issues before launch and establish an ongoing bug bounty program.
Additionally, we will track user-facing metrics like app installs, daily active users, and user ratings to gauge overall success and identify areas for improvement.