Бессерверный бэкенд на базе AWS (РИТ2016)

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

Transcript of Бессерверный бэкенд на базе AWS (РИТ2016)

Page 1: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

Page 2: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

Page 3: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

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

Mobile vs Backend

Page 4: Бессерверный бэкенд на базе AWS (РИТ2016)

Mobile vs Backend

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

Page 5: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

• Дешёвый

Page 6: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

Page 7: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

Page 8: Бессерверный бэкенд на базе AWS (РИТ2016)

Social blogging app

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

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

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

Page 9: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

Page 10: Бессерверный бэкенд на базе AWS (РИТ2016)

AWS Cognito

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

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

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

Page 11: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

• Поддержка Java, Javascript и Python

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

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

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

Page 12: Бессерверный бэкенд на базе AWS (РИТ2016)

AWS DynamoDB

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

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

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

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

Page 13: Бессерверный бэкенд на базе AWS (РИТ2016)

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

Page 14: Бессерверный бэкенд на базе AWS (РИТ2016)

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

{

{

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

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

Page 15: Бессерверный бэкенд на базе AWS (РИТ2016)

{

{

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

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

Page 16: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

Page 17: Бессерверный бэкенд на базе AWS (РИТ2016)

Social blogging app

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

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

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

Page 18: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

Page 19: Бессерверный бэкенд на базе AWS (РИТ2016)

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

Page 20: Бессерверный бэкенд на базе AWS (РИТ2016)

Social blogging app

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

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

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

Page 21: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

Page 22: Бессерверный бэкенд на базе AWS (РИТ2016)

AWS S3

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

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

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

Page 23: Бессерверный бэкенд на базе AWS (РИТ2016)

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

Page 24: Бессерверный бэкенд на базе AWS (РИТ2016)

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

{

{

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

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

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

Page 25: Бессерверный бэкенд на базе AWS (РИТ2016)

Social blogging app

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

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

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

Page 26: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

Page 27: Бессерверный бэкенд на базе AWS (РИТ2016)

AWS Kinesis

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

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

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

Page 28: Бессерверный бэкенд на базе AWS (РИТ2016)

AWS SNS

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

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

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

Page 29: Бессерверный бэкенд на базе AWS (РИТ2016)

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

Page 30: Бессерверный бэкенд на базе AWS (РИТ2016)

Social blogging app

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

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

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

Page 31: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

• Дешёвый

Page 32: Бессерверный бэкенд на базе AWS (РИТ2016)

Цели достигнуты!• Надёжный и безопасный• Быстро масштабируемый• Гибкий• Простой в администрировании

“No server is easier to manage than no server”• Оплата только за реальной использование• Низкий TTM

Page 33: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

Page 34: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

Page 35: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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

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

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

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

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

AWS API Gateway

Page 36: Бессерверный бэкенд на базе AWS (РИТ2016)

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

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