Онлайн образование. Serverless вычисления

Содержание

Слайд 2

Serverless вычисления Архитектуры и паттерны проектирования Егор Зуев

Serverless вычисления

Архитектуры и паттерны проектирования

Егор Зуев

Слайд 3

Меня хорошо слышно && видно?

Меня хорошо слышно && видно?

Слайд 4

Содержание Что такое serverless вычисления Виды serverless услуг Примеры Плюсы и минусы serverless решений Кейсы использования

Содержание

Что такое serverless вычисления
Виды serverless услуг
Примеры
Плюсы и минусы serverless решений
Кейсы использования

Слайд 5

Что такое serverless? 01

Что такое serverless?

01

Слайд 6

Модели дистрибуции SAAS (Software-as-a-service): Предоставляет доступ к какому либо приложению. SAAS

Модели дистрибуции

SAAS (Software-as-a-service): Предоставляет доступ к какому либо приложению. SAAS может

разрабатываться на PAAS и IAAS. Примеры: GitHub, Bitrix, Jira, DropBox
PAAS (Platform-as-a-service): Предоставляет доступ к какой-либо платформе. Может быть реализован над IAAS. Примеры: Heroku, AWS LightSail
IAAS (Infrastructure-as-a-service): Предоставляет доступ к инфраструктуре, в которой можно запускать свои сервисы. Примеры: AWS EC2, GCE
*AAS (component-as-a-service): остальные, узко-специализированные типы услуг (DBAAS, FAAS…)
Слайд 7

Зона ответственности

Зона ответственности

Слайд 8

Бессерверные вычисления Бессерверные вычисления - это решение (модель дистрибуции), в котором

Бессерверные вычисления

Бессерверные вычисления - это решение (модель дистрибуции), в котором выполнение

кода / программы полностью управляется облачным провайдером, а не традиционным способом разработки приложений и их развертывания на серверах.
Слайд 9

Виды serverless услуг Functions 02

Виды serverless услуг Functions

02

Слайд 10

Function as a service FAAS – это вид услуги, в которой

Function as a service

FAAS – это вид услуги, в которой вы

можете организовать ваш код в виде функции, а все накладные расходы возьмет на себя провайдер
Слайд 11

За что платим? Pay as you go – платим только за

За что платим?

Pay as you go – платим только за то,

что используем. Отсюда стоимость использования функции вычисляется на основе: времени исполнения функции, ресурсов на выполнение (память, cpu), трафик
Стоимость можно рассчитать в TCO калькуляторе
Слайд 12

Зона ответственности провайдера Масштабируемость – должна быть возможность запускать достаточное кол-во

Зона ответственности провайдера

Масштабируемость – должна быть возможность запускать достаточное кол-во копий

функции (но есть ограничения) для того, чтобы справиться с нагрузкой
Мониторинг – провайдер должен предоставить инструменты мониторинга. Иначе не очевидно, успешно ли отработала функция, и за сколько времени (для расчета стоимости)
Отказоустойчивость – все инфраструктурные задачи ложатся на провайдера. Касательно гарантированной работы нужно смотреть SLA
Слайд 13

Кейсы использования Private REST API – функция, которую могут дергать ваши

Кейсы использования

Private REST API – функция, которую могут дергать ваши сервисы.

Например, это может быть система уведомлений без гарантированной доставки (как PUSH-уведомления)
Batch processing – выполнение отложенной работы. Например, отложенный парсинг файлов (загрузили файл, отправили сообщение в очередь, функция взяла сообщение из очереди, и распарсила файл в БД).
Public REST API* – реализация полностью serverless бэкенда для ваших пользователей. Хороший пример – a cloud guru
Cloud integration – функция может использоваться как элемент интеграции между сервисами. Например, при отправке сообщения в очередь, включается виртуальная машина
Слайд 14

На что стоит обратить внимание Экосистема – что идет вокруг функций

На что стоит обратить внимание

Экосистема – что идет вокруг функций (триггеры,

network, queues, auth, etc.)
Виды стартов – поддержка горячего старта
Поддержка ЯП* – какие яп поддерживаются (не во всех случаях это важно)
Виды функций – как можно реализовать функцию
Слайд 15

Экосистема. Триггеры Триггеры – Это интерфейс, по которому могут запускаться ваши

Экосистема. Триггеры

Триггеры – Это интерфейс, по которому могут запускаться ваши функции

Примеры

триггеров в AWS:
Kinesis
DynamoDB
SQS Application
Load Balancer
Alexa API Gateway
SNS
CloudFormation
CloudWatch Logs / Events
Events S3
Слайд 16

Экосистема. Networking VPC – возможно ли использовать приватную сеть внутри облака

Экосистема. Networking

VPC – возможно ли использовать приватную сеть внутри облака (для

соединения с БД)
Можно ли использовать приватную сеть внутри кластера (например на Kubernetes). Если да, то можно ли использовать alias?
Слайд 17

Виды стартов Холодный старт – приложение запускается в первый раз. А

Виды стартов

Холодный старт – приложение запускается в первый раз. А значит

ему нужно загрузить все зависимости (если они есть)
Горячий старт – Образуется нагрузка (много обращений к функции). В этом случае, функция отработала, но приложение не вышло – а взяло в обработку следующий запрос. Как следствие – экономия на старте приложения.
Слайд 18

Виды стартов. Горячий старт Проблема конкурентного доступа – допустим, функция запустилась.

Виды стартов. Горячий старт

Проблема конкурентного доступа – допустим, функция запустилась. Вы

