Как стать автором
Обновить
37.32
Рейтинг
Mindbox
Автоматизация маркетинга
Сначала показывать
  • Новые
  • Лучшие

Как уменьшить размерность метрик в Prometheus, если вы не DevOps

Блог компании Mindbox DevOps *Kubernetes *
Иногда команда разработки сталкивается с задачей, в которой у неё мало экспертного опыта, и через пробы и ошибки она находит неочевидное решение. Так произошло и с нами, когда понадобилось перенести сбор метрик из Infux в Prometheus. Их итоговая размерность оказалась 1,5 миллиона, и мы решили ее уменьшать. Инфраструктуру по сбору метрик (Prometheus, k8s, деплой через Helm) создавали DevOps-инженеры из другой команды, у которых не было ресурсов для нашей задачи. Поэтому мы заручились их советами, изучили документацию и решили снижать размерность метрик силами разработки.

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

  • как в два шага уменьшить размерность метрик с помощью двух ServiceMonitor,
  • какой есть эталонный способ уменьшить размерность метрик без «костылей»,
  • почему не стоит тратить время на снижение размерности метрик с помощью Pushgateway.
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2.2K
Комментарии 8

Как масштабировать разработку при 400 000 RPM и не надорваться

Блог компании Mindbox Высокая производительность *Управление разработкой *Agile *IT-компании
Если бизнес идет вверх, то запросы и нагрузка на разработку увеличиваются в разы. Рано или поздно каждый управленец сталкивается с выбором из двух крайностей: встать на сторону бизнеса, двигать продукт и демотивировать разработчиков бесконечным техдолгом или дать свободу разработке и потерять контроль над задачами бизнеса.

Mindbox 15 лет развивает B2B-продукт и вырос с 3 до 70 человек в разработке. Мы тестировали разные подходы к масштабированию и готовы поделиться опытом, чтобы вам не пришлось наступать на те же грабли. Ниже расскажу, как попробовали полную автономию команд и централизацию, роняли надежность, демотивировали команды, как в результате с этим справились и выработали свою систему масштабирования.

По материалам выступления на Agile Days 2021:


Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.2K
Комментарии 2

Стоит ли переходить с Powershell DSC на Ansible и как это сделать

Блог компании Mindbox IT-инфраструктура *DevOps *
Об IaC под Windows пишут мало, потому что DevOps/SRE ассоциируется в основном c Linux и Kubernetes. Мы решили исправить эту ситуацию и сравнить инструменты, которыми можно управлять IaC на базе Windows. Статья будет полезна разработчикам, которые работают с Windows-инфраструктурой и выбирают способы управления, и тем, кто уже внедрил Powershell DSC или Ansible, но сомневается в своем решении. Ниже поделимся опытом и расскажем:
  • как устроен Powershell DSC и чем он отличается от Ansible при управлении инфраструктурой на Windows;
  • почему мы перешли на Ansible;
  • с какими проблемами столкнулись и как их решали;
  • как соотносятся ожидания и реальность после перехода на Ansible;
  • кому стоит выбрать Powershell DSC, а кому — Ansible.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 2.8K
Комментарии 5

Как с помощью нейросети определить лучшую дату отправки email и повысить доход рассылки в 8,5 раз

Блог компании Mindbox Python *Big Data *Машинное обучение *Natural Language Processing *
Чтобы email-рассылка не затерялась во входящих, а клиенты чаще открывали письма и покупали, важно угадать правильное время отправки. С помощью нейросети мы проанализировали поведение клиентов и спрогнозировали дату отправки следующего email, чтобы порекомендовать клиенту товары в то время, когда он захочет их купить. Протестировали в зоомагазинах на рассылках с предложением повторной покупки и оценили результат с помощью AB-тестов. Получили следующие результаты:

в 23 раза
больше целевых отправок email с помощью нейросети по сравнению с триггером

в 8,5 раз
увеличился доход от email-рассылки по атрибуции last click

в 2 раза
уменьшился процент отписок

в 17 раз
выросло число открытий в абсолютном значении


Ниже поделимся опытом и расскажем:

  • почему решили использовать LSTM-модель нейросети для предсказания даты отправки email вместо алгоритма градиентного бустинга;
  • как устроена LSTM;
  • какие данные нейросеть использует для обучения;
  • какую архитектуру нейросети использовали и с какими сложностями столкнулись;
  • каких результатов достигли и как их оценивали.
Читать дальше →
Всего голосов 23: ↑12 и ↓11 +1
Просмотры 5.5K
Комментарии 24

Рост 100% в год и 400 тыс. RPM. Эволюция разработки 2018—2020: процессы, люди, техника и планы

