Server Architecture
    • Dark
      Light
    • PDF

    Server Architecture

    • Dark
      Light
    • PDF

    Article summary

    Explore the Rocket.Chat server architecture to understand the platform’s structure. Whether you're a developer or just curious, this document offers a clear look into Rocket.Chat’s scalable designs and component interactions which shape the server’s robustness and versatility.

    See architecture and components for a holistic view of Rocket.Chat's architecture and components.

    Core server

    This component contains packages essential for user authentication, messaging, and other core functionalities of the Rocket.Chat server.

    Database

    Rocket.Chat uses MongoDB to store its data, such as chat messages, user information, and system configurations.

    File storage

    Additionally, the server employs a file storage system for storing assets, user files, images, and various media files.

    Services

    The Rocket.Chat server architecture consists of internal and external services. Internal services operate within the meteor instance, closely integrated with the main process. On the other hand, external services can operate independently in separate processes.

    External services

    Some external services in Rocket.Chat includes the following:

    • Authorization: Manages user authorization and permissions, ensuring users have the proper access rights to various functionalities. It can be horizontally scaled and is stateless.

    • Account: Handles user account management, including creating, updating, and deleting. It facilitates user authentication methods like login and logout. This service is stateless and can be horizontally scaled.

    • Presence: This handles user presence management, tracking, and updating the user's online status. It can be horizontally scaled and is stateless.

    • StreamHub: Captures database changes and broadcasts real-time data to other services. It's currently a single-instance service without support for horizontal scaling.

    • DDPStreamer: Oversees DDP (Distributed Data Protocol) connections, managing client-server interactions, subscriptions, and data transmission to clients. It can be horizontally scaled.

    • Apps-Engine: Handles Rocket.Chat apps, managing their installation, updates, execution, and removal. Although it's designed for horizontal scaling, please note that this service is currently in the development phase.

      Note:

      • Horizontally scaled: The Rocket.Chat server can be expanded by adding more servers or instances. This distributes the workload and improves performance without a single point of failure.

      • Stateless: The service does not retain data or state between requests, making each request independent. This simplifies scaling and enhances reliability, as any instance can handle any request without needing to remember previous interactions.

    Internal services

    • Banner: This service oversees banners, including their creation, updates, and deletion.

    • LDAP: This service manages LDAP (Lightweight Directory Access Protocol) integration, establishing connections to LDAP servers and overseeing user synchronization.

    • NPS: This service collaborates with the Banner service to manage Net Promoter Score (NPS) surveys. It generates banners for specific users and manages survey responses.

    • Room: Manages chat rooms, including creation, updating, and deletion.

    • OmniChannel: It's responsible for managing various omnichannel tasks.

    • Omnichannel Voip: It handles VoIP (Voice over Internet Protocol) calls within the omnichannel system.

    • Team: It manages teams within Rocket.Chat, including creation, updating, and deletion.

    • UiKitCoreApp: This service handles UIKit actions and events, utilizing the Apps-Engine service for app-related tasks and events, along with Meteor Legacy for core actions.

    • Push: This service is responsible for managing push notifications, and sending them to mobile applications.

    • Upload: This service oversees file uploads, including uploading files to the file system and handling file management.

    • Messaging: This service is accountable for managing messages within Rocket.Chat.

    • Settings: This service is in charge of managing system settings, involving tasks like creating, updating, and deleting settings.

    In essence, the Rocket.Chat Server Architecture represents a sophisticated blend of components, seamlessly uniting to create a robust communication platform. From user authorization to data management, each service plays a pivotal role. This architecture adapts and evolves to accommodate new features, showcasing its commitment to innovation and user satisfaction.


    Was this article helpful?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.
    ESC

    Eddy AI, facilitating knowledge discovery through conversational intelligence