News

Struct News 

Source
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§

Source§

impl Actix for News

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

Source§

impl Celery for News

Old DS workers based on Celery and Python 2.

Source§

impl<'period, 'f2017, 't2018, Language> Developer<Language> for &'period News
where Language: Python, 'period: 'f2017 + 't2018,

Python developer in Rambler News

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

Source§

impl GRPC for News

RPC implementation based on Tonic for Event Sourcing.

Source§

impl Postgresql for News

Main data storage.

Source§

impl Python for News

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.

Source§

impl Rust for News

Current realisation of the core API rewritten completely in Rust.

Source§

impl<'period, 'f2018, 't2022, Team> TeamLead<Team> for &'period News
where Team: Rust + Python, 'period: 'f2018 + 't2022,

Head of Media development team.

Since 2018, I have become the head of the development team. With the 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

    By the way, the development team’s area of responsibility includes such projects as MediaUp, Horoscopes, Weather, and some others.

Source§

impl Tokio for News

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

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.