Блог компании Mindbox .NET *C# *Agile *DevOps *
Mindbox — два миллиона строк кода b2b бизнес-логики под нагрузкой. Наши продукты: CDP, программа лояльности, персонализация сайта, транзакционные и массовые рассылки — критичные по надежности и скорости работы элементы инфраструктуры бизнеса.

Тринадцать лет мы ищем способы масштабировать разработку, чтобы при росте всё работало надежно и, при этом, быстро выпускались новые фичи. Когда-то важным казалось легко переименовывать колонки в БД. Теперь — пришлось менять всю архитектуру на ходу.

Это — третий ежегодный пост про разработку по итогам черной пятницы — недели максимальной нагрузки. Почему наконец думаем, что мы молодцы; что для этого сделали; почему столкнулись с трудностями и что планируем делать дальше.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 1.7K
Комментарии 8

Data Science в обувном магазине: предсказали поведение клиентов и увеличили конверсию сайта на 16%

Блог компании Mindbox Data Engineering *
Из песочницы
Российский производитель обуви Mario Berluchi автоматизировал маркетинг, внедрил привычные для интернет-магазинов механики, но не остановился на этом и запустил направление Data Science. Теперь магазин с помощью алгоритмов машинного обучения предсказывает действия клиента: что он сделает после добавления товара в корзину — купит или уйдет, а если уйдет, то когда вернется.

Предсказание помогает в нужный момент побуждать клиента к покупке или, наоборот, не трогать его, если он купит и так. В рамках AB-теста механика персонализации сайта на основе предсказания помогла увеличить конверсию интернет-магазина на 16,5% и ARPU на 35,7% относительно контрольной группы.

Азамат Тибилов, директор по маркетингу Mario Berluchi, рассказывает о механике с предсказанием, измерении результатов, истории запуска направления Data Science и делится советами для интернет-магазинов, которые тоже хотят растить выручку за счет полезного и основанного на данных маркетинга.

Mario Berluchi — российский производитель обуви, сумок и аксессуаров с пятью офлайн-магазинами в Москве и онлайн-магазином.

Масштаб. 200 тысяч посетителей сайта в месяц.

ИТ. Сайт на Bitrix, бэк-офис на «1С», платформа клиентских данных Mindbox.

Задача. Повысить выручку за счет работы с накопленными данными.

Результат. Рост конверсии сайта на 16,5% в рамках AB-теста, рост ARPU на 35,7%, снижение доли брошенных корзин на 17,2%.

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 2.4K
Комментарии 17

Открыт набор в Школу разработчиков с перспективой стажировки в Mindbox

Блог компании Mindbox Карьера в IT-индустрии
Школа разработчиков — первый шаг к стажировке в Mindbox. Программа предназначена для студентов 3–4 курса и выпускников технических вузов с базовыми навыками программирования.
Первый набор Школы стартует 6 сентября, курс разбит на 8 занятий по 4–5 часов.

Чтобы записаться, оставьте контактные данные — пришлем тестовое задание, рассчитанное на два часа. Но сначала убедитесь, что обучение в Школе разработчиков Mindbox — это то, что вам нужно. Все подробности — под катом.

Читать дальше →
Всего голосов 19: ↑8 и ↓11 -3
Просмотры 2.3K
Комментарии 7

Черная пятница: взгляд на нагрузку глазами разработчика

Блог компании Mindbox

Прошлой весной мы начали каждую пятницу страдать от массовых рассылок: письма копились в очереди и уходили с большим опозданием. Это были обычные серые пятницы. Уже тогда, за полгода до черной пятницы, стало понятно, что осенью будет непросто. Пришлось масштабироваться. Рассказываю, как всё прошло.

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 2.2K
Комментарии 0

Как мы разрабатываем персональные товарные рекомендации

Блог компании Mindbox Алгоритмы *Машинное обучение *Интернет-маркетинг

image
Наши клиенты-магазины хотят делать крутой маркетинг. Чтобы люди больше покупали, они регулярно шлют им email-рассылки. И каждый раз думают: “Что же написать в письме?”.




Можно писать просто: “Покупайте у нас почаще!”, но это не очень-то работает. Идея получше — вставлять в письмо рекламу товаров. Желательно, рекламу товаров, которые заинтересуют покупателей.


Дальше расскажу о том, как мы с нуля делали настоящие персональные рекомендации.

Читать дальше →
Всего голосов 13: ↑9 и ↓4 +5
Просмотры 5.5K
Комментарии 13

Как вызвать перемены при помощи ретроспективы

Блог компании Mindbox Agile *

Ретроспектива — сложный формат совместной работы группой, содержащий элементы брейншторма (совета), коачинга и обратной связи.


Регулярные ретроспективы вызывающие изменения снизу — важнейший признак организовавшейся живой команды.


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


Для проведения ретроспективы желателен опытный фасилитатор. Особенно это важно в стартующих командах.


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


