Что такое событийный сервис
События, процессы и сервисы: современный подход к автоматизации бизнес-процессов
Краткое содержание
Для достижения слабой связанности используйте event-driven архитектуру
Подобный совет нередко встречается в дискуссиях по теме микросервисов. В том числе, он популярен и поддерживается в сообществах DDD (Domain-Driven Design). Авторы статьи, будучи потенциальными сторонниками событийных моделей, тем не менее задались вопросом: какие риски может нести бездумное использование событий? Для ответа, были рассмотрены 3 популярные гипотезы:
Примеры ниже — искусственные, но вдохновленные реальным бизнес-процессом обработки заказа в Zalando. Пусть имеется 4 ограниченных контекста (bounded context) в 4 изолированных приложениях (это могут быть как микросервисы, так и представители других архитектур):
Как уменьшить связанность с помощью событий
Предположим, что сервис Checkout должен уведомить пользователя, если товар появился на складе и может быть отгружен немедленно. Конечно, Checkout может напрямую опрашивать сервис Inventory о количестве товара на складе, но это бы сделало Checkout зависимым от Inventory, т.е. усилило бы связанность.
Альтернативный подход: Inventory публикует события об изменении товаров на складе. Checkout слушает события и сохраняет свежие значения в локальном кэше. Эти данные — копия, абсолютная целостность которой вовсе не обязательна. Хотя, определенный уровень событийной целостности, как правило, необходим в распределенных системах.
Еще один сценарий: сквозная функциональность. Пусть необходимо отправлять уведомления для заказчика на определенных шагах выполнения заказа. Мы могли бы добавить к системе полностью автономный сервис Notification, хранящий настройки и контактные данные заказчиков. Получив событие вида «платеж получен» или «заказ отгружен», этот сервис отправлял бы письма, не требуя внесения изменений в другие сервисы. Как мы видим, event-driven архитектура очень гибка, и позволяет легко добавлять новые сервисы, либо расширять старые.
Опасности сложных цепочек передачи событий
Разработчики, внедряющие event-driven архитектуру, часто становятся одержимы: события великолепно уменьшают связанность системы, так давайте же использовать события везде и всегда! Проблемы начинаются, когда команда реализует бизнес-процесс (напр. обработку заказа) через цепь сообщений от одного сервиса к другому. Рассмотрим простейший пример: пусть каждый сервис в цепочке сам решает, что ему делать и какие события отправлять:
Да, это работает. Но, проблема в том, что ни у одного из звеньев цепи нет четкого видения всего процесса. Это делает бизнес-процесс сложным для понимания, и (что еще более важно) сложным для изменения. Учтите также, что в реальном мире бизнес-процессы далеко не так просты, и обычно включают в себя куда больше сервисов. Авторам статьи доводилось видеть сложные микросервисные системы, которые никто уже не понимает в деталях.
А теперь подумаем, как бы нам реализовать резервирование товара на складе ДО проведения платежа:
Необходимо поправить и перевыложить несколько сервисов, чтобы просто изменить последовательность шагов выполнения заказа! Это — антипаттерн для микросервисной архитектуры, поскольку ее ключевой принцип — стремиться к меньшей связанности и большей изолированности. Поэтому подумайте дважды перед использованием событий в подобных «сервис-к-сервису» процессах, особенно там, где ожидается высокая сложность.
Команды, но без необходимости в центральном контроле
Разумнее было бы держать весь бизнес-процесс в отдельном сервисе. Такой сервис-управленец может отправлять команды остальным, например — «провести платеж». При этом, следует избегать знания микросервисов друг о друг о друге. Авторы называют этот паттерн «оркестрация» (orchestration). Например: «Order управляет (orchestrates) сервисами Payment, Inventory и Shipment».
Говоря об оркестрации, многим приходят на ум чудодейственные Enterprise Service Bus (ESB) шины, а также Business Process Modelling (BPM) решения. Эти сложные, проприетарные инструменты обладают плохой репутацией, и неспроста. Зачастую они лишают нас простого, понятного тестирования и легковесной доставки приложений. В то же время, James Lewis и Martin Fowler заложили многие из основ микросервисной архитектуры, предложив использовать «умные конечные точки и простые каналы передачи» (smart endpoints, dumb pipes).
Рисунок выше — не предполагает использования «умной шины». Весь контроль над обработкой заказа возложен на отдельный сервис-управленец Order. Команда вольна реализовать этот сервис как удобно, с использованием любой технологии по вкусу. Таким образом, изменения бизнес-процесса затронут один, и только один микросервис. Более того, сосредоточенный в одном месте бизнес-процесс куда проще понять.
Sam Newman в своей книге Building Microservices рассматривает риск того, что со временем подобный сервис-управленец разрастется в богоподобного монстра. Такой god service соберет в себя всю бизнес-логику, а остальные — выродятся в анемичные сервисы, или того хуже: станут простым CRUD.
Это случилось из-за использования команд в ущерб событийной архитектуре? Или проблема в самой оркестрации? Ни то, ни другое. Давайте взглянем на «smart endpoints» Фаулера. Что определяет «умную» конечную точку? Хороший дизайн API. Для сервиса Payment можно разработать высокоуровневый API, реагирующий на команды вида «вернуть платеж», и публикующий события вида «платеж проведен», «не удалось провести платеж» и т.д. Всю чувствительную информацию (например, о кредитной карте пользователя) следует держать внутри и только внутри микросервиса. В этом случае — микросервис Payment не станет анемичным, даже если им пользуется сервис-управленец или еще кто-то.
Cервисы, работающие долго
Для разработки умных конечных точек и годных клиентских API, следует допустить, что некоторые процессы могут выполняться долго — им же необходимо закулисно решать реальные бизнес-задачи! Предположим, что в случае просроченной кредитной карты — у заказчика должен быть шанс исправить ситуацию (пример навеян GitHub, где бизнес-аккаунт закрывается только через 2 недели после неуплаты). Если наш сервис Payment не собирается заниматься ожиданием действий заказчика, он может делегировать эту задачу своему потребителю — сервису Order.
Однако, если держать подобную функциональность внутри сервиса Payment, архитектура станет чище и согласованнее с идеей «bounded context» из DDD. Само факт ожидания, пока заказчик заведет новую кредитку — означает, что платеж все еще может быть проведен. Как следствие, Payment API становится чистым и простым. Иногда ожидание может составлять 2 недели — вот что мы называем «долгоиграющим» бизнес-процессом!
Хранение состояния сервиса
Долгоиграющие процессы должны где-то хранить свое состояние, такое как «ожидаю платеж» и т.п. Сохранить состояние приложения после перезагрузки — это далеко не новая задача, и вот два типичных ее решения:
По опыту авторов статьи, свои велосипеды для хранения состояния зачастую эволюционируют в самодельные конечные автоматы. Потому что перед написанной системой ставятся новые и новые задачи. Например:
Мы пишем свои конечные автоматы не только из-за синдрома «Not-Invented-Here», но благодаря отрицательной репутации, которую вполне заслужили старомодные средства автоматизации бизнес-процессов. У многих есть болезненный опыт работы с подобными «zero-code» инструментами. Менеджмент покупает технологию в надежде избавиться от разработчиков… чего, конечно же, не происходит. Вместо этого, поддержка тяжеловесной и проприетарной технологии сваливается на плечи IT отдела, где навеки остается чужеродным, отторгаемым элементом.
Легковесные конечные автоматы и workflow engines
Существуют простые и гибкие инструменты, для работы с которыми достаточно написать всего несколько строк кода. Это никакие не «zero-code» решения, а обычные библиотеки разработчика. Они берут на себя работу с конечными автоматами, достаточно быстро окупаются и начинают приносить пользу.
Как правило, подобные инструменты позволяют графически описать workflow с использованием ISO-нотации BPMN, либо с использованием языков на базе JSON, YAML, или DSL на основе Java, Golang и т.п. Важный момент: описание workflow — это и есть реальный код, выполняемый в процессе.
BPMN, и ей подобные — поддерживают достаточно сложные операции: управление временем работы, таймауты, бизнес-транзакции. А еще, это довольно популярная и зрелая нотация, поэтому мы можем говорить о ее пригодности для решения сложных задач.
На рисунке выше — экземпляр workflow ожидает получения события «Goods Fetched»… но время ожидания ограничено. В случае таймаута мы откатываем бизнес-транзакцию, выполнив специальное компенсирующее действие. В этом случае платеж будет возвращен отправителю — конечный автомат запоминает все ранее выполненные действия, что позволяет выполнить весь соответствующий компенсирующий код. Что позволяет конечному автомату управлять бизнес-транзакцией — идея здесь та же, что в паттерне Saga.
Графическая нотация — это и своего рода «живая документация», у которой нет ни шанса устареть и оторваться от реальной системы. А что насчет тестирования? Некоторые библиотеки поддерживают юнит-тесты, в т.ч. для долгоиграющих сценариев. К примеру, Camunda на каждый прогон теста генерирует HTML c сценарием выполнения теста, который легко вставить в обычный CI отчет. В этом случае графическая нотация приобретает еще больший смысл:
Workflow живут внутри сервисов
Выбор и использование конкретного workflow-фреймворка следует проводить децентрализованно, на усмотрение каждой команды разработчиков по отдельности. Конечный автомат — это детали реализации, которые не должны быть видны снаружи сервиса. Нет необходимости в одном и только одном глобальном фреймворке для компании. Конечный автомат — это просто библиотека, упрощающая разработку.
Вдобавок, конечный автомат — это часть бизнес-логики. В зависимости от инструмента, он может как встраиваться в процесс вашего приложения (напр. используя Java, Spring и Camunda), так и отдельным процессом, общаясь через библиотеку-клиента (Zeebe) или REST API (Camunda и Netflix Conductor). Имея под рукой готовый конечный автомат с поддержкой долгоиграющих бизнес-задач, можно сосредоточиться на бизнес-логике и дизайне API, реализовав настоящий smart endpoint.
Покажите код
Не скатываясь в сухую теорию, авторы статьи написали демо-приложение и выложили на GitHub. Там живые примеры изложенных в статье идей.
Код на Java, с использованием только open source библиотек (Spring Boot, Camunda, Apache Kafka).
Выводы
Bernd Rucker. Участвовал и обучал в огромном кол-ве проектов по разработке ПО, связанных с долгоиграющими бизнес-процессами. В том числе: в Zalando (международный продавец одежды) и нескольких телеком-компаниях. Контрибьютор нескольких workflow engines c открытым исходным кодом. Автор книги «Real-Life BPMN», сооснователь Camunda.
Что такое событийный маркетинг и как его применять
Что такое event-маркетинг?
Event маркетинг или событийный маркетинг — это деятельность, связанная с планированием, организацией и проведением мероприятий для продвижения бренда, товаров или услуг.
События могут проводиться офлайн или онлайн, а компании принимают в них участие в качестве приглашённой или принимающей стороны, как спонсоры или участники выставки и не только.
Для событийного маркетинга характерны совершенно разные типы мероприятий:
В первую очередь имеет значение не размах самого события, а его маркетинговый эффект, влияние, оказываемое на аудиторию и репутацию бренда.
Виды мероприятий
Примеры и виды событийного маркетинга разнообразны, и мы готовы привести несколько собственных.
Конференции
Конференцией называется крупное событие, которое организует одна большая организация, а спонсируют её и принимают участие, как правило, другие бренды и компании.
Конференции хорошо работают для продвижения как B2B, так и B2C брендов. Это формат событийного маркетинга с динамичной программой, обширным пулом спикеров, воркшопами и возможностями для нетворкинга.
22 октября 2019 прошла конференция Колдей 2019, организованная совместно Calltouch и Мегафоном. В общей сложности 15 тысяч участников в офлайне и онлайне собрались обсудить бизнес и маркетинг.
Мероприятие привлекло внимание крупнейший отраслевых специалистов, экспертов, СМИ, широкой профессиональной аудитории.
Товарные выставки и экспозиции
Масштабные события, организуемые в рамках определённой индустрии или продуктов, технологий и устройств. Выставки дают компаниям возможности продемонстрировать свой продукт и привлечь потенциальных клиентов.
Такие мероприятия в отличие от конференций, открытых для всех и каждого, привлекают квалифицированных специалистов. Это представители отделов закупок, продавцы, маркетологи — все они рассчитывают на выгодные сделки в ходе выставки.
Семинары
Полезные мероприятия образовательного характера для небольшого числа участников. Они предполагают дискуссии, выступления, глубоко целевой нетворкинг. Круглые столы также похожи на семинары, но чаще их состав ещё уже и представлен людьми одного круга по уровню в иерархии или специализации.
Pop-up магазины
Временные торговые точки, которые дают компаниям возможность реализовать свои товары или услуги в специфическом контексте.
Как правило, такие пространства продаж организуют e-commerce бренды, не имеющие постоянных локаций.
Также выставочные пространства с возможностью продажи товаров организуют цифровые бренды, чтобы продвинуть свою продукцию вживую, дать клиентам опыт взаимодействия и погружения, и это интересный пример событийного маркетинга.
Презентации и вечеринки
Небольшие, иногда закрытые мероприятия, посвящённые запуску нового бизнеса или направления, завершения проекта или этапа развития.
Некоторые компании устраивают ежегодные вечеринки для укрепления отношений с клиентами и партнёрами.
Центральным элементом такого рода событий являются не продукт или бренд, а взаимоотношения сами по себе.
Воркшопы
Воркшопы похожи на круглые столы и семинары. Они сосредоточены на образовательной составляющей и аудитории, нацеленной на приобретение новых навыков. Эти события чаще, чем семинары, открыты для всех желающих, при этом, могут проводиться не только офлайн, но также онлайн.
Являясь не столько рекламным, сколько экспертным мероприятием, воркшоп призван прорабатывать важный вопрос для отрасли и специалистов, что помогает организатору закрепиться в сообществе.
Другие маркетинговые мероприятия
Помимо перечисленного в событийном маркетинге хорошо работают и многие другие форматы:
Преимущества event-маркетинга
Event-маркетинг даёт реальные возможности для продвижения, и это подтверждают зарубежные опросы маркетологов и бизнесменов:
В 2019 компании прорабатывают свои стратегиии событийного маркетинга ещё тщательнее, чем раньше. Это один из немногих способов выделиться на рынке в условиях растущей конкуренции, особенно актуальный для тех компаний, которые не имеют доступа к технологиям.
События генерируют лиды и продажи
Компании инвестируют в event-маркетинг, потому что ивенты привлекают лидов, которые затем закрывают на сделку.
Будучи организатором мероприятия, вы уже на этапе регистрации можете сформировать список потенциальных клиентов, которым интересен продукт, или, как минимум, определить портрет покупателя.
Если вы являетесь участником или спонсором мероприятия, вы можете получить множество лидов через сбор контактов ил демо-предложения.
Учтите, что большинство лидов проще закрывать прямо на самом мероприятии.
Эффективность персонального взаимодействия с клиентом
Множество технологический компаний, включая e-commerce и разработчиков софта, практически не взаимодействуют с клиентами лично. Эту потребность закрывает событийный маркетинг.
Почти 50% маркетологов уверены в том, что мероприятия — это эффективный способ налаживания связей и отношений с потенциальными партнёрами и клиентами.
Привлечение клиентов и партнёров к мероприятиям даёт возможность персональной коммуникации, которые способствуют росту лояльности и построению бренда «с человеческим лицом».
На мероприятиях гораздо проще и эффективнее взаимодействовать, чем по переписке или на звонках.
Event-маркетинг повышает узнаваемость бренда
Проведение мероприятий и участие в них — это самый простой и эффективный способ развития бренда.
Событийный маркетинг привносит физическую идентичность, переводя бренд из чисто цифровых или просто абстрактных на новую ступень коммуникации.
Главное — люди говорят о событиях, это один из лучших способов привлечь к себе внимание. Потребители, клиенты, партнёры, СМИ и ифлюенсеры упоминают вас и делятся впечатлениями.
Event-маркетинг помогает обучать и образовывать аудиторию
Независимо от того, какое именно событие организует компания, в нём всегда имеет место образовательный компонент. Хорошее мероприятие посвящено не только бренду, но и позволяет узнать что-то новое и интересное, актуальное для участников.
Как создать маркетинговый план мероприятия
К конкретике: как вы будете планировать ближайшее мероприятие?
Конечно, можно выполнять разрозненные действия по продвижению мероприятия в рамках ежедневной рабочей рутины. Но событийный маркетинг предполагает составление для предстоящего ивента отдельной маркетинговой стратегии и максимальную её детализацию.
Формализовать ключевые цели и задачи стратегии помогут следующие шаги:
SMART-цели предстоящего мероприятия
SMART — не новый, но хорошо работающий инструмент. Цели по SMART:
Это потребует времени и усилий, зато поможет избежать невнятных, непродуманных, слишком общих целей из серии «привести потенциальных клиентов».
Цели по SMART решают как минимум две задачи:
Пример постановки целей event-маркетинга по SMART: «Увеличить число потенциальных покупателей нового продукта на 100 человек в течение недели после проведения мероприятия».
Не ограничивайте мероприятие одной целью. Добавьте к главной цели дополнительные, например: «укрепление отношений с лояльными клиентами» и «привлечение новых потенциальных клиентов».
Такие цели можно ставить без детализации. Но там, где речь идёт о доходах и больших стратегических выгодах, обязательно используйте формулировки SMART и оценивайте их выполнение при подведении итогов.
Именно бюджет будет решающим фактором при материальном обеспечении предстоящего ивента: от места проведения до приглашенных ведущих, затрат на оборудование, кейтеринг, продвижение.
Программа
Прежде чем двигаться дальше, определитесь с информационным наполнением, который увидят потенциальные клиенты. Событийный маркетинг отводит весомую роль концепции контента, названию, теме и стилю мероприятия.
При работе отталкивайтесь от вопросов, которые помогут понять мотивы клиентов.
Продумайте время и место. Вопросы «Где?» и «Когда?» вы будете слышать от потенциальных посетителей чаще всего. Постарайтесь, чтобы до места было легко добраться и в нём было приятно находиться, а даты не пересекались с другими важными для вашей целевой аудитории событиями.
Наметьте основные пункты программы. Конечно, когда мероприятие планируется за несколько месяцев, трудно составить подробное расписание, но это и не нужно.
Определитесь с ключевыми докладчиками, принципиально важными секциями и хедлайнерами развлекательной программы. Затем составьте на этой основе предварительное расписание мероприятия.
Целевая аудитория
Чтобы определить целевую аудиторию, ответьте на вопросы:
Правильный выбор ЦА поможет подобрать подходящие каналы коммуникации. Ключевые каналы коммуникации в современном мире замкнуты на digital — электронная почта, социальные сети, лендинги — поэтому целесообразно сделать упор на них.
Также полезны площадки для сбора заявок на мероприятие, такие как Timepad.
Контент-план и менеджмент
Продвижение мероприятия включает в себя массу аспектов. Чтобы правильно управлять информацией, необходимо разработать план.
Далеко не все детали мероприятия будут ясны к моменту старта его рекламной кампании. Кампания длится несколько месяцев, а некоторые подробности продолжают уточняться почти до последнего дня. Постарайтесь спланировать подачу контента так, чтобы учесть эту неопределённость.
Также важно определить ответственных за ведение кампании, обновления информации, коммуникацию с участниками.
Продвижение в ходе мероприятия
Маркетинг не должен останавливаться и в ходе мероприятия. Поручите отдельным сотрудникам информирование посетителей о возможностях события, открытых секциях и других участниках.
Вы можете вести трансляцию или выкладывать фото и видео непосредственно с мероприятия. Перечисленное в совокупности представляет собой настоящий маркетинг событий.
Оценка эффективности
В разгар события вы осматриваетесь вокруг, видите довольные лица многочисленных посетителей и облегчённо вздыхаете: всё удалось. Но это только внешнее впечатление.
Организаторы мероприятий в обязательном порядке считают экономику мероприятия. В маркетинге событий всё работает так же, как и в другом продвижении: целесообразно установить ключевые показатели эффективности.
Регистрация и реальная посещаемость
Не все те, кто регистрируется на мероприятие, приходят на него.
При анализе сравните число зарегистрированных со списками посетителей. Позвоните или напишите тем, кто зарегистрировался, но не пришёл.
Изучите график регистрации или покупки билетов) Вы наверняка заметите пики наибольшей покупательской активности и наоборот, провалы. Попробуйте связать эти волны с более широким контекстом: что это были за дни, что происходило. В следующий раз при планировании кампании постарайтесь учесть свои выводы.
Если вы предлагали разные варианты билетов или клиентских пакетов, проанализируйте, какие из них пользовались наибольшим спросом и почему.
Соотношение затрат и доходов
Сколько денег принёс ивент? Этот вопрос уместно задавать, если вы продавали билеты. В данном случае доход — ключевое мерило успеха. Даже если ожидается отложенная выгода, вы не должны быть в большом минусе, и уж точно не стоит ради проведения мероприятия влезать в долги.
Удовлетворённость посетителей
На первый взгляд «удовлетворённость» может показаться слишком субъективным критерием, но не стоит сбрасывать его со счетов. Для сбора информации составьте опросник. Вы можете раздать его в распечатанном виде непосредственно на мероприятии или же разослать по почте после окончания события.
Возможно, увидев несколько опросников, вы сразу поймете тенденцию — в чём именно мероприятие было успешным, а где стоит что-то доработать в будущем.
Упоминания в социальных сетях
Ещё раз о хэштегах: используйте их не только для рекламы, но и для отслеживания сообщений.
Привлечение клиентов
Привлечение потенциальных клиентов и конверсии — одно из главных преимуществ событийного маркетинга, поэтому можно использовать эти параметры в качестве ключевых показателей эффективности.
Отметьте, сколько лидов вы получили благодаря событию и сколько из них конвертировалось в платящих клиентов. Это хороший способ выявить прямую окупаемость мероприятия, а также понять, какая стратегия сработала для сбора и конвертации клиентов.