Plus Camp 4.08

Plus Camp — эвент для техлидов и тимлидов, который устраивают сервисы Яндекса Go и Плюс. Мне посчастливилось рассказать в подкасте с @Wylsacom про алгоритмы под капотом Яндек Go. (будет доступен в тг) А еще в дебатле с Женей Смирновым @not_boring_ds, руководителем ML лаборатории в Альфа-Банке почеленджил миф о том, что программистов скоро заменит ИИ. Хоть […]

Как по закону Конвея можно зафакапить внедрение DDD.

Мы пишем микросервисы. Дальше еще больше микросеврисов, затем еще и еще до того момента как общая картинка перестает умещаться в голове даже самого опытного инженера. А как мы знаем, любую архитектурную проблему можно решить дополнительным слоем абстракции. Появляется идея внедрить DDD. DDD — не новая методология, о который мы тут не так часто говорим, но […]

409 Conflict в API

The request could not be completed due to a conflict with the current state of the target resource. This code is used in situations where the user might be able to resolve the conflict and resubmit the request. Часто при дизайне API забывают о 409. Если в описании интерфейса пропущен этот код ошибки, то это […]

Rate limiting с Congestion Control

В микросервисной архитектуре встречаются «лавинообразные» падения. Это, например, когда один сервис не вывозит нагрузку и начинает долго обрабатывать запрос, а его клиенты, вместо того, чтобы перестать нагружать сервис, начинают его ретраить, тем самым создавая еще большую нагрузку.  Проблему можно решать несколькими путями. Со стороны клиентов — реализуя классический Circuit Breaker, о котором не так давно […]

V8 в бэкенде С++: от одного JS-скрипта до фреймворка онлайн-вычислений

При разработке новой функциональности мы продвигаем платформенные решения.Это значит, что вместо того, чтобы писать бизнес код, мы инвестируем в разработку платформ, на базе которых можно строить уже непосредственно бизнес решения за очень короткий срок. Одной из таких платформ является js-pipeline. Система выносит управление бизнес логикой приложения уровень выше. Вместо того, чтобы описывать бизнес логику разработчиком […]

Целостность данных в микросервисах или как не дать неконсистентным данным сломать сервис

В микросервисной ахриктектуре бывают зависимости, которые накладывают определенные ограничения на используемые сервисы. Для примера, рассмотрим сервис аренды машин, где используется принцип database per service: Микросервис geoareas владеет данными о разных географических полигонах — городах, районах: {id, geometry} Микросервис tariffs в свою очередь распоряжается данными о стоимости аренды: {id, geoarea_id, price_per_minute}. Есть зависимость от сервиса geoareas. […]

Как мы переписали «жадный» механизм назначения, поменяли профиль нагрузки и перестали назначать ближайшего водителя на заказ

Доклад на Highload++ SPB 2019 о том, как мы внедряли «буферный диспатч» в алгоритм назначения водителей на заказ https://www.highload.ru/spb/2019/abstracts/4689