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-сервисе. Вполне возможно, что через некоторое время вы о нём узнаете.

55
14 комментариев

Лучше бы вы провели встречу о том, как своевременно возвращать деньги свои клиентам и не врать

2
Ответить

Мой заказ T17057151195. Убедительная просьба перевести статус моего заказа из ДОБРОВОЛЬНОГО в ВЫНУЖДЕННЫЙ.
На данный момент я вынуждено нахожусь в Малайзии, так как авиакомпания Qatar перенесла рейс более чем на 12 часов, у меня сгорали другие билеты, и я вынуждено их отменила. Сегодня я напишу претензию на имя вашего генерального директора Логинова Ивана Сергеевича.
Прошу решить вопрос в досудебном порядке!!!

1
Ответить

Уже месяц я не получаю ответа от службы поддержки, вижу как и комментаторы выше. Вы что там офигели?? Ни одного ответа на мою заявку R339594666715, кроме того что вы там все очень заняты.

Это какое-то издевательство. Как будто это не организация, а просто чувак, который занял у тебя косарь и загасился, потому что возвращать не будет. Перебор, чуваки. В суде больше потратите денег и нервов чем вернуть мне эти долбанные 6к

1
Ответить

14.10.22 мною были куплены 3 билета из Новосибирска в Астану на 25.11.22. Авиакомпания официально отменила рейс 07.11.2023 в поддержке авиакомпании сказали что все денежные средства будут возвращены по месту приобретения билетов. В этот же день, мною были созданы заявки на возврат билетов и денег. Сегодня - 17 января 2023 года мне на почту пришло уведомления от OneTwoTrip о том, что заявка на возврат отменена. Причины не указали. В поддержке отвечают про загруженность, операторы говорят про загруженность.Туту вернули деньги через сутки после отмены этого же рейса по обратному маршруту.
Билеты Т28708224439
Возврат R342445220635
Причина отказа в возврате денежных средств в приложении стоит прочерк. Вот супер причина
Будем писать иск!

1
Ответить

Здравствуйте! Что-то решилось с Вашим возвратом? Подали иск? У меня аналогичная ситуация, тот же рейс. Пока до подачи иска не добралась, но уже готовлю документы для передачи своему юристу...

Ответить

Ольга, добрый день!
Мы не отказываем вам в возврате, поскольку не принимаем таких решений. Решение о возможности возврата и сумме принимает перевозчик, на рейс которого вы приобрели билет.
Первый ответ приходит от бота, затем он передает ваше обращение специалисту службы поддержки. Видим, что коллеги связывались с вами в чате мобильного приложения и консультировали по возврату средств. Возврат произведен, о сроках зачисления средств вам необходимо уточнить в банке, обслуживающем вашу карту.

Ответить