logo
pub struct News;
Expand description

One of the biggest news aggregator and news platform in Russia.

When I started on this project (2017) it was mostly python applications with classical legacy project problems:

  • High costs of development and support
  • High latency on web components (API and front-end)
  • The low actuality of news (mostly by long caching)

Trait Implementations

Project was built on top of Actix actor and web framework.

Old DS workers based on Celery and Python 2.

Python developer in Rambler News

Infrastructure migration to k8s and refactoring deployment process. Migration legacy codebase to python 3.

RPC implementation based on Tonic for Event Sourcing.

Main data storage.

Main language for Rambler/News up to 2020.

DS tasks such as classification, clusterisation and etc. are written in Python with self-made actor framework built on top of RabbitMQ and Protobuf.

Current realisation of the core API rewritten completely in Rust.

Head of Media development team.

Since 2018, I have become the head of the development team. With a team we were able to mostly solve all the problems described:

  • We are rewriting all Aggregator parts with actual ML algorithms and technical stack
  • Rewrite core API with Rust.
  • Rewrite parsing component with Rust
  • Remove all caching layers instead of one
  • Latency has decreased by about 10 times
  • Incidents count has decreased by about 10 times
  • Resource costs have decreased by about 20 times
  • Re-select and rewrite all DS workers
    Btw in the development team’s area of responsibility includes such projects as MediaUp, Horoscopes, Weather, and some others.

Project was built on top of tokio and Tonic for RPC and Event Sourcing services.

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.