Как стать автором
Обновить

Компания Ситимобил временно не ведёт блог на Хабре

Сначала показывать

От эвристики до машинного обучения: поисковые подсказки в Ситимобил

Время на прочтение8 мин
Количество просмотров3K


Всем привет! Меня зовут Михаил Дьячков, и в Ситимобил я занимаюсь машинным обучением. Сегодня я расскажу вам о нашем новом алгоритме формирования поисковых подсказок конечных пунктов назначения. Вы узнаете, как на первый взгляд довольно простая задача превратилась в интересный сценарий, с помощью которого, мы надеемся, у нас получилось немного облегчить жизнь пользователей. Мы продолжаем внимательно следить за работой нового алгоритма и впоследствии будем его «подкручивать», чтобы поддерживать качество ранжирования на высоком уровне. Для всех пользователей мы запустим алгоритм в ближайшие несколько недель, но уже готовы рассказать о долгом пути, который мы прошли от эвристики до алгоритма машинного обучения и выкатки его в эксплуатацию.
Читать дальше →
Всего голосов 8: ↑6 и ↓2+5
Комментарии0

О переезде с Redis на Redis-cluster

Время на прочтение11 мин
Количество просмотров26K


Приходя в продукт, который развивается больше десятка лет, совершенно не удивительно встретить в нем устаревшие технологии. Но что если через полгода вы должны держать нагрузку в 10 раз выше, а цена падений увеличится в сотни раз? В этом случае вам необходим крутой Highload Engineer. Но за неимением горничной такового, решать проблему доверили мне. В первой части статьи я расскажу, как мы переезжали с Redis на Redis-cluster, а во второй части дам советы, как начать пользоваться кластером и на что обратить внимание при эксплуатации.

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии12

Как и почему в InnoDB появились индексы на основе В-дерева

Время на прочтение7 мин
Количество просмотров6.3K
Всем хорошо известно, что индексы на основе структуры данных В-дерево помогают нам быстрее читать и находить записи в таблицах. В сети можно найти огромное количество информации по этому поводу, но я постараюсь показать, с какими проблемами нам пришлось бы столкнуться без использования индексов на основе В-дерева, и почему выбрали эту структуру данных. И в качестве примера я возьму подсистему хранения InnoDB из MySQL.

Чтобы разобраться, как появились индексы на основе В-дерева, давайте представим мир без них и попробуем решить типовую задачу. Попутно обсудим проблемы, с которыми столкнемся, и способы их решения.

image
Читать дальше →
Всего голосов 10: ↑9 и ↓1+11
Комментарии7

Энергопотребление Android-приложений

Время на прочтение9 мин
Количество просмотров22K

Ваши пользователи жалуются на то, что приложение очень быстро сажает заряд телефона? Запущенный фоновый сервис внезапно останавливается? Сообщения от FCM не доходят до пользователя? Что связывает эти три серьезных вопроса? Ответ прост — неверно выстроенная работа с энергопотреблением приложения.


Давайте разберемся в основных моментах, связанных с этой темой. Возможно, это позволит вам в будущем избежать ошибок, с которыми сталкивалось большинство разработчиков мобильных приложений.


В интернете огромное количество разрозненной информации, собрать которую в единое общее руководство было одной из основных целей этой статьи.


image

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии13

Стилизация Android-приложений и дизайн-система: как это сделать и подружить одно с другим

Время на прочтение8 мин
Количество просмотров19K


Привет читателям!  

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

Поэтому решили внедрить в наше приложение дизайн-систему и добавить поддержку нескольких тем оформления. 

Изучив различные способы, выработали свой подход к решению такой задачи. Хотелось сделать так, чтобы дизайн-систему и поддержку стилей можно было повторно использовать в других своих проектах. В соответствии с этой идеей разрабатывались компоненты и темы.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии10

Хороший ли выбор Svelte для реализации виджета?

Время на прочтение4 мин
Количество просмотров8.2K

Привет! Меня зовут Дмитрий Усов, я фронтенд-разработчик в Ситимобил. Буквально несколько месяцев назад появилась задача создать виджет для заказа такси через сайт. В этой статье я хотел бы рассказать, почему для этой задачи был выбран Svelte, поделиться своим мнением о его достоинствах и недостатках, а также полезными ссылками, если вы решитесь изучать или применять эту технологию.


CitymobilSvelte

Читать дальше →
Всего голосов 19: ↑18 и ↓1+28
Комментарии19

Простой service discovery в Prometheus через Consul

Время на прочтение9 мин
Количество просмотров22K
Закон Парето (принцип Парето, принцип 80/20) — «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата».
Wikipedia

Приветствую тебя, дорогой читатель!


Моя первая статья на Хабр посвящена простому и, надеюсь, полезному решению, сделавшим для меня сбор метрик в Prometheus с разнородных серверов удобным. Я затрону некоторые подробности, в которые многие могли не погружаться, эксплуатируя Prometheus, и поделюсь своим подходом по организации в нём легковесного service discovery.


Для этого понадобится: Prometheus, HashiCorp Consul, systemd, немного кода на Bash и осознание происходящего.


Если интересно узнать, как все это связано и как оно работает, добро пожаловать под кат.


