0% found this document useful (0 votes)
19 views2 pages

Backend Engineer Assignment - Client-Server App

The assignment requires building a real-time distributed monitoring system with a server and 10 clients using a lightweight message queue. The system will stream process-level resource usage statistics from two types of clients and display them in a basic UI. The project should be completed by June 14th, and bonus points are available for running the server and clients on different systems or containers.

Uploaded by

Manoranjan Sahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views2 pages

Backend Engineer Assignment - Client-Server App

The assignment requires building a real-time distributed monitoring system with a server and 10 clients using a lightweight message queue. The system will stream process-level resource usage statistics from two types of clients and display them in a basic UI. The project should be completed by June 14th, and bonus points are available for running the server and clients on different systems or containers.

Uploaded by

Manoranjan Sahoo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Backend Assignment for Full-Time Role: Real-Time

System Monitoring with Server-Client


Architecture
Objective
Build a real-time distributed monitoring system comprising a Server and 10 Clients (5
instances of Client-1 and 5 instances of Client-2), communicating via a lightweight message
queue. The system should stream resource usage statistics (process-level) and display them in
a basic UI.

Languages/Tech-Stack:
1.​ Use high-performing language- Rust/C++/Java

System Architecture
Client Application
You’ll implement two types of clients, each with 5 running instances:

●​ Client Type 1 (Top Stats Client)


○​ Collect and send top 10 processes sorted by CPU usage every few seconds.​

●​ Client Type 2 (Bottom Stats Client)


○​ Collect and send bottom 10 processes sorted by CPU usage every few seconds.​

Each record sent should include:

●​ PID (Process ID)


●​ % CPU usage
●​ % Memory usage

Note: Real-time updates are expected (e.g., every 2–5 seconds).


Server Application
Your server must:

●​ Ingest real-time client data via a lightweight message queue (e.g., NATS, MQTT, Redis
Pub/Sub, etc.).​

●​ Store only the latest 30 minutes of data for each client (memory or database is fine).​

●​ Provide a basic UI (can be plain HTML/CSS) that:​

○​ Allows selecting any client out of the 10 instances created


○​ Displays a tabular view of data (PID, CPU, Memory) based on the chosen client
instance.

Note: UI/UX design is NOT a focus. The goal is clear data depiction.

Communication Protocol
●​ Use a lightweight messaging system (e.g., MQTT, NATS, Redis Streams, or similar).
●​ The design should be scalable and loosely coupled.

Bonus Points
●​ You'll earn extra credit if the server and client(s) run on different systems or containers.

Time & Deadline


●​ Estimated time: EOD, Saturday, 14th June (Sooner the better).
●​ Send us a 20-second recording or host your app and share the link.
●​ Don't share the code.

Tip for the Interview


●​ Usage of GenAI tools or vibe-coding is fine.
●​ But please understand the code and be ready to modify a few things during the
interview.

You might also like