Бессерверные вычисления
Serverless Computing
Бессерверные вычисления (англ. serverless computing) — стратегия организации платформенных облачных услуг, при которой облако автоматически и динамически управляет выделением вычислительных ресурсов в зависимости от пользовательской нагрузки. Основная задача такой стратегии — реализация шаблона «функция как услуга», при котором для выполнения каждого запроса (вызова функции) создается отдельный контейнер или виртуальная машина, уничтожающиеся после выполнения.
Содержание |
Главным достоинством бессерверных вычислений является предоставляемая ими возможность развертывания управляемой событиями архитектуры.
В бессерверных вычислениях такие функции, как масштабирование, планирование производительности и обслуживание операций, выполняются автоматически. Обычно этим занимаются провайдеры публичных облаков. Поэтому теоретически разработчики могут посвятить себя только написанию или интеграции кода для решения проблем бизнеса.
Наименование связано с тем, что пользователям в этой стратегии не нужно иметь дело с выделением и настройкой «серверов» (как инфраструктурных единиц — виртуальных машин, контейнеров, так и программных серверов — серверов баз данных, серверов приложений, экземпляров сред выполнения): все настройки и планирование вычислительных ресурсов, необходимые для запуска кода по требованию или по событию, скрыты от пользователей и управляются облаком. Бессерверный код может быть частью приложений, построенных на традиционной архитектуре, например, на микросервисах.
Amazon Web Services считается лидером в этой области. Менее популярны Microsoft Azure и Google Cloud Platform.
Стратегия реализована в основных платформах FaaS: AWS Lambda, Google Cloud Functions, Apache OpenWhisk и основанном на ней сервисе IBM Cloud, Azure Functions в облаке Microsoft, сервисе Fn от Oracle. Кроме того, в конце 2010-х годов стратегия получила распространение в реализациях облачных [СУБД], таковы, например, Microsoft Azure Data Lake (работает в Microsoft Azure и динамически выделяет и высвобождает вычислительные ресурсы, работая с данными в сервисе постоянного хранения), Snowflake (работающая с данными в S3 и создающая вычислительные экземпляры по мере нагрузки), FaunaDB.
Преимущества бессерверных вычислений
Бессерверные вычисления относятся к архитектуре, в которой приложения (или части приложений) выполняются по запросу в специализированных средах. Обычно они располагаются в облаке, хотя бессерверные вычисления также могут работать в локальной среде[1].
Основные потенциальные преимущества бессерверных вычислений заключаются в следующем:
- бессерверные вычисления лишают пользователя необходимости поддерживать полную среду операционной системы для запуска бессерверного кода (отсюда и термин «бессерверный»). Все, что им требуется, только загрузить код, настроить условия, которые инициируют его запуск, и затем остальная работа будет выполняться бессерверной системой;
- применяя облачные бессерверные среды, пользователь платит только за время, когда его код реально работает. Это более выгодно, чем традиционная модель ценообразования для облачных виртуальных машин (ВМ), где он должен постоянно платить за то, чтобы поддерживать виртуальные серверы в рабочем состоянии, даже если они какое-то время простаивают;
- serverless-код запускается очень быстро, что позволяет легко развернуть большее количество экземпляров, если требуется масштабировать определенные задачи. Таким образом, Serverless отлично подходит для ситуаций, где приоритетами являются высокаяпроизводительность или масштабируемость.
В теории преимущества бессерверной системы сводятся к тому, чтобы сделать развертывание приложений более быстрым, гибким, экономичным и масштабируемым.
Ограничения Serverless
К сожалению, Serverless так и не удалось в полной мере раскрыть свой потенциал. Не подлежит сомнениям, что бессерверные модели выполнения могут сделать код более масштабируемым, что упрощает управление ими для пользователя. В некоторых случаях они повышают эффективность затрат. Однако эти преимущества нивелируются рядом ограничений, что снижает значимость этой технологии.
1. Serverless поддерживает только определенные языки программирования
Большинство бессерверных фреймворков позволяют развертывать функции, написанные только на определенных языках. Правда они поддерживают большинство основных языков. Некоторые из них, например AWS Lambda и Azure Functions, также предоставляют т. н. «декораторы» (wrapper function), которые позволяют запускать функции, написанные на неподдерживаемых языках. Однако это влияет на производительность, к тому же для включения функций требуется дополнительная настройка системы.
Отсутствие универсальной прямой поддержки serverless-функций, написанных на любом языке, накладывает существенные ограничения на варианты использования бессерверных вычислений. В итоге при выборе бессерверного варианта развертывания разработчик зависит от наличия кода на требуемом для него языке, но последний может не входить в число поддерживаемых. Еще более усложняет ситуацию тот факт, что бессерверные платформы поддерживают различные наборы языков, что в некоторых случаях затрудняет миграцию между ними.
2. Бессерверные фреймворки каждого производителя обладают собственной спецификой
В подавляющем большинстве бессерверные платформы являются проприетарными, то есть обладают собственной спецификой, которая зависит от производителя. Такая ситуация сложилась, поскольку разработчики уделяли мало внимания созданию стандартов для написания, развертывания и управления функциями, особенно по сравнению с другими облачными технологиями, такими как контейнеры (которые выиграли от разработки и широкого внедрения сильных стандартов, продвигаемых сообществом разработчиков).
Из-за этого конкретные способы создания, развертывания, обновления и мониторинга бессерверных функций для разных платформы — разные. Это ограничение вдобавок с дополнительными затратами на время обучения бессерверным функциям еще на порядок усложняет миграцию на Serverless. Таким образом, если бессерверные вычисления и обладают маневренностью и гибкостью, то пока что лишь в теории.
3. «Холодные» бессерверные функции снижают производительность
Фундаментальным ограничением бессерверных архитектур является то, что запуск «холодных» функций, то есть тех, которые не запускались на протяжении длительного времени, занимает дополнительное время. Время холодного старта может составлять всего несколько секунд, но в высокопроизводительных средах, когда счет идет на миллисекунды — это вечность. Надежного способа обойти эту проблему не существует. Один из них состоит в том, чтобы периодически запускать функции — это гарантирует, что они останутся «теплыми», но вместе с тем это приводит к ненужным затратам и сводит на нет одно из основных преимуществ бессерверной системы — взимать плату только тогда, когда есть действительная необходимость в запуске рабочего кода. Конечно, время запуска функции можно оптимизировать, но этого явно недостаточно. Другими словами, проблемы, связанные с холодным запуском, означают, что высокая производительность, которую предлагают бессерверные вычисления, достижима только при определенных условиях.
4. Вы не можете сделать бессерверное приложение целиком бессерверным
Еще один недостаток бессерверной модели заключается в том, что в большинстве случаев она не позволяет полностью развернуть приложение. Запускать все в бессерверной среде — нецелесообразно или экономически невыгодно, поэтому эта модель предполагает способ запускать в ней определенные части приложения, которым постоянно требуется высокая производительность и значительные вычислительные ресурсы. Serverless не похожа на контейнеры или виртуальные машины, которые предлагают целостные способы развертывания приложения на целевой платформе. Это скорее расширение, которое работает вместе с контейнерами или виртуальными машинами. Можно сказать, что бессерверное решение — это способ дополнить другие типы архитектур приложений. Таким образом, Serverless — не универсальная архитектура, что ограничивает варианты ее применения.
Россия
2024: Почему бессерверная революция в России зашла в тупик - TA мнения
У бессерверных вычислений есть несколько преимуществ, которые сулили архитектуре успешное будущее. В России такие технологии пока не получили широкого признания, и на то есть несколько причин. О них участники рынка рассказали TAdviser в начале сентября 2024 года.
Бессерверные технологии — это облачный инструмент, который позволяет разработчику абстрагироваться от управления и настройки серверов. Ему достаточно зайти на сервис, предоставляющий услуги бессерверных вычислений, вписать код в систему, и она самостоятельно развернет все необходимые компоненты для его работы. Все это происходит в контейнерах, по запросу, и поэтому позволяет очень гибко оплачивать эту услугу. Например, компания создала чат-бот, который используется очень редко. Если он будет работать на бессерверной технологии, то можно платить лишь за единичные его запуски, что сильно экономит деньги по сравнению с долгосрочной арендой инфраструктуры, которая будет простаивать большую часть времени.
По мнению директора по продукту «ТТК.Облако» Андрея Малова, основная проблема вытекает из главного достоинства бессерверных решений: это простая технология, которую можно лишь минимально кастомизировать и, следовательно, она применима только для простых вещей.
Менеджер по продуктам Linx Cloud Станислав Братчиков, говоря о проблемах бессерверных платформ, отнес к ним ограничения по времени выполнения, объему оперативной памяти, мощности процессора и размеру хранения. Также, по словам эксперта, архитектура характеризуется задержкой при холодном старте, когда функция бессерверного приложения вызывается впервые после периода бездействия.
Другая проблема — невозможность полноценно контролировать окружение, в котором запускается код, говорит руководитель экспертно-аналитического отдела производителя общесистемного и прикладного ПО ALMI Partner Елена Куц. Это может сказаться на выборе языков программирования, зависимостей, конфигураций и производительности. Необходимо тщательно изучать документацию облачных провайдеров, а также проводить тестирование и мониторинг производительности приложений с целью оперативного выявления и устранения возможных проблем, добавила она.
Генеральный директор АНО «Национальный центр компетенций по информационным системам управления холдингом» (НЦК ИСУ) Кирилл Семион назвал две причины, которые, по его мнению, являются главными барьерами на пути развития бессерверных вычислений в России: неудобные тарифы и неготовность компаний прогнозировать финансовую модель затрат. По словам эксперта, использование бессерверных технологий - это практика ИТ-гигантов, таких как Microsoft и Oracle, которые покинули российский рынок.
По словам гендиректора Mad Brains Олега Чебулаева, причина тупика бессерверной революции в РФ — это страх участников рынка: они боятся, что сервис в какой-то момент перестанет работать, в том числе из-за санкций, ограничений доступа с российской стороны или по по причине сворачивания проекта в целом. К другим страхам бизнеса Чебулаев отнес повышение цен.
Возьмите «Яндекс»: совсем недавно почты на домене были бесплатные, а теперь нужно платить за каждую, — посетовал глава Mad Brains. |
Распространению бессерверных решений также препятствуют опасения бизнеса по поводу рисков информационной безопасности, полагает руководитель группы разработки продуктов и решений Linx Cloud Евгений Макарьин. Компании не всегда доверяют облачным провайдерам, в инфраструктуре которых должен запускаться программный код, отметил он.
Основатель студии разработки сервисов DNA Team Антон Тарасенко говорит, что при использовании бессервных технологий гораздо сложнее проводить мониторинг приложений, отладочные процедуры, так как традиционных серверных логов или сред выполнения нет. При определенных сценариях они могут даже оказаться дороже классических решений, например, если приложение требует высоких вычислительных ресурсов, считает он.
Многие опрошенные TAdviser эксперты указывают на проблему совместимости разных продуктов. Из-за архитектурных различий ПО различных вендоров бессерверное приложение затруднительно перенести с платформы одного вендора на платформу другого, считает директор по развитию компании «Арбайт» Олег Чумаков.
Вице-президент по стратегическим проектам группы «Борлас» Аркадий Карев при этом выразил уверенность в том, что к 2024 году российский рынок находится в начале развития направления использования инфраструктуры как сервиса (IaaS), а технологии serverless станут следующим шагом в развитии технологии предоставления «железа» в качестве облачного сервиса.
Генеральный директор компании-разработчика CRM-системы «Мегаплан» Сергей Козлов вовсе не согласен с тезисом о провале serverless-революции в России.
Знаю, что у «Яндекса» с бессерверной архитектурой всё хорошо: бери и пользуйся. Такого типа решения хорошо подходят для небольших и средних приложений, у которых нагрузки непредсказуемы и волнообразны, — рассказал он. |
В России есть отечественные облачные платформы, которые предлагают бессерверные решения: это «Яндекс.Облако», «СберКлауд» и др. Однако по функциональности и удобству использования эти продукты могут уступать западным аналогам, что замедляет внедрение технологий на рынке, уверен Станислав Братчиков из Linx Cloud.