Prometheus + Bash + Consul

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии21

Orchestrator для MySQL: почему без него нельзя строить отказоустойчивый проект

Время на прочтение5 мин
Количество просмотров9.3K
Любой крупный проект начинался с пары серверов. Cначала был один DB-сервер, потом к нему добавились слейвы, чтобы масштабировать чтение. И тут — стоп! Мастер один, а слейвов много; если уйдет один из слейвов, то всё будет хорошо, а если уйдет мастер — будет плохо: даунтайм, админы в мыле поднимают сервер. Что делать? Резервировать мастер. Мой коллега Павел уже писал об этом статью, я не буду ее повторять. Вместо этого расскажу, почему вам обязательно нужен Orchestrator для MySQL!
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии6

ProxySQL — средство для демультиплексирования соединений

Время на прочтение3 мин
Количество просмотров7.7K
Здравствуйте, меня зовут Александр Яковлев, я работаю в компании Ситимобил и занимаюсь эксплуатацией. Сегодня я расскажу про очень интересный продукт ProxySQL — это высокопроизводительный MySQL Proxy, который умеет очень много — отлавливать и убивать запросы по маске, с помощью него можно искать sql injection, дублировать нагрузку и много другое. Я расскажу о нашем опыте работы с ним.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Как мы отбираем дизайнеров и проводим технические собеседования

Время на прочтение9 мин
Количество просмотров9.9K


В Ситимобил три подразделения продуктового дизайна: райдер, драйвер и бэк-офисы, и для каждого из них нужно подобрать людей, которые будут решать свои специфические задачи.

Кто вообще откликается и кого мы ищем


Отбор кандидатов даже для каких-то первичных собеседований — достаточно трудоемкий процесс. Он занимает много времени руководителей подразделений и сотрудников службы рекрутмента.

Откликов много, а релевантных очень мало. В итоге всех кандидатов можно разделить на несколько групп:
Читать дальше →
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

Тонкое резервирование файловых систем Linux. Как создавать рабочие копии трехтерабайтной СУБД MySQL за 20 секунд

Время на прочтение10 мин
Количество просмотров16K


Меня зовут Юрий, я руководитель группы системного администрирования в Ситимобил. Сегодня поделюсь опытом работы с технологией тонкого резервирования (thin provisioning) файловых систем Linux и расскажу, как ее можно применять в технологических CI/CD-процессах компании. Мы разберем ситуацию, когда для автоматического тестирования кода при доставке его в production нам как можно быстрее необходимы копии БД MySQL, максимально приближенные к «боевой» версии, доступные на чтение и на запись.

Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии55

Orchestrator и VIP как HA-решение для кластера MySQL

Время на прочтение7 мин
Количество просмотров7.4K
В Ситимобил мы используем базу данных MySQL в качестве основного хранилища постоянных данных. У нас есть несколько кластеров баз данных под различные сервисы и цели.

Постоянная доступность мастера является критическим показателем работоспособности всей системы и ее отдельных частей. Автоматическое восстановление кластера в случае отказа мастера сильно снижает время реагирования на инцидент и время простоя системы. В этой статье я рассмотрю схему обеспечения высокой доступности (HA) кластера MySQL на основе MySQL Orchestrator и виртуальных IP адресов (VIP).


Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии41

Как мы обеспечивали рост Ситимобила

Время на прочтение7 мин
Количество просмотров12K
image

Меня зовут Иван, я руководитель серверной разработки в Ситимобил. Сегодня я расскажу о том, что собой представляет эта самая серверная разработка, с какими проблемами мы сталкивались и как планируем развиваться.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+38
Комментарии16

Как мы фрод из избы выносили

Время на прочтение6 мин
Количество просмотров8K

Меня зовут Никита, я backend-разработчик из команды антифрода в Ситимобил. Сегодня я поделюсь с вами историей о том, как мы выносили наш сервис из монолита в отдельный сервис, как вообще пришли к этому решению и с какими проблемами столкнулись.

Читать дальше →
Всего голосов 20: ↑18 и ↓2+26
Комментарии15

Тайный покупатель Ситимобила

Время на прочтение3 мин
Количество просмотров4.9K
Привет! Меня зовут Нарек Маркосян и я backend-разработчик в компании «Ситимобил». Хочу рассказать вам о нашем закрытом Телеграм-боте «Тайный покупатель».

Пролог


В Ситимобил никто не носит розовых очков, мы хорошо понимаем, что наш сервис не идеален, поэтому мы всегда работаем над его улучшением. Проблемы клиентов могут быть связаны с приложением, с расчетом цены, но чаще всего — с водителем.

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

По этой причине мы решили разработать инструмент для быстрого реагирования на жалобы, связанные с водителями.
Читать дальше →
Всего голосов 38: ↑13 и ↓25-7
Комментарии13

Гибкие процессы в IT команде

Время на прочтение4 мин
Количество просмотров7.4K

Всем привет, меня зовут Алексей Федоров, я тимлид команды финансов в Ситимобил. В этой статье я хочу поделиться тем, как устроен процесс гибкой разработки в нашей команде.

Читать дальше →
Всего голосов 23: ↑19 и ↓4+26
Комментарии18