Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Построение аналитики мобильного приложения на основе Serverless технологий

Построение аналитики мобильного приложения на основе Serverless технологий

Виталий Давыдов (Alan Turing Institute) @ Moscow Python Meetup 51
"Делать аналитику на стороне клиента бывает долго и неудобно. Часто это требует создания нового релиза. В докладе будет рассмотрена архитектура системы серверной аналитики с использованием Serverless технологий на примере AWS Lambda и других сервисов AWS".
Видео: http://www.moscowpython.ru/meetup/51/mobile-app-analytics/

Moscow Python Meetup
PRO

December 21, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Построение аналитики мобильного
    приложения с использованием
    Serverless технологий
    Виталий Давыдов, Adapty
    1

    View Slide

  2. Идеальный бэкенд
    • Быстрое прототипирование
    • Удобный для разработки
    • Простой в администрировании
    • Быстро масштабируемый
    • Надёжный и безопасный
    • Cost-effective
    2

    View Slide

  3. История бэкэнда
    Дата-центр VM Контейнеры Serverless
    3

    View Slide

  4. Логика работы Serverless
    https://openwhisk.apache.org/
    4

    View Slide

  5. Serverless
    • Сервера есть, просто мы о них не думаем
    • Отсутствие состояния
    • Инфраструктура не требует администрирования
    • Автоматическое масштабирование
    • Оплата только за фактическое использование
    5

    View Slide

  6. Наш кейс: мобильная
    аналитика
    Клиентская Серверная
    • Удобный SDK для
    внешней аналитики
    • Быстрое подключение новых
    систем аналитики
    • Произвольный язык
    программирования
    • Возможность создания своей
    системы аналитики
    • Невозможно быстро фиксить
    • Требует отдельного релиза
    мобильного приложения
    • Работа напрямую с API
    • Нужно написать клиентскую
    очередь событий
    6

    View Slide

  7. Архитектура
    Mobile Application
    Events
    ???
    7

    View Slide

  8. AWS Kinesis
    • Apacha Kafka as a Service
    • Высокая пропускная способность (десятки тысяч записей
    в секунду)
    • Оплата за выделенное количество шардов
    • Есть мобильный SDK для кэширования
    Kinesis
    Producers
    =
    Mobile apps
    Consumers
    =
    Whatever
    8

    View Slide

  9. Архитектура
    Как обрабатывать события?
    9

    View Slide

  10. AWS Lambda
    • Serverless от AWS
    • Требуется только загрузить код функции
    • HTTP-запросы, таймеры, события в сервисах AWS и другие
    виды триггеров
    • Поддержка C#, Java, Javascript, Python
    • Администрирование железа и ПО осуществляет AWS
    • Автоматическое масштабирование
    • Оплата только за фактическую работу функций
    10

    View Slide

  11. Архитектура
    • Фильтрация событий
    • “Сырой” дамп событий в S3
    11

    View Slide

  12. AWS Lambda Python
    Handler
    12

    View Slide

  13. Архитектура
    • Mapping событий
    • Сохранение событий в MongoDB
    • Отправка событий в другие системы аналитики
    13

    View Slide

  14. Архитектура
    • Агрегируем профили пользователей
    • Сохраняем профили в PostgreSQL
    14

    View Slide

  15. Особенности системы
    • Быстро подключается любая внешняя система
    аналитики
    • Быстро заменяемые компоненты
    • Можно писать на любом языке (но не нужно)
    • Библиотеки нужно заливать вместе с логикой
    • Бинарные библиотеки нужно собирать под AWS Linux
    • Лучше деплоить из Docker
    15

    View Slide

  16. Менеджмент Lambda Функций:
    Serverless Framework
    • Менеджмент Serverless функций
    • Единый файл конфигурации
    • Переменные окружения
    • Поддержка AWS, Azure, Google Cloud и IBM
    • Поддержка всех доступных языков
    16

    View Slide

  17. Что еще можно делать на
    Serverless?
    • WSGI приложения (Django, Flask, …)
    • Сайты
    • Telegram ботов
    • MapReduce подобную архитектуру
    17

    View Slide

  18. Для чего Serverless не
    подойдет?
    • CPU/GPU intensive задач
    • При ограниченных ресурсах RAM
    • Очень быстрых ответов (“холодный” старт)
    18

    View Slide

  19. Serverless Митап!
    19
    @serverless_moscow

    View Slide

  20. Спасибо!
    @iwitaly
    Виталий Давыдов
    Serverless чат в Telegram
    @serverless_moscow

    View Slide