Цель


Распространено мнение, что цель ретроспективы — улучшить работу. Это упускает ключевую деталь — самостоятельность. Считаю, цель ретроспективы — чтобы команда сама улучшила свою работу.


А значит цель — изменение людей. Т.е. ретроспектива, это чуть-чуть психотерапия. Нужно создать новые привычки, изменить взгляд на что-то, продать всем изменения, а не просто придумать новые инструкции.


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


Таком образом, ретроспектива это, по сути, коачинг команды. Исходя из этого можно переложить на группу стандартный коачинговый подход и посмотреть на структуру встречи через эту призму.

Читать дальше →
Всего голосов 30: ↑21 и ↓9 +12
Просмотры 5.2K
Комментарии 8

Как мы написали еще один алгоритм RFM-анализа

Блог компании Mindbox Алгоритмы *Машинное обучение *Интернет-маркетинг

КДПВ Недавно мы рассказали, почему придумали свой RFM-сегментатор, который помогает сделать RFM-анализ за 20 секунд, и показали, как использовать его результаты в маркетинге.


Теперь рассказываем, как он устроен.


Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 11K
Комментарии 2

RFM-анализ одной кнопкой или как мы облегчили клиентам жизнь

Блог компании Mindbox CRM-системы *Машинное обучение *Интернет-маркетинг

image
С тех пор как в компании Mindbox впервые произнесли Machine Learning, общей целью стала Большая Зеленая Кнопка. Это такая кнопка во весь экран, при нажатии на которую всё работает само и приносит прибыль.


В аналитическом проекте «RFM» цель менее амбициозная — Маленькая зеленая кнопка. Нажимаешь, и база автоматически делится на сегменты, по которым запускается отправка писем (например).




Чтобы добиться цели, мы написали автоматический RFM-сегментатор и разработали специальный отчет, чтобы наглядно представлять результаты.


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

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 7.8K
Комментарии 0

Немного о ретроспективе

Блог компании Mindbox Agile *
Для команды разработки важно регулярно проводить ретроспективу, чтобы постоянно совершенствоваться. Но какой она должна быть?

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

  • на ретро тратили по 2 часа и сильно выматывались
  • обсуждения периодически уходили в затяжные бесполезные споры
  • некоторые мелкие проблемы не успевали решить и постоянно переносили на следующее ретро
  • отдельным членам команды надоедали ретроспективы из-за однообразия

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

Прошлой весной я сходил на Okademy от ScrumTrek. Это обширный курс, включающий в себя много полезного для скрам-мастера, но для меня самым полезным оказалась часть о том, как эффективнее проводить ретроспективы. Хочу рассказать, как это нам помогло.

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

Одних тестов недостаточно, нужна хорошая архитектура

Блог компании Mindbox Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *C# *
Мы все понимаем, что такое автоматические тесты. Мы разрабатываем софт, и хотим, чтобы он решал какие-то проблемы пользователей. Написав тест, мы убеждаемся, что конкретная проблема решается конкретным участком кода. Потом требования изменяются, мы меняем тесты и меняем код соответствующим новым требованиям образом. Но это не всегда спасает. Кроме высокого тестового покрытия наш код должен быть спроектирован таким образом, чтобы защищать разработчика от ошибок ещё при его написании.

В статье я постарался описать одну из проблем, которую может решить хорошая архитектура: связанные участки кода могут разъезжаться между собой, это может приводить к багам, и тесты тут не спасут. А грамотный дизайн может помочь.
Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 8.9K
Комментарии 24

Проектирование и разработка шаблонного движка на C# и ANTLR

Блог компании Mindbox .NET *C# *Верстка писем *

Предыстория


Уже много лет мы помогаем нашим клиентам отправлять потребителям хорошие, информативные и человеческие письма. В них вместо сухого “Добрый день” мы пишем “Здравствуйте, Никита!”, а вместо “Ваш баланс пополнился” сообщаем “вы получили 25 баллов”. Но маркетологи становятся все изобретательнее, и современное письмо от интернет-магазина должно выглядеть так:


В реальной жизни всего этого на порядок больше в каждом письме


И мы хотим уметь генерировать такие письма автоматически.

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

Про опыт обучения в OKademy

Блог компании Mindbox Управление проектами *Управление персоналом *

Вместо вступления


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

Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры 5.1K
Комментарии 0

Трансляция запросов в SQL с использованием LinqToSql в тестах

Блог компании Mindbox .NET *C# *
Мы уже несколько лет делаем наш продукт автоматизации маркетинга, и пилить фичи с высокой скоростью нам помогает CI, а точнее — большое количество автоматических тестов.

