Открыть список
Как стать автором
Обновить
43.4
Рейтинг
ManyChat
Будущее мессенджер-маркетинга
Сначала показывать
  • Новые
  • Лучшие

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

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

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

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


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

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

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

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

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



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

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

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

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

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

REACT + JEST = TDD ❤️

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

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

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


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

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

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

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



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

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

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

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

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

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

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

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


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

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

Блог компании ManyChatПрограммированиеNoSQLAPIМикросервисы

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

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

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

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

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

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

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

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

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

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



Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Просмотры262
Комментарии 2
Fullstack developer
от 200 000 ₽ManyChatМосква
PHP Developer (product team)
от 170 000 ₽ManyChatМосква
Frontend Developer
до 150 000 ₽ManyChatМосква
Frontend Developer (React)
от 200 000 ₽ManyChatМосква

На пути к бессерверным базам данных — как и зачем

Блог компании Конференции Олега Бунина (Онтико)Блог компании ManyChatIT-инфраструктураХранилища данныхData Engineering
Всем привет! Меня зовут Голов Николай. Раньше я работал в Авито и шесть лет руководил Data Platform, то есть занимался всеми базами: аналитическими (Vertica, ClickHouse), потоковыми и OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). За это время я разобрался с большим количеством баз данных — самых разных и необычных, и с нестандартными кейсами их использования.

Сейчас я работаю в ManyChat. По сути это стартап — новый, амбициозный и быстро растущий. И когда я только вышел в компанию, возник классический вопрос: «А что сейчас стоит брать молодому стартапу с рынка СУБД и баз данных?».

В этой статье, основанной на моем докладе на онлайн-фестивале РИТ++2020, отвечу на этот вопрос. Видеоверсия доклада доступна на YouTube.



Читать дальше →
Всего голосов 29: ↑28 и ↓1 +27
Просмотры13.7K
Комментарии 91

15 базовых советов по Git для эффективной работы каждый день

Блог компании ManyChatGitСистемы управления версиями
🔥 Технотекст 2020 🔥 Технотекст 2020
Tutorial

Привет, меня зовут Сергеев Сергей aka gurugray. Сейчас я «Mentor FrontEnd Community» в компании ManyChat. Вы могли видеть мои лекции по релизному циклу и регламенту работ с системами контроля версий в Школе Разработки Интерфейсов Яндекса (ШРИ).


Меня часто спрашивают какие life-hacks или best-practices я использую при работе с Git'ом и репозиториями проекта.


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


Читать дальше →
Всего голосов 72: ↑68 и ↓4 +64
Просмотры51.9K
Комментарии 63

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

Блог компании ManyChatPHPПрограммированиеАнализ и проектирование системNoSQL

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

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

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

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


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

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

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

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


@innubis

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

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

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



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

Как раскатывать опасный рефакторинг на прод с миллионом пользователей?

Блог компании ManyChatТестирование IT-системPHPПрограммированиеПроектирование и рефакторинг

Фильм “Аэроплан”, 1980г.

Примерно так я себя чувствовал, когда выливал очередной рефакторинг на прод. Даже если весь код покрыть метриками и логами, протестировать функционал на всех окружениях — это не спасет на 100% от факапов после деплоя.

Первый факап


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

Код интеграций не рефакторился с первой версии и его становилось все сложнее поддерживать. Это начало аффектить наших пользователей — выявлялись старые баги, которые мы боялись править из-за сложности кода. Пришло время что-то сделать с этим. Никаких логических изменений не предполагалось — просто написать тесты, подвигать классы и причесать имена. Конечно, мы протестировали функционал на dev окружении и пошли деплоить.

Через 20 минут пользователи написали, что интеграция не работает. Отвалился функционал отправки данных в Google Sheet — оказалось, что для дебага мы отправляем данные в разных форматах для прода и локального окружения. При рефакторинге мы задели формат для прода.

Интеграцию мы починили, но все же осадочек от веселого пятничного вечера (а вы думали!) остался. На ретроспективе (встрече команды по завершению спринта) мы стали думать, как предотвратить такие ситуации в будущем — нужно улучшить практики ручного тестирования, авто-тестирования, работу с метриками и алярмами, а кроме этого нам пришла идея использовать фича-флаги для тестирования рефакторинга на проде, собственно, об этом и пойдёт речь.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры5.4K
Комментарии 11

Из ошибки в алерт с действиями

Блог компании ManyChatРазработка под iOSРазработка мобильных приложенийSwiftДизайн мобильных приложений
Привет, Хабр! Для пользователя сообщения об ошибке часто выглядят как «Что-то не так, АААА!». Конечно, ему бы хотелось вместо ошибок видеть волшебную ошибку «Починить все». Ну или другие варианты действий. Мы начали активно добавлять себе такие, и я хочу рассказать про то, как вы можете это сделать.



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

Давайте сразу сформулируем, что мы будем делать:

  • Добавим типу Error функциональности
  • Превратим ошибки в понятные для пользователя алерты
  • Выведем в интерфейс возможные дальнейшие действия и обработаем их нажатия

И все это будет на Swift:)
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры5.2K
Комментарии 3

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

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


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

Эволюция обработки вебхуков Facebook: с нуля до 25 000 в секунду

Блог компании Конференции Олега Бунина (Онтико)Блог компании ManyChatВысокая производительностьPHPFacebook API
Скорее всего, рассказывать, что такое вебхуки (webhooks) — никому не нужно. Но на всякий случай: вебхуки — это механизм оповещения о событиях во внешней системе. Например, о покупке в интернет-магазине через онлайн-кассу, отправке кода в GitHub-репозиторий или действиях пользователей в чатах. В типичном API нужно постоянно опрашивать сервер, написал ли пользователь что-нибудь в чате. С помощью механизма вебхуков можно «подписаться» на оповещения, и сервер сам отправит HTTP-запрос, когда произойдет событие. Это удобнее и быстрее, чем постоянно запрашивать новые данные на сервере.



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

Основная масса сообщений отправляется через Facebook Messenger. У него есть особенность — медленный API. Когда клиент пишет сообщение, чтобы заказать пиццу, Facebook отправляет в ManyChat вебхук. Платформа его обрабатывает, отправляет запрос обратно и пользователь получает сообщение. Из-за медленного API некоторые запросы идут несколько секунд. Но когда платформа долго не отвечает, бизнес теряет клиента, а Facebook может отключить приложение от вебхуков.

Поэтому обработка вебхуков — это одна из главных инженерных задач платформы. Чтобы решить проблему, в ManyChat за три года работы несколько раз меняли архитектуру обработки с простого контроллера в Yii до распределенной системы с «Галактиками». Подробнее об этом под катом расскажет Дмитрий Кушников (cancellarius).
Читать дальше →
Всего голосов 37: ↑34 и ↓3 +31
Просмотры9.7K
Комментарии 12

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

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



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

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

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

Блог компании ManyChatPHPSymfonyАдминистрирование баз данных
Всем привет!

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

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

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



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

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

Блог компании ManyChatУправление разработкойУправление продуктом


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

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

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

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

Информация

Дата основания
Местоположение
Россия
Сайт
manychat.com
Численность
101–200 человек
Дата регистрации
Представитель
Anna Kryukova (Vlasyuk)

Блог на Хабре