работайте с СУБД. Для работы с базой, вам надо открыть сессию. Конкурентное открытие сессии – может вызвать ошибку. Вывод – использовать примитивы синхронизации.
Не патчите библиотеки в runtime
Глобальный контекст- стараемся делать stateless, иначе примитивы синхронизации в помощь
Слайд 19

Поддержка ЯП и виды функций Провайдер может иметь возможность реализовать функции

Поддержка ЯП и виды функций

Провайдер может иметь возможность реализовать функции по

разному – пример GCP Cloud Functions и Cloud Run
Поддержка ЯП – важна, если вы не управляйте runtime
Слайд 20

Ограничения функций Максимальное время исполнения Число одновременно запущенных функций Возможно не

Ограничения функций

Максимальное время исполнения
Число одновременно запущенных функций
Возможно не будет триггера под

ваш кейс
Возможно вас не устроит поддержка VPC
Ваш ЯП может не поддерживаться
Могут не устроить поддерживаемые версии runtime
Может быть сложное администрирование (деплой, замена версий, откат версии)
Слайд 21

Плюсы функций Прозрачное масштабирование Если никто не пользуется вашим сервисам –

Плюсы функций

Прозрачное масштабирование
Если никто не пользуется вашим сервисам – вы не

платите за простой
Настроенный мониторинг
Не надо думать об отказоустойчивости
Можно хорошо распараллелить работу
Слайд 22

Как правильно проектировать? Функции должны загружаться как можно быстрее Функции должны

Как правильно проектировать?

Функции должны загружаться как можно быстрее
Функции должны выполнять одну

единственную функцию – не надо пихать туда вещи, типа сервера на graphql
Функции должны быть ограничены по времени исполнения – функция должна исполняться за одинаковое время (то есть за линейное кол-во времени)
У вас должны быть примерные метрики в голове, прежде чем вы решите использовать функции (то есть время исполнения, среднее кол-во запросов), иначе можно попасть на большой чек, или провал в нагрузке
Слайд 23

Виды serverless услуг Computing 03

Виды serverless услуг Computing

03

Слайд 24

Application as a service AAAS – это вид услуги, в которой

Application as a service

AAAS – это вид услуги, в которой вы

можете задеплоить ваше приложение, без нужды администрирования инфраструктуры
Слайд 25

Реализации GCP app engine AWS beanstalk

Реализации

GCP app engine
AWS beanstalk

Слайд 26

За что платим? Pay as you go – платим только за

За что платим?

Pay as you go – платим только за то,

что используем (включая up time приложения 24/7). Отсюда стоимость использования вычисляется на основе: времени исполнения, ресурсов на выполнение (память, cpu), трафик
Стоимость можно рассчитать в TCO калькуляторе
Слайд 27

Зона ответственности провайдера Масштабируемость – должна быть возможность запускать достаточное кол-во

Зона ответственности провайдера

Масштабируемость – должна быть возможность запускать достаточное кол-во копий

приложения для того, чтобы справиться с нагрузкой
Мониторинг – провайдер должен предоставить инструменты мониторинга. Иначе не очевидно, успешно ли отработала функция, и за сколько времени (для расчета стоимости)
Отказоустойчивость – все инфраструктурные задачи ложатся на провайдера. Касательно гарантированной работы нужно смотреть SLA
Слайд 28

Ограничения Возможно вас не устроит поддержка VPC Ваш ЯП может не

Ограничения

Возможно вас не устроит поддержка VPC
Ваш ЯП может не поддерживаться
Могут не

устроить поддерживаемые версии runtime
Может быть сложное администрирование (деплой, замена версий, откат версии)
Слайд 29

Плюсы Прозрачное масштабирование Настроенный мониторинг (но не во всех случаях) Не

Плюсы

Прозрачное масштабирование
Настроенный мониторинг (но не во всех случаях)
Не надо думать об

отказоустойчивости
Можно быстро развернуть приложение. Хороший кейс – если у вас не сложный проект (например просто интернет магазин, или сайт на wordpress)
Слайд 30

Виды serverless услуг Storage 04

Виды serverless услуг Storage

04

Слайд 31

Database as a service DBAAS – это вид услуги, вы можете

Database as a service

DBAAS – это вид услуги, вы можете арендовать

базу данных у облачного провайдера. Также, некоторые провайдеры предлагают полностью управляемое ими решение (то есть мы даже не указываем, сколько ресурсов выделять на БД).Такие БД и есть serverless
Слайд 32

Реализации GCP BigTable GCP BigQuery GCP FireStore GCP Spanner AWS Dynamo AWS Neptune

Реализации

GCP BigTable
GCP BigQuery
GCP FireStore
GCP Spanner
AWS Dynamo
AWS Neptune

Слайд 33

За что платим? Pay as you go – платим только за

За что платим?

Pay as you go – платим только за то,

что используем. Отсюда стоимость использования функции вычисляется на основе: трафик (входящий / исходящий), размер данных, размер индексов, время исполнения запросов
Стоимость можно рассчитать в TCO калькуляторе
Слайд 34

Когда есть смысл использовать? Эти решения не для маленьких проектов! У

Когда есть смысл использовать?

Эти решения не для маленьких проектов!
У вас много

данных (больше 10TB), и вам надо с ними работать (то есть не архивные данные)
Стоимость поддержки вашей инфраструктуры на стандартных СУБД существенно выше, чем расчет использования cloud native баз данных через TCO
Слайд 35

Опрос https://otus.ru/polls/7761/

Опрос

https://otus.ru/polls/7761/