В продукте примерно 700 000 строк кода со всеми кастомизациями, и на это всё мы имеем около 7 000 тестов, и их количество постоянно растёт. За счет них мы не боимся совершать большие рефакторинги, затрагивающие многие части системы. Но, к сожалению, тесты не панацея. Каких-то тестов может не быть, какие-то тесты могут оказаться слишком дорогими, а какие-то ситуации не воспроизводятся в тестовой среде.

Практически каждая транзакция в нашей системе связана с работой с MS SQL с использованием LinqToSql. Да, технология старенькая, но мигрировать с неё нам довольно сложно, и по бизнесу она нас вполне устраивает. Более того, как я уже писал раньше, у нас даже есть свой форк LinqToSql, где мы чуть-чуть чиним его баги и добавляем кое-какой функциональности.

Для того, чтобы делать запросы к БД, используя LinqToSql, нужно использовать интерфейс IQueryable. В момент получения Enumerator’а или выполнения Execute у QueryProvider’а построенное дерево выражений с помощью Extension-методов к IQueryable транслируется в SQL, который и выполняется на SQL Server.

Так как наша бизнес-логика сильно завязана на сущностях в базе данных, наши тесты много работают с базой данных. Однако в 95% тестов мы не используем реальную базу, так как это очень дорого по времени, а довольствуемся InMemoryDatabase. Она является частью нашей тестовой инфраструктуры, о которой можно написать отдельную статью, и на самом деле представляет из себя просто Dictionary<Type, List> для каждого существующего типа сущности. В тестах наш UnitOfWork прозрачно работает с такой базой, давая доступ к EnumerableQueryable, который просто получить из любого IEnumerable, вызвав у него AsQueryable().

Покажу пример теста для понимания происходящего:
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 4.5K
Комментарии 1

Как оценивать большие задачи

Блог компании Mindbox Agile *
Существует множество способов оценить пользовательские истории. Мы используем собственную методологию, чтобы оценить и проработать задачи перед тем, как писать код. Как мы до этого дошли и почему наш подход лучше, чем Planing Poker, читайте под катом.

image
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 22K
Комментарии 19

Webpack в Visual Studio для больших солюшенов

Блог компании Mindbox JavaScript *Visual Studio *

КПДВ У нас в солюшене 51 проект. В 10 из них используется TypeScript. Объем минимизированного JavaScript-кода ~1 MB. TypeScript-код одних проектов зависит от кода других проектов. Для многих React-компонентов используются глобальные переменные.


Все вместе это приводит к долгим часам отладки front-end кода. Чтобы упростить себе жизнь, мы внедрили Webpack. А по пути отловили грабли.


TL;DR


  1. Устанавливаем node 7 + npm
  2. Выполняем в консоли npm i -g webpack typescript
  3. Устанавливаем Webpack Task Runner
  4. Добавляем webpack.config.js
    в папку "основного" проекта
  5. Добавляем webpack.config.part.js
    в папку каждого зависимого проекта
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 12K
Комментарии 11

Как мы перестали бояться тикетов на UI

Блог компании Mindbox JavaScript *ASP *C# *ReactJS *
Всем привет.
Прошло уже больше года с тех пор, как мы начали использовать ReactJS в разработке. Наконец пришел момент для того, чтобы поделиться тем, насколько счастливее стала наша компания. В статье я собираюсь рассказать о причинах, которые побудили нас использовать эту библиотеку и о том, как мы это делаем.

Зачем всё это


Мы — маленькая компания, наш штат составляет порядка 50 человек, 20 из которых разработчики. Сейчас у нас 4 команды разработки, в каждой из которых сидит по 5 fullstack разработчика. Но одно дело называть себя fullstack-разработчиком, а другое — действительно хорошо разбираться в тонкостях работы SQL Server'а, ASP.NET, разработке на C#, OOP, DDD, знать HTML, CSS, JS и уметь этим всем разумно пользоваться. Конечно каждый разработчик тяготеет к чему-то своему, но все мы, так или иначе, специалисты именно в разработке на .NET и 90% кода мы пишем на C#.
Наш продукт — система автоматизации маркетинга, — подразумевает большой объем настроек для каждого конкретного клиента. Для того, чтобы наши менеджеры могли заниматься настройкой продукта под клиентов, есть административный сайт, в котором можно заводить рассылки, создавать триггеры и другие механики, кастомизировать сервисы и многое другое. Этот административный сайт содержит много различного нетривиального UI'а, и чем более тонкие моменты мы даём настраивать, чем большее количество фич мы выпускаем в продакшн, тем более интересным UI становится.
Читать дальше →
Всего голосов 27: ↑21 и ↓6 +15
Просмотры 17K
Комментарии 28
1

Информация

Местоположение
Россия
Сайт
www.mindbox.ru
Численность
101–200 человек
Дата регистрации