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

Backend Performance Meetup

Время на прочтение 4 мин
Количество просмотров 887
Блог компании SuperJob Блог компании ManyChat Высокая производительность *PHP *Карьера в IT-индустрии
ManyChat и SuperJob приглашают PHP-разработчиков на митап по производительности бэкенда. Спикеры из Авито, «Ситимобила», ManyChat и SuperJob поделятся своим опытом и расскажут о практиках, которые позволяют создавать качественные и надежные продукты.

Встреча пройдёт 30 сентября в гибридном формате — офлайн в офисах SuperJob и ManyChat, а также онлайн с YouTube-трансляцией.

Подробности программы, ссылка для регистрации и бонус-трек — под катом.


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

Как создавать эффективные продуктовые команды?

Время на прочтение 16 мин
Количество просмотров 12K
Блог компании ManyChat Управление разработкой *Управление продуктом *Управление персоналом *

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

О том, что такое эффективная продуктовая команда, как ее построить и что нужно сделать, чтобы все члены команды были максимально вовлечены в процесс, мы поговорили с экспертами на панельной дискуссии, которая прошла у нас в офисе. Вместе с нами ответы на вопросы искали Роман Абрамов (директор по продукту CarPrice и основатель ProductStar), Михаил Александровский (Founder Dostavista), Анна Бояркина (Head of Product Miro), Илья Красинский (CEO Rick.ai), Микаэл Ян (CEO ManyChat). Подробности под катом.


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

21 ноября, Product Engineering MeetUp: Кто такой продуктовый инженер?

Время на прочтение 3 мин
Количество просмотров 2.5K
Блог компании ManyChat Управление разработкой *Управление продуктом *


Продуктовая компания — понятие, которое набирает все большую популярность в ИТ-сообществе. На митапах обсуждают, как правильно построить процессы и наладить взаимодействие, чтобы команда показывала крутые результаты, спикеры на конференциях рассказывают про улучшение способов коммуникации между разработкой и продакт-менеджерами. Но про «продуктовых инженеров» стали говорить не так давно. И если раньше, говоря про «сильного» инженера вспоминали про HighLoad и знание паттернов, то сегодня всё больше компаний хотят нанимать сильных продуктовых инженеров.

Именно продуктовой разработке мы решили посвятить серию митапов и приглашаем 21 ноября на первый Product Engineering Meetup.

На первой встрече команда ManyChat вместе с приглашенными спикерами из Miro и Avito будет разбираться, кто же такой product engineer, как и зачем инженеру развивать продуктовое мышление, где найти баланс между продуктом и разработкой, какие вообще нужны инженеры на разных стадиях развития команды и какие подходы и инструменты помогают развивать инженеров в команде.

Регистрация доступна по ссылке, а подробности о спикерах и программе мероприятия читайте под катом.
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 0

5 декабря, ManyChat Backend MeetUp

Время на прочтение 3 мин
Количество просмотров 1.3K
Блог компании ManyChat PHP *Symfony *Администрирование баз данных *
Всем привет!

Меня зовут Михаил Мазеин, я — ментор Backend community ManyChat. 5 декабря в нашем офисе пройдёт первый Backend Meetup.

В этот раз мы поговорим не только про разработку на PHP, но и затронем тему использования баз данных.

Начнём с истории про выбор инструментов для вычисления математических формул. Продолжим фундаментальной темой выбора подходящей базы данных. А закончим встречу большим докладом о тюнинге сервера высоконагруженного проекта с помощью тонкой конфигурации nginx и php-fpm на основе данных о движениях запросов вместо постоянного увеличения количества серверов.



Участников ждут доклады от инженеров ManyChat и, конечно, общение. Встречать гостей будем в 18:30, а начнем митап в 19:00. Регистрация доступна по ссылке, а подробная программа мероприятия — под катом.
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 0

Бекендер — психотерапевт: дебаггер для психики

Время на прочтение 5 мин
Количество просмотров 8.7K
Блог компании ManyChat Лайфхаки для гиков Мозг Здоровье
Привет! Меня зовут Максим, последние 17 лет я работаю в ИТ (аналитик, РП, 11 лет бекенда), а еще я получил второе образование психолога в жанре «гештальт-терапия». Хочу рассказать о том, что для меня психотерапия очень похожа на разработку ПО с помощью дебаггера и как эту схожесть можно применять на практике.



