Decision acceptance deadline

09.09.25 (inclusive)

Form of award

The possibility of employment in the company

Product status

Finished product

Task type

ICT tasks

Сфера применения

Media sphere

Область задачи

Internet of Things

Type of product

Software/ IS,

Streaming log analytics

Problem description

Functional requirements Collection and normalization Receiving logs from 3 sources (HTTP Ingest + Kafka Topic + local files for backfill). Bringing timestamp to a single UTC format, correct handling of delays/late events (late events window configurable). Unification of fields (service, env, level, traceId, message, meta{}). Enrichment Connect events with the service registry (service → owner, oncall, criticality). Geolocation of IP → country/region (you can use a local geo‑db file). Incident detection There are at least two methods: (a) threshold rules (for example, ERROR rate > X% in Y minutes), (b) statistical anomaly (z‑score or EWM variance) in the number of events/latency. Generating an "incident" with attributes (id, initialtime, service, metric, evidence, status: open/resolved). Search and storage Indexing logs (full text + filters by fields). Elasticsearch/OpenSearch/SQLite FTS/Whoosh are acceptable — please explain the choice. Retention policy (hot/cold storage): hot 3 days, cold 30 days (emulate). API and UI (minimal) REST/gRPC for: (a) ingest (for test), (b) search queries, (c) incident list, (d) incident closure. The simplest search web page (search bar, service/env/level filters, pagination, viewing event details). Reliability Idempotent reception (dedup by traceId+ts or hash(message)). Peak processing/backpressure: queues/buffer, retrays with exponential delay. Non-functional requirements Performance: ≥ 10,000 events/sec on a regular machine (justify measurements and simplifications). Delay from reception to search: P95 < 2 seconds at 5k evt/s. Reliability: do not lose events when restarting a single worker (demonstration via a local persistent buffer). Observability: metrics (ingest rate, lag, error rate), health endpoint, structured logs of the service itself. Restrictions and introductory Language and stack: [REPLACE BY PHOTO] (default: Go/Java/Python + Kafka + any search engine). Deployment: Docker Compose or Kubernetes (minikube/kind). CI — [REPLACE BY PHOTO]. Without external paid services. Test data Generate a simulator of 3 services: checkout, catalog, auth (different ERROR/latency levels). Add noise and delayed events (up to 90 seconds). Attach 1-2 log files (JSON/CEF), HTTP ingest sample. What to provide (Deliverables) Architectural diagram (data flow diagram, queues, indexing, components). A repository with code, Dockerfile, docker‑compose/k8s manifests. A README with startup steps, parameters, and performance profiling. A set of tests (unit + load tests/event generation script). A short technical justification for choosing the search storage, the delay window, and deduplication. Evaluation criteria (category) Architecture and scalability — 30% The quality of the code and tests is 20% Observability and operation — 15% Correctness of incident detection — 20% Search UX and API Design — 10% Documentation and reproducibility — 5% Bonus tasks (optional) Correlation of events by traceId/spanId (simplified tracing). Incremental snapshots "hot→cold" with a cheap format (Parquet on a local/cloud bucket — emulation). Live alerts in Slack/Telegram (webhook emulator).

Expected effect

Architectural diagram (data flow diagram, queues, indexing, components). Repository with code, Dockerfile, docker‑compose/k8s manifests. A README with startup steps, parameters, and performance profiling. A set of tests (unit + load tests/event generation script). A short technical justification for choosing the search storage, delay window, and deduplication.

Full name of responsible person

Dauren Aripov

Purpose and description of task (project)

The contextual marketplace processes billions of events every day. A problem has arisen: different microservices keep logs in different formats and different time zones, and the monitoring SLA often misses anomalies. We need to build a service that aggregates logs in real time, normalizes them, identifies incidents, and provides fast full-text search. The goal is to design and implement a minimum viable product (MVP) for streaming log analytics with incident triggers and an API/interface for searching.

Note