Реализация бессерверного бэкенда мобильного...

36
Реализация бессерверного бэкенда на базе AWS Василий Сочинский, Upmind Кирилл Потехин, Upmind

Transcript of Реализация бессерверного бэкенда мобильного...

Реализация бессерверного бэкенда на базе AWS

Василий Сочинский, Upmind

Кирилл Потехин, Upmind

О чём мы будем рассказывать?

• Тенденции в разработке бэкенда приложений

• Реализация бессерверного бэкенда мобильного приложения на базе AWS

• Наш опыт перехода от существующего бэкенда к рассматриваемому решению

• Разработка логики приложения

• Администрирование

• Отказоустойчивость

• Масштабирование

• Безопасность

• Разработка логики приложения

Mobile vs Backend

Mobile vs Backend

• Разработка логики приложения

Идеальный бэкенд

• Удобный для разработки

• Простой в администрировании

• Быстро масштабируемый

• Надёжный и безопасный

• Дешёвый

Дата-центр AWS EC2 Контейнеры AWS Lambda

Немного истории

Функции Данные

Что такое приложение?

События инициируютвзаимодействие

Social blogging app

Персонализированная лента постов

Создание постов с медиа-контентом

Аналитика и рекомендательная система

Персонализированная лента постов

• Авторизовать пользователя

• Достать из БД рекомендованные ему посты

• Вернуть результат клиенту

AWS Cognito

• Авторизация пользователей

• Поддержка гостевого доступа

• Синхронизация данных между устройствами

AWS Lambda• Требуется только загрузить код функции

• HTTP-запросы, таймеры и другие виды триггеров

• Администрирование железа и ПО осуществляет AWS

• Автоматическое масштабирование

• Оплата только за фактическую работу функций

AWS DynamoDB

• Облачная NoSQL база данных

• Поддержка триггеров

• Взаимодействие осуществляется через SDK

• Оплата за количество операций в секунду и объём данных

Архитектура взаимодействия

{Получение доступа к AWS

{

{

Создание клиента для работы с данными

Получение и записьданных пользователя

{

{

Сохранение пользователяв DynamoDB

Получение пользователяиз DynamoDB

{Права на доступк DynamoDB

{Права на доступк Соgnito

{Права на доступк Lambda

Social blogging app

Персонализированная лента постов

Создание постов с медиа-контентом

Аналитика и рекомендательная система

AWS API Gateway

• Кэширование результата запросов

• Генерация SDK для клиентов (iOS, Android, Javascript)

• Организация версионности и окружений API

• Интеграция с CDN

• Поддержка кастомной аутентификации

Архитектура взаимодействия

Social blogging app

Персонализированная лента постов

Создание постов с медиа-контентом

Аналитика и рекомендательная система

Работа с медиа-контентом

• Возможность загружать медиа в посты

• Модерация и обработка загружаемых файлов

• Скорость загрузки и надёжность хранения данных

AWS S3

• Надёжность хранения данных на уровне 99,999999999%

• Триггеры на различные типы событий с файлами

• Несколько классов хранилищ данных

Архитектура взаимодействия

{Получение доступа к S3

{

{

Загрузка файла в S3

Отслеживание прогрессазагрузки/скачивания файла

{Скачивание файла из S3

Social blogging app

Персонализированная лента постов

Создание постов с медиа-контентом

Аналитика и рекомендательная система

Аналитика / рекомендации

• Отправка эвентов о действиях пользователя

• Большая пропускная способность

• Обработка эвентов по заданным правилам

• Отправка пушей/писем клиенту

AWS Kinesis

• Приём и обработка потоковых данных

• Высокая пропускная способность (десятки тысяч записей в секунду)

• Оплата за выделенное количество шардов

AWS SNS

• Пуш-уведомления, email, вебхуки

• Гибкий таргетинг

• Встроенная аналитика о доставке сообщений

Архитектура взаимодействия

Social blogging app

Персонализированная лента постов

Создание постов с медиа-контентом

Аналитика и рекомендательная система

Цели достигнуты!

• Удобный для разработки

• Простой в администрировании

• Быстро масштабируемый

• Надёжный и безопасный

• Дешёвый

Цели достигнуты!• Надёжный и безопасный

• Быстро масштабируемый

• Гибкий

• Простой в администрировании“No server is easier to manage than no server”

• Оплата только за реальной использование

• Низкий TTM

Немного о мониторинге и devops• AWS CloudWatch — логи и мониторинг

• Изменение пропускной способности DynamoDB

• Serverless фреймворк — организация процесса разработки

• AWS CloudFormation — создание инфраструктуры с помощью шаблонов

Опыт Upmind

• Сделали полностью бессерверный бэкенд

• Отказались от системных администраторов

• Сэкономили на инфраструктуре ~ 60%

• Увеличилась скорость разработки

• Для некоторых задач использование серверов всё равно эффективней

АвторизацияAWS Cognito

Бизнес-логикаAWS Lambda

АналитикаAWS Kinesis + сторонние сервисы

Медиа-контентAWS S3

Пуш-уведомленияAWS SNS

Хранение данныхAWS DynamoDB

AWS API Gateway

https://www.linkedin.com/in/vsochinskyhttps://www.linkedin.com/in/kpotehin

Спасибо за внимание!