В гештальте баги называют «прерываниями контакта». Когда натыкаешься на баг, восприятие реальности искажается и взаимодействие с окружающей средой или людьми начинает сбоить. Таких прерываний насчитывают от пяти и более, смотря как относить и классифицировать.

В этой статье хочу рассказать о двух моих любимых багах (в смысле, что мне они свойственны в большей степени) — это «интроекция» и «проекция». Все подробности под катом.
Читать дальше →
Всего голосов 23: ↑19 и ↓4 +15
Комментарии 22

Обработка миллионов событий в сутки при помощи каскадов очередей

Время на прочтение 8 мин
Количество просмотров 7K
Блог компании ManyChat PHP *Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *
Под капотом нашего продукта крутятся сотни, тысячи, а в некоторых сервисах и миллионы очередей, через которые проходит огромное количество данных. Все это нужно каким-то магическим образом обрабатывать и не застрелиться. В данном посте я расскажу, какие архитектурные подходы мы используем у себя, имея достаточно скромный стэк технологий и не имея маленького дата-центра у себя в «кладовке».


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

Программирование в массы

Время на прочтение 7 мин
Количество просмотров 4.8K
Блог компании ManyChat PHP *Занимательные задачки Программирование *Логические игры
Понимание даже основ программирования может упростить деятельность человека. Помимо очевидных вещей, таких как развитие абстрактного мышления или способность разделять задачу на меньшие части, я предлагаю пойти ещё дальше и воспользоваться основными подходами к разработке. На примере создания классической логической игры, проводя аналогию между визуальным и традиционным программированиями, я и хочу показать, как навыки разработки могут помочь в решении прикладной задачи. Желающих подискутировать на тему или поиграть в «Быков и коров» и выиграть приз — зову под кат.



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

Да кто вообще такой этот продуктовый разработчик?

Время на прочтение 8 мин
Количество просмотров 11K
Блог компании ManyChat Управление разработкой *Управление продуктом *
Сегодня в названиях вакансий всё чаще появляются приставки «продуктовый» — дизайнер, аналитик, разработчик… Компании, придерживающиеся продуктового подхода, ожидают от кандидатов определённого образа мышления, хороших технических скиллов бывает недостаточно. Меня зовут Михаил Мазеин, я тот самый продуктовый разработчик в ManyChat, занимаюсь бекэндом и участвую в процессе найма. Давайте расскажу, как это выглядит изнутри.

Помните известную байку про двух программистов-одногруппников? Один из них был троечником, второй — заядлым отличником. Троечник сделал небольшой прототип, за несколько месяцев открыл компанию, вышел на рынок. А отличник работал над очень продуманной и красивой архитектурой. В итоге через два года у троечника была компания и ниша на рынке, а отличник пришёл к нему на собеседование. История ироничная, но под капотом лежит довольно много правдивых фактов.


@innubis

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

Redis на практических примерах

Время на прочтение 11 мин
Количество просмотров 85K
Блог компании ManyChat PHP *Программирование *Анализ и проектирование систем *NoSQL *

Redis — достаточно популярный инструмент, который из коробки поддерживает большое количество различных типов данных и методов работы с ними. Во многих проектах он используется в качестве кэшируещего слоя, но его возможности намного шире. Мы в ManyChat очень любим Redis и активно используем его в нашем продукте для решения огромного количества задач. Про некоторые интересные кейсы использования этой in-memory key-value базы данных я расскажу на примерах. Надеюсь, вам они будут полезны, и вы сможете применить что-то в своих проектах.

Рассмотрим следующие кейсы:

  • Кэширование данных (да, банально и скучно, но это классный инструмент для кэширования и обойти стороной этот кейс, кажется будет не правильно)
  • Работа с очередями на базе redis
  • Организация блокировок (mutex)
  • Делаем систему rate-limit
  • Pubsub — делаем рассылки сообщений на клиенты

Буду работать с сырыми redis командами, чтобы не завязываться на какую-либо конкретную библиотеку, предоставляющую обертку над этими командами. Код буду писать на PHP с использованием ext-redis, но он здесь для наглядности, использовать представленные подходы можно в связке с любым другим языком программирования.


Читать дальше →
Всего голосов 40: ↑38 и ↓2 +36
Комментарии 14

22 сентября, Онлайн-митап Product Engineering Meetup #2: Культура разработки

Время на прочтение 3 мин
Количество просмотров 497
Блог компании ManyChat Управление разработкой *Управление продуктом *
22 сентября мы проводим онлайн-митап Product Engineering Meetup #2 «Культура разработки в продуктовых компаниях».

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

