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

Post on 16-Apr-2017

256 views 4 download

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

Реализация бессерверного бэкенда на базе 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

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