Skip to content

Social Media Portal System Design

1. Business Requirements

Functional Requirements

  • User registration and authentication (users, admins)
  • User profiles (bio, avatar, privacy settings)
  • Post creation (text, images, videos, links)
  • Feed/timeline (personalized, trending)
  • Likes, comments, shares, and reactions
  • Friend/follow system
  • Real-time notifications and urgent alerts (mentions, DMs, security events)
  • Messaging (1-1 and group chat)
  • Search (users, posts, hashtags)
  • Analytics and reporting (engagement, trends)
  • Mobile-ready responsive UI and API
  • Role-based access control

Non-Functional Requirements

  • 99.9% availability (max ~8.76 hours downtime/year)
  • Scalability to millions of users and posts
  • Fast response times (<300ms for most requests)
  • Secure data storage and access control
  • Audit logging and monitoring
  • Backup and disaster recovery
  • GDPR/data privacy compliance
  • Mobile responsiveness

Out of Scope

  • Built-in ad serving/monetization (unless specified)
  • Video/voice calling (unless specified)
  • Integration with external social networks

2. Estimation & Back-of-the-Envelope Calculations

  • Users: 10M
  • Posts: 1B
  • Daily transactions: 100M (posts, likes, comments, messages)
  • Peak concurrent users: ~500,000
  • Data size:
    • Posts: 1B × 1 KB ≈ 1 TB
    • Media: 100M × 2 MB ≈ 200 TB (object storage)
    • User data: 10M × 2 KB ≈ 20 GB
    • Messages: 1B × 0.5 KB ≈ 500 GB
    • Logs/analytics: 1B × 0.2 KB ≈ 200 GB
    • Total DB size: ~2 TB (excluding logs, backups, media)
  • Availability:
    • 99.9% = 8.76 hours/year downtime max
    • Use distributed DB, multi-AZ deployment, health checks, auto-scaling

3. High Level Design (Mermaid Diagrams)

Component Diagram

mermaid
flowchart LR
  User[User (Web/Mobile)]
  LB[Load Balancer]
  App[Application Server]
  DB[(Database)]
  Cache[Cache (Redis)]
  Storage[Object Storage (Media)]
  Feed[Feed Engine]
  Alert[Alert/Notification Service]
  Analytics[Analytics Engine]
  Msg[Messaging Service]

  User --> LB --> App
  App --> DB
  App --> Cache
  App --> Storage
  App --> Feed
  App --> Alert
  App --> Analytics
  App --> Msg
  Feed --> DB
  Analytics --> DB
  Msg --> DB

Data Flow Diagram

mermaid
sequenceDiagram
  participant U as User
  participant A as App Server
  participant D as Database
  participant C as Cache
  participant S as Storage
  participant F as Feed Engine
  participant L as Alert Service
  participant M as Messaging

  U->>A: Create Post
  A->>C: Check User Session
  C-->>A: Hit/Miss
  A->>D: Store Post
  D-->>A: Success/Fail
  A->>S: Store Media (if any)
  S-->>A: Success/Fail
  A->>F: Update Feed
  F-->>A: Feed Updated
  A->>L: Send Alert (if urgent)
  A-->>U: Response

Key Design Decisions

  • Database: NoSQL (e.g., Cassandra, MongoDB) for posts, messages, and feeds; Relational DB (e.g., PostgreSQL) for user/auth data
  • Object Storage: For media (e.g., AWS S3, Azure Blob)
  • Cache: Redis for sessions, trending posts, and feed pre-compute
  • Feed Engine: Dedicated service for timeline/feed generation
  • Messaging: Separate service for chat (real-time, scalable)
  • Alerting/Notifications: Email/SMS/push via third-party service (e.g., Twilio, Firebase)
  • Analytics: Batch or streaming (e.g., Kafka + Spark, or managed cloud analytics)
  • Deployment: Cloud-based, multi-AZ, managed services for high availability
  • API: REST/GraphQL for mobile and web clients

4. Conceptual Design

Entities

  • User: id, name, email, password_hash, bio, avatar_url, privacy, registration_date, status
  • Post: id, user_id, content, media_url, created_at, updated_at, visibility
  • Comment: id, post_id, user_id, content, created_at
  • Like: id, post_id, user_id, created_at
  • Follow: id, follower_id, followee_id, created_at
  • Message: id, chat_id, sender_id, content, type, timestamp, status
  • Feed: id, user_id, post_ids, updated_at
  • Alert: id, user_id, type (urgent/mention/dm), message, created_at, status
  • AuditLog: id, user_id, action, entity, entity_id, timestamp

Key Flows

  • Post Creation:
    1. User creates post
    2. App stores post, uploads media if any
    3. Feed engine updates timelines
    4. Sends urgent alert if needed
  • Feed Generation:
    • Feed engine aggregates posts for user timeline
  • Messaging:
    • Messaging service handles real-time chat
  • Alerts:
    • System triggers urgent alerts for mentions, DMs, or security events
  • Analytics:
    • Periodic jobs aggregate engagement, trends, and user activity

Security

  • Role-based access control (RBAC)
  • Input validation, rate limiting
  • Encrypted connections (HTTPS)
  • Regular backups and audit logs
  • GDPR/data privacy compliance

5. Bottlenecks and Refinement

Potential Bottlenecks

  • Feed generation at scale:
    • Use pre-computed feeds, sharding, and caching
  • Media storage/delivery:
    • Use scalable object storage and CDN
  • Database write throughput:
    • Use NoSQL DB with sharding and replication
  • Alert delivery:
    • Use async queues for urgent notifications
  • Messaging scaling:
    • Use stateless messaging service and auto-scaling
  • Single region failure:
    • Deploy across multiple availability zones/regions

Refinement

  • Monitor system metrics and auto-scale app/feed/messaging servers
  • Regularly test failover and backup restores
  • Optimize queries and indexes for frequent operations
  • Consider sharding if user/post/message volume grows significantly

This design provides a scalable, highly available, and mobile-ready social media portal with robust urgent alerts, analytics, and operational best practices.