{"id":13571,"url":"\/distributions\/13571\/click?bit=1&hash=d83cff4565300d1a2d0608fa73dd700b196f4b77356ac6255703ca3cdf2503d0","title":"\u041a\u043e\u043b\u043b\u0430\u0431\u044b, \u0440\u0435\u044e\u0437\u044b, \u043a\u043e\u043b\u043b\u0430\u0436\u0438... \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u044d\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"bf0e0fe0-842c-5899-bb40-4efc00426ccf","isPaidAndBannersEnabled":false}
OneTwoTrip

OneTwoTrip Backend Meetup 2022

15 июня в башне «Империя» Москвы-Сити мы провели встречу для backend-разработчиков. На ней наши эксперты рассказали, какие инструменты, технологии и решения применяются в OneTwoTrip. Получился классный день, полный живого общения и нетворкинга, который завершился весёлой вечеринкой.

Все выступления специалистов OneTwoTrip можно посмотреть в записи, а тут мы напишем краткое резюме для тех, кому удобнее перед просмотром ознакомиться с содержанием докладов.

«Защита от ботов в микросервисной архитектуре», Константин Зубков

Константин Зубков — CTO, или технический директор OneTwoTrip. На встрече он рассказывал про опыт сервиса в борьбе с ботами. Компания занимается этим уже больше пяти лет.

В докладе Константин освещает тему очень подробно, начиная с рассказа об устройстве базового веб-сервиса (1:04). Боты в этой схеме — это запросы, которые созданы не людьми. По сути, сегодня победить бота можно только тогда, когда стоимость его работы становится больше, чем ценность информации, которую бот собирает — в этом случае его работа становится неэффективной.

Одна из возможных ситуаций разбирается с 3:55: клиент сервиса делает заказ с использованием промокода. Бота можно поставить на последовательный перебор всех цифр (PROMO001 и так далее). Самым простым решением была постановка Rate Limit, то есть ограничения числа запросов, и на 5:15 Константин объясняет, как это может работать.

Однако, если у сервиса много запросов или есть нетипичные пользователи (операторы самой компании), можно создать им дополнительные проблемы. Например, у OneTwoTrip есть банки-партнёры, сотрудники которых в один день получают промокоды — и многие тут же идут их тратить. Сервер видит резкий скачок запросов с одного ip и может всех их заблокировать, приняв за ботов. К сожалению, такая ситуация случилась в реальности.

В презентации множество подобных примеров. Так, на 13:40 можно посмотреть упрощённую схему, работающую в OneTwoTrip, а с 18:15 — её детали.

Далее Константин рассказывает, как выглядит доработанная система запросов-ответов в OneTwoTrip, про её развитие и мониторинг. Доклад полезен для разработчиков, которые думают над налаживанием системы борьбы с ботами, и в выступлении можно найти ряд подсказок и полезных советов.

«Сквозное логирование запросов в NodeJS приложениях», Кирилл Красавин

Кирилл Красавин в OneTwoTrip — Tech Lead, занимается инфраструктурными и маркетинговыми сервисами. На встрече он подробно и интересно рассказывал про сквозное логирование — зачем и кому оно может понадобиться — а также рассматривал варианты решения возможных проблем.

С 2:53 Кирилл рассказывает о TLS и CLS — различных методах хранения данных, больше внимания уделяя CLS (методу хранения данных в контексте коллбэков), в том числе его истории.

А с 6:35 этот метод хранения разбирается на примере — внимание, самый сложный слайд в презентации.

Далее рассматриваются подводные камни метода сквозного логирования — накладка с производительностью и другие.

После Кирилл рассказывает, как всё это работает в OneTwoTrip. Если кратко, там, где метод функционирует, всё выглядит как сказка (слайды на 14:29 и 14:47). Там, где это не работает — проблематично.

Для такого способа есть сторонние альтернативы — если не хотите заниматься разработкой своего модуля, будет интересен материал с 15:30.

«История MongoDB в OneTwoTrip», Андрей Михальцов

Андрей Михальцов в OneTwoTrip занимает должность Devops tea mlead. На митапе он рассказал про системы управления базами данных, которые используются в сервисе — в том числе MongoDB, и про другие, применявшиеся раньше — MySQL/PostgreSQL, RIAK и Couchbase (которую админы в итоге переименовали для себя в ouchbase из-за ряда неудобств).

Первым проектом на базе MongoDB стал Extranet, но довольно быстро на неё переехали многие другие проекты — и тут начались проблемы. Для их решения пришлось делать следующую итерацию Mongo, с более жёстким разделением по ресурсам и улучшенным удобством управления.

Реализовать эту новую итерацию можно было тремя способами:

  • Создать много маленьких монг в облаке
  • Купить DBaaS
  • Создать много монг на BareMetal

О плюсах и минусах каждого варианта Андрей рассказывает в своём выступлении (5:45). Если кратко — выбран и реализован был третий вариант. Его созданию посвящена часть доклада с 7:50 до 14:00.

Андрей также делится техническим деталями об эксплуатации нынешнего варианта базы: рассказывает о плюсах и минусах (например, сложное обновление).

А о результатах использования выбранного варианта (MongoDB на BareMetal) в цифрах можно послушать с 15:55. Текущая база данных оказалась более гибкой и финансово выгодной, чем альтернативные варианты.

Далее Андрей рассказывает о том, как именно проводится мониторинг текущей работы базы.

«Жизнь под санкциями и массовые рассылки», Антон Панов

Антон Панов, который сегодня является CTO компании MyGig, а раньше работал в OneTwoTrip ведущим NodeJS разработчиком, рассказал об одном интересном проекте — сервисе для массовых рассылок. Сейчас эта тема особенно актуальна, поскольку ряд специализированных компаний ушли с российского рынка, но необходимость информировать клиентов никуда не делась.

В OneTwoTrip существует два типа рассылок — сервисные (например, о создании и обработке заказа) и массовые (с важной информацией или, например, ссылками на новые статьи в блоге). Для обоих типов писем использовали внешние сервисы Mailgun (только для массовых рассылок) и Sendgrid.

Что не так в использовании сторонних сервисов для массовых рассылок?

  • Дорого: в пиковые месяцы количество массовых писем могло доходить до 12 миллионов. Плюс попадаем в зависимость от цен поставщика и курса доллара или евро.
  • Не гибко: нет возможности доработать сервис под себя.
  • Нет единого интерфейса.
  • Непонятно, что происходит внутри сервиса.

Рассмотрев все эти минусы, в OneTwoTrip приняли решение сделать свою систему для массовых рассылок. Задача казалась интересной и выполнимой. И — спойлер — всё получилось!

В своём выступлении Антон подробно рассказывает, какой должна быть система для массовых рассылок, и что именно разработчики делали, чтобы учесть все нюансы.

В итоге получилось собственное решение OneTwoTrip под названием A-postle. Структурную схему с подробным объяснением её работы можно посмотреть на слайде с 8:08 до 19:15.

Само решение сегодня внедрено и эффективно работает. Сейчас разработчики занимаются дальнейшим развитием A-postle — в планах поддержка FBL-отчётов (отчёт о том, сколько писем прочитано, отправлено в спам и т. д.), парсинг bounce (ответных писем от серверов, например, о переполненном почтовом ящике). Также планируется сделать веб-интерфейс для архива — и на этом фоне появилась мысль о собственном SaaS-сервисе. Вполне возможно, что через некоторое время вы о нём узнаете.

0
Комментарии
Читать все 0 комментариев
null