company_banner
  • Создание Dashboard в Kibana для мониторинга логов

    • Tutorial


    Привет, меня зовут Евгений, я тимлид B2B-направления в Ситимобил. Одной из задач нашей команды является поддержка интеграций по заказу такси от партнеров, и для обеспечения стабильного сервиса мы всегда должны понимать, что происходит в наших микросервисах. И для этого надо постоянно следить за логами.

    В Ситимобил для работы с логами мы используем ELK-стек (ElasticSearch, Logstash, Kibana), и объём приходящих туда данных огромен. Найти в этой массе запросов проблемы, которые могут появиться после деплоя нового кода, довольно сложно. И для их наглядного выявления в Kibana есть раздел Dashboard.

    На Хабре есть довольно много статей с примерами, как настроить ELK-стек для получения и хранения данных, но о создании Dashboard актуальных материалов нет. Поэтому я хочу показать, как в Kibana создавать визуальное представление данных на основе приходящих логов.

    Читать дальше →
    • +11
    • 2,4k
    • 2
  • От эвристики до машинного обучения: поисковые подсказки в Ситимобил



      Всем привет! Меня зовут Михаил Дьячков, и в Ситимобил я занимаюсь машинным обучением. Сегодня я расскажу вам о нашем новом алгоритме формирования поисковых подсказок конечных пунктов назначения. Вы узнаете, как на первый взгляд довольно простая задача превратилась в интересный сценарий, с помощью которого, мы надеемся, у нас получилось немного облегчить жизнь пользователей. Мы продолжаем внимательно следить за работой нового алгоритма и впоследствии будем его «подкручивать», чтобы поддерживать качество ранжирования на высоком уровне. Для всех пользователей мы запустим алгоритм в ближайшие несколько недель, но уже готовы рассказать о долгом пути, который мы прошли от эвристики до алгоритма машинного обучения и выкатки его в эксплуатацию.
      Читать дальше →
    • О переезде с Redis на Redis-cluster


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

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

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

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

        image
        Читать дальше →
        • +11
        • 2,1k
        • 7
      • Энергопотребление Android-приложений

        • Tutorial

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


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


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


        image

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

        • Tutorial


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

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

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

        Изучив различные способы, выработали свой подход к решению такой задачи. Хотелось сделать так, чтобы дизайн-систему и поддержку стилей можно было повторно использовать в других своих проектах. В соответствии с этой идеей разрабатывались компоненты и темы.
        Читать дальше →
      • Хороший ли выбор Svelte для реализации виджета?

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


          CitymobilSvelte

          Читать дальше →
        • Простой service discovery в Prometheus через Consul

            Закон Парето (принцип Парето, принцип 80/20) — «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата».
            Wikipedia

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


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


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


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


            Prometheus + Bash + Consul

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

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

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



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

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


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

                  Откликов много, а релевантных очень мало. В итоге всех кандидатов можно разделить на несколько групп:
                  Читать дальше →
                • Тонкое резервирование файловых систем Linux. Как создавать рабочие копии трехтерабайтной СУБД MySQL за 20 секунд


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

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

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

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


                    Читать дальше →
                  • Как мы обеспечивали рост Ситимобила

                    image

                    Меня зовут Иван, я руководитель серверной разработки в Ситимобил. Сегодня я расскажу о том, что собой представляет эта самая серверная разработка, с какими проблемами мы сталкивались и как планируем развиваться.
                    Читать дальше →
                  • Как мы фрод из избы выносили

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

                      Читать дальше →
                    • Тайный покупатель Ситимобила

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

                      Пролог


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

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

                      По этой причине мы решили разработать инструмент для быстрого реагирования на жалобы, связанные с водителями.
                      Читать дальше →
                    • Гибкие процессы в IT команде

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

                        Читать дальше →

                      Самое читаемое