На предстоящей встрече мы сфокусируемся на культуре разработки в продуктовых компаниях.

Спикеры — инженеры и менеджеры продукта из Badoo, ManyChat, Додо Пицца и Работа.ру. Будем говорить о том, какие практики помогают командам создавать качественные продукты. Обсудим, какие процессы разработки помогают фокусироваться на донесении ценности пользователям и соблюдать сроки. Рассмотрим, как находить компромисс между бизнесом и разработкой и определять границы ответственности.

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

Регистрация доступна по ссылке, а подробности программы читайте под катом.



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

Как жить с ограничениями внешних API на количество запросов

Время на прочтение 7 мин
Количество просмотров 6.2K
Блог компании ManyChat Программирование *NoSQL *API *Микросервисы *

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 3

Как же всё-таки не ошибаться?

Время на прочтение 11 мин
Количество просмотров 4.2K
Блог компании ManyChat Занимательные задачки Профессиональная литература *Читальный зал
Всем привет! Меня зовут Виктория Головнева, я работаю джуниор аналитиком. Как и любой джун, я постоянно прохожу какие-то курсы, читаю статьи и книги по рабочей (и околорабочей) тематике, чтобы прокачивать мой уровень знаний в SQL, статистике, методах визуализации данных и многом другом.

Недавно мне попалась книга «Как не ошибаться. Сила математического мышления», Джордана Элленберга — о ней и пойдёт речь.

В этой статье я хочу привести несколько простых математических/логических задач, которые:

  • Помогут немного размять мозги;
  • Возможно, кому-то помогут узнать новые понятия из математики и статистики.

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

Заинтересовались? Тогда погнали под кат!


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

Настроили мониторинг. Что дальше?

Время на прочтение 8 мин
Количество просмотров 3.1K
Блог компании Конференции Олега Бунина (Онтико) Блог компании ManyChat Управление разработкой *Управление продуктом *
Всем привет! Меня зовут Мазеин Михаил, я занимаюсь бекенд-разработкой в ManyChat.
Одна из моих задач — анализ и повышение качества нашего продукта через системы мониторингов, алармов и сопутствующих процессов. Я на своем опыте убедился в том, что выстроить мониторинг — недостаточно. Сегодня я поделюсь тремя историями из жизни нашей команды: расскажу, как мы искали решения и какие выводы сделали. На мой взгляд, пост может оказаться полезен и разработчикам, и QA-инженерам, и системным администраторам, и тимлидам/техлидам.

Эта статья основана на моем докладе с онлайн-конференции TechLead Conf 2020. Если вам приятнее смотреть видео, оно доступно на YouTube.



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

REACT + JEST = TDD ❤️

Время на прочтение 10 мин
Количество просмотров 11K
Блог компании ManyChat Разработка веб-сайтов *TDD *Тестирование веб-сервисов *ReactJS *
Привет, Хабр! Меня зовут Андрей Хижняк, я фронтенд-разработчик в команде, разрабатывающей App Store внутри ManyChat.

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

От том, что из этого вышло, и будет моя статья, добро пожаловать под кат!


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

Snowflake, Anchor Model, ELT и как с этим жить

Время на прочтение 15 мин
Количество просмотров 10K
Блог компании ManyChat IT-инфраструктура *Хранилища данных *Data Engineering *
Привет! Меня зовут Антон Поляков, и я разрабатываю аналитическое хранилище данных и ELT-процессы в ManyChat. В настоящий момент в мире больших данных существуют несколько основных игроков, на которых обращают внимание при выборе инструментария и подходов к работе аналитических систем. Сегодня я расскажу вам, как мы решили отклониться от скучных классических OLAP-решений в виде Vertica или Exasol и попробовать редкую, но очень привлекательную облачную DWaaS (Data Warehouse as a Service) Snowflake в качестве основы для нашего хранилища.

С самого начала перед нами встал вопрос о выборе инструментов для работы с БД и построении ELT-процессов. Мы не хотели использовать громоздкие и привычные всем готовые решения вроде Airflow или NiFi и пошли по пути тонкой кастомизации. Это был затяжной прыжок в неизвестность, который пока продолжается и вполне успешно.

Под катом я расскажу про архитектуру нашего аналитического хранилища и покажу, каким образом мы производим загрузку, обработку и трансформацию данных.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 8

14 практических советов по использованию Tableau

Время на прочтение 7 мин
Количество просмотров 26K
Блог компании ManyChat SQL *Визуализация данных *
Всем привет, меня зовут Меркурьев Михаил, я продуктовый аналитик в ManyChat. Год назад мы решили использовать Tableau как основной BI инструмент в компании и столкнулись с рядом проблем, касающихся того, что нужно наладить эффективную работу с инструментом для аналитиков, менеджеров продукта и других стейкхолдеров.

В этой статье я собрал мой личный топ советов при использовании Tableau. Многими из них я пользуюсь регулярно, копируя куски кода или освежая в памяти подход. Надеюсь, эта статья будет особенно полезна тем командам, которые только настраивают Tableau — некоторые из приёмов нужно сделать один раз и это сильно упростит жизнь. Я сам очень бы хотел найти такой гайд в начале нашего пути.

Пару слов о структуре. Сначала я расскажу про общие подходы, которые мы выработали для Tableau Server, а потом покажу конкретные хаки, которые, возможно, сделают вашу жизнь лучше. Начнем!



Всего голосов 7: ↑7 и ↓0 +7
Комментарии 1

Кому с Redux жить хорошо

Время на прочтение 20 мин
Количество просмотров 8.9K
Блог компании ManyChat Разработка веб-сайтов *TDD *Тестирование веб-сервисов *ReactJS *
Приветствую всех любителей хорошей инженерки! Меня зовут Евгений Иваха, я фронтенд-разработчик в команде, занимающейся дев-программой в ManyChat. В рамках дев-программы мы разрабатываем инструменты, позволяющие расширять функциональность ManyChat за счет интеграции со сторонними системами.

Существует мнение, что разработка через тестирование, или по канонам Test Driven Development (TDD) для фронтенда не применима. В данной статье я постараюсь развенчать этот миф и покажу, что это не только возможно, но и очень удобно и приятно.

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


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

Как ManyChat на PHP8 переезжал

Время на прочтение 10 мин
Количество просмотров 9.1K
Блог компании ManyChat Разработка веб-сайтов *PHP *Программирование *

Привет, меня зовут Максим, я бэкенд-разработчик в ManyChat. 

Эта статья – о нашем переходе на PHP8. Однажды мы решили немного поисследовать – посмотреть, чего нам будет стоить возможный переход на новую версию, и запланировать эти работы на следующий год, сразу на 8.1. Перспектива переезда тогда вызывала у нас чувства примерно как на КДПВ: от мыслей обо всех тестах и внешних зависимостях было немного неуютно.

Однако в процессе исследования выяснилось, что нельзя просто так взять и остановиться. Одно за другим, и вот мы уже полностью на PHP 8. 

Эта статья – о шагах, из которых складывался переезд, и проблемах, которые мы встретили в процессе. Надеюсь, статья будет полезна для тех, кому ещё только предстоить перейти на PHP 8 – поможет подготовиться хотя бы морально. Для всех остальных (кто уже на PHP 8 или не собирается) – давайте сверимся по ощущениям.

Читать далее
Всего голосов 48: ↑48 и ↓0 +48
Комментарии 4

Как мы написали, а потом переписали онбординг сервис

Время на прочтение 8 мин
Количество просмотров 2.3K
Блог компании ManyChat JavaScript *Проектирование и рефакторинг *

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 6

Как ускорить расчет витрин с помощью материализаций

Время на прочтение 6 мин
Количество просмотров 2.6K
Блог компании ManyChat IT-инфраструктура *Хранилища данных *

Привет! Меня зовут Антон Поляков, и я разрабатываю аналитическое хранилище данных и ELT-процессы в ManyChat

Несколько лет назад мы выбрали Snowflake как сервис для нашей дата-платформы. С ростом объемов данных до сотен миллионов строк (спойлер: а затем и до десятков миллиардов), мы задались вопросом: «Как тратить меньше времени на расчет запросов для ежедневной отчетности?». Идеальным вариантом было использование материализованных представлений, позволяющих обращаться к предварительно вычисленным результатам расчета витрин гораздо быстрее, чем к исходным данным.

Мы могли отдать управление нашим пайплайном таким популярным сегодня инструментам для трансформации данных, как, например, dbt, Matillion или Dataform. Однако, в начале 2020 года ни у одного из них не было возможности тонкой кастомизации под нужды Snowflake и ManyChat. К тому же, нам не хотелось платить за еще один сторонний инструмент. Так, мы приняли решение изобрести собственный велосипед для работы с материализацией данных. Именно об этом я сегодня и расскажу.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 2
1