Мы сделали новый API, сократили время интеграции в 14 000 раз и сохранили около 300 000$. Кейс People.ai
Я пишу код уже 20 лет и сейчас в качестве Staff Software Engineer занимаюсь вопросами API в People.ai. Кроме того, я учусь на MBA, и это позволяет смотреть на задачи в новом ракурсе.
В этой статье я поделюсь тем, как мы разрабатываем API, на какие грабли мы уже наступили и как собираемся сделать один из лучших API для наших клиентов.
Зачем я на это подписался
В апреле я присоединился к People.ai как технический лидер проекта по развитию API. Это был серьезный вызов для меня по нескольким причинам:
- Я впервые рассматривал стартап как место работы. Многие говорили, что якобы в стартапе придется работать на порядок больше и забыть про все остальное.
- Новая команда, в которой есть только Senior-инженеры (по меркам США).
- Текущий API работает, но не всех устраивает.
- Результат должен быть быстрым и понятным.
People.ai делает продукт на основе машинного обучения (AI — Artificial Intelligence), который анализирует поведенческие данные сотрудников и помогает отделам продаж и маркетологам компаний из рейтинга Fortune 500. Алгоритмы позволяют свести к минимуму ручной труд и подсказывают, когда запустить сделку или перехватить нужного сотрудника. В
Почему это круто и зачем нам все это
Самая популярная в мире CRM Salesforce генерирует более 50% своей выручки через API и является платформой. Сегодня это наиболее успешная и набирающая обороты бизнес-модель. И если у компании есть возможность, то, скорее всего, рано или поздно она перейдет от традиционной модели к тому, чтобы стать платформой. Крупнейшие ІТ-компании мира удачно используют эту модель для быстрой экспансии на новых рынках и регионах. Amazon, Google, Facebook, Airbnb, Apple App Store и Google Play — все это примеры платформ.
Одно из преимуществ платформы — это сетевой эффект, который позволяет кратно расти и благодаря этому снимать высокую маржу. Компании с традиционной моделью производят товары или услуги. Платформа — это экосистема, где производители и потребители встречаются, чтобы обменяться ценностью.
Для примера преимущества платформы перед традиционной pipeline-моделью посмотрим на Airbnb и сеть отелей Marriott. Капитализация Airbnb более чем в два раза выше, чем Marriott. При этом у Airbnb в разы меньше персонала, а для запуска нового региона достаточно локализации и дополнительных мощностей в дата-центре. В случае с Mariott история куда сложнее и дольше, так как в каждом регионе надо строить новую сеть и делать значительные инвестиции.
Немного цифр
Активы Marriott на июнь 2021 года составляют $24 504 000 000, Airbnb — $15 484 810 000.
Операционная деятельность за полгода принесла Marriott $126 000 000, а Airbnb — $1 285 670 000.
Капитализация сети отелей в 2018 году $35 492 300 000, платформы — $89 361 690 000.
Дополнительным стимулом стало желание разобраться, как на самом деле модель платформы работает изнутри и как она развивается. Я уверовал в эту бизнес-модель после курса MBA, который у меня был как раз в начале года. Курс был интересный, и новая работа давала отличную возможность проверить все идеи на практике.
Промежуточный личный итог — я понял, что стартап это моё. Здесь круг и амбициозность решаемых задач несравнимо больше и интереснее, чем в большой корпорации. Работаю я больше — да. Как это сказалось на work-life balance — он стал серьезно лучше, времени хватает на работу, семью и саморазвитие (MBA + Coaching). Мне реально нравиться то, чем я занимаюсь, и это серьезно повышает качество жизни. Моя команда отвечает за все, что касается Public API, а не за пару кнопок и километры интеграций.
People.ai API 101?
Зачем вообще нужен API, если есть сайт и все довольны? Текущим клиентам нравится наш сайт, однако им также нужен удобный API. И вот почему:
- Мы не видим всех данных клиента. Огромное количество информации хранится на стороне заказчика. Анализ этих данных вместе с нашими позволит делать более глубокую аналитику. API отлично для этого подходит.
- People.ai растет, сейчас мы расширяем наш фокус с Tech на другие домены. При этом компании часто хотят видеть данные у них в системе. Использование API серьезно сокращает время на адаптацию и получение ценности.
- Партнёрские интеграции — это еще один канал роста, без API этот путь закрыт.
- Наши клиенты работают с новыми инструментами, например мессенджерами и разнообразными приложениями. С API интеграция будет проходить на порядок быстрее, особенно если сделать возможность автоматизации через платформы типа Zapper, Tray.io, Informatica.
Задача нашей Extensibility группы — сделать так, чтобы клиенты смогли получить ценность от API как можно быстрее. Одно из наиболее эффективных решений этой задачи — помочь команде бизнес-аналитиков на стороне клиента с анализом данных и получением новых инсайтов для бизнеса.
На интеграцию с нашим API обычно уходит
Семь недель — а почему так долго? На самом деле, сама интеграция занимает
Вариантов использования API масса, главное решить, на чем сконцентрироваться в первую очередь? People.ai — это стартап, и делать все и сразу не наш путь. Нам важно сконцентрироваться на самом важном, чтобы получить максимальный результат при минимальных затратах. Поэтому мы решили взять задачу, которая позволит клиентам максимально быстро получить ценность от интеграции с нами. Для этого мы с первого дня дали возможность бизнес-аналитикам клиента использовать данные People.ai.
Чего удалось достичь за четыре месяца:
- Сократить время интеграции в 14 100 раз — с семи недель до трех минут.
- Упростить архитектуру — теперь у нас будет один API вместо двух.
- Выписать «пенсионное» удостоверение инициативе, которая серьезно ограничивала масштабирование и съедала около $250 000 в год.
- Заложить прочный фундамент для будущего роста.
Как мы это сделали
Первое приближение
Сначала мы четко отвечаем на вопросы «Зачем?» и «Для кого?» мы делаем. Определяем нашу ICP (Ideal Customer Persona). По сути, это профиль идеального клиента, то есть компании или клиенты, которым лучше всего подходит наш продукт. ICP — это те, кто получает наибольшую выгоду от использования платформы.
Отвечать на такие вопросы нам помогают регулярные апдейты от Chief Operating Officer (COO), Vice President (VP) и Program Manager (PM), а также реальные встречи с клиентами. Мы четко понимаем, кто наш IСP и почему именно так.
Наш ICP — это бизнес-аналитик, и в переводе на язык требований это звучит как: «Нужен SQL-доступ». Поэтому первый вариант, который мы обсуждали с CTO и VP, был такой: «А давайте дадим клиенту SQL connection к нашей DB (database), и будет нам счастье». Разговор был долгий, но в завершение стало понятно — идея хорошая, но нам не подходит.
Мы не data warehouse, это не наш бизнес, и никогда им не будет. Решение хорошо отработает на начальном этапе, но по мере роста мы «огребем» по полной, особенно в сфере контроля затрат, которые будут стремительно расти, и в вопросах безопасности. Поэтому мы решили строить новый Rest API и индивидуальные connector для популярных BI-платформ (Business Intelligence), таких как Tableau, Power BI. Они позволят совмещать данные из разных источников, проводить глубокий анализ и представлять результаты в наглядной форме. Это именно то, что нужно для аналитиков, а главное — это именно то, с чем они привыкли работать.
Анализ текущего состояния
Мы сделали анализ BI Tools, API конкурентов и API наших потенциальных клиентов. Я освежил знания по Enterprise API, ElasticSearch, GraphQL, поговорил со знакомыми архитекторами и техлидами других проектов.
В какой-то момент стало очевидно, что Rest API наиболее предпочтительный вариант.
— Его очень хорошо знают наши клиенты, поэтому проблемы с интеграцией сведены к минимуму.
— На его базе мы сможем создать индивидуальные коннекторы к BI Tools.
Tableau WDC
Мы решили начать с коннектора для Tableau, так как и мы, и наши бета-пользователи использовали именно его. Однако никто из нашей команды с ним раньше не работал, поэтому понадобился Proof of concept (PoC).
Делая первое приближение по данным (выясняя, что именно нужно BI-аналитикам), мы увязли на несколько недель. Хвала небесам — благодаря активному использованию Design Review мы наткнулись на информацию об опыте других команд. Они рассказали, какие данные интересны клиентам, а какие нет. Нам не пришлось повторять путь, пройденный другими, и тестировать то, что не подходит нашим клиентам.
Мы определили API-схему в формате Open API, загнали все в Postman и получили готовую коллекцию запросов. Там же создали MockServer с фейковыми данными. Сейчас мы предоставляем нашим клиентам доступ к Mock-серверу и коллекции запросов, что серьезно упрощает интеграцию.
Делать юнит-тестирование не будем
Параллельно отдельный инженер решал вопрос с Tableau-коннектором. К моменту наполнения MockServer Tableau-коннектор был практически готов, и дело оставалось за малым — подшаманить схему данных.
По результатам эксперимента стало ясно, что тема рабочая и мы можем ее осуществить.
API, v0
В начале реализации проекта у нас было много вопросов:
- Какой стек технологий использовать?
- Где брать данные, как хранить, как вытягивать?
- Как все это сделать за шесть недель с новой командой, которая ещё и поддерживает существующие проекты?
Первый вопрос мы закрыли достаточно оперативно, честно ответив на вопросы:
- С чем знакома команда?
- Какие технологии используются в компании?
- Что использует рынок для решения подобных задач?
- Как мы будем нанимать новых инженеров?
По результатам анализа победила Java + Spring. Мы впервые решили использовать Java в People.ai.
Как сократить объем работ на 45%
Со вторым пунктом было сложнее, так как на тот момент наша команда еще не так хорошо знала инфраструктуру компаний. Мы исключили все, что не давало мгновенного эффекта, и это сократило работу на 15 %. Решили на заморачиваться насчет выгрузки-загрузки данных и подбора самой базы данных. Иногда достаточно вежливо попросить другие проекты помочь и позволить временно пользоваться их данными. В результате мы получили все, что надо, из двух хранилищ, и это сократило объем труда еще на 30 %.
Дополнительно мы договорились действовать следующим образом:
- Делать юнит-тестирование не будем. Напишем только интеграционные тесты. Вероятность изменения кода высока, поэтому не стоит тратить время на то, что придется переделывать.
- Создаем возможность локального запуска с помощью Docker Compose.
- Пишем код быстро, но не переходя на гавнокод.
- По возможности используем готовые решения:
- Java Spring Boot + MVC + Sleuth;
- Jooq;
- Lombok.
- Обязательное code-review.
Где мы тормозили
Мы сильно споткнулись, решив использовать Spring Data JDBC для Bridge Model multi-tenancy в DB. Multi-tenancy — это отличный вариант для контроля доступа к данным, при котором у каждого клиента есть своя схема. Успеха добиться не удалось даже после самых диких извращений со Spring data. Пришлось переключиться на JOOQ.
Второй удар пришелся от CircleCI c его крайне безопасной моделью запуска Docker. До сих пор вспоминаю выходные в конце квартала, которые я провел в киевском офисе.
Мы закончили работу на неделю позже и не уложились в отведенный срок. OKR не был достигнут.
Однако по итогу демо для всей компании мы увидели восторг сотрудников. Больше всех радовалась команда BI, члены которой тратят очень много ручного труда на конфигурацию BI для клиентов. Параллельно мы решили отказаться от нынешнего API и закрыть внутренний проект, который сжигает порядка 250 000$ в год. С новым API и быстрой интеграцией он попросту не нужен.
Кто все это делает
В нашей команде три инженера, все уровня True Senior Engineer и с серьезным фокусом на продукт. Это, с одной стороны, сильно упрощает коммуникацию, так как все на одной волне. С другой стороны, делает работу реально интересной, так как каждый сфокусирован на ценности продукта, а не модных фишках и сложных задачах.
Также есть Product Manager, которая постоянно на связи. Она ведет несколько проектов, и все удачно. Регулярно ее видим в различных номинациях в компании.
Благодаря распределенной команде мы постоянно в движении. Все, что сделано командой в Киеве днем, я продолжаю по времени Сан-Франциско и наоборот.
Стартап — это совсем другой подход к разработке, в котором четко понимаешь, какое значение имеет то, что ты сделал, где все быстро и синхронно гребут в одном темпе. В People.ai мы на первой линии с клиентами и часто слышим: «Вау, мы этого так давно ждали» или «Мы готовы подождать
Планы
Что нас ждет дальше:
- Не станем злоупотреблять гостеприимством и начнем использовать свой Data Store.
- Откажемся от BI connectors в пользу стандарта oData. Все-таки в долгосрочной перспективе разработка и поддержка BI connectors приносят больше боли и страдания и будут серьезно тормозить нас.
- Добавим GraphQL, для которого мы уже видим серьезный кейс.
- Добавим webhooks, мессенджеры и интеграцию с платформами автоматизации, такими как Zapier и Tray.io.
И по традиции мы всегда рады разделить наш путь и успех с талантливыми разработчиками, которым нравятся амбициозные цели и в которых есть драйв для работы в интересных проектах.
Отдельное спасибо друзьям, которым я регулярно звонил за советом — архитекторам Андрею Курочке и Артему Олешко.
Найкращі коментарі пропустити