Бессерверный бэкенд на базе aws (РИТ2016)
TRANSCRIPT
Реализация бессерверного бэкенда на базе AWS
Василий Сочинский, Upmind
Кирилл Потехин, Upmind
О чём мы будем рассказывать?
• Тенденции в разработке бэкенда приложений
• Реализация бессерверного бэкенда мобильного приложения на базе AWS
• Наш опыт перехода от существующего бэкенда к рассматриваемому решению
• Разработка логики приложения
• Администрирование
• Отказоустойчивость
• Масштабирование
• Безопасность
• Разработка логики приложения
Mobile vs Backend
Mobile vs Backend
• Разработка логики приложения
Идеальный бэкенд• Удобный для разработки
• Простой в администрировании
• Быстро масштабируемый
• Надёжный и безопасный
• Дешёвый
Дата-центр AWS EC2 Контейнеры AWS Lambda
Немного истории
Функции Данные
Что такое приложение?
События инициируютвзаимодействие
Social blogging app
Персонализированная лента постов
Создание постов с медиа-контентом
Аналитика и рекомендательная система
Персонализированная лента постов
• Авторизовать пользователя
• Достать из БД рекомендованные ему посты
• Вернуть результат клиенту
AWS Cognito
• Авторизация пользователей
• Поддержка гостевого доступа
• Синхронизация данных между устройствами
AWS Lambda• Требуется только загрузить код функции
• HTTP-запросы, таймеры и другие виды триггеров
• Поддержка Java, Javascript и Python
• Администрирование железа и ПО осуществляет 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/vsochinsky https://www.linkedin.com/in/kpotehin
Спасибо за внимание!