Serverless: что это такое и чем оно отличается
Опубликовано: 2019-01-11Что такое бессерверные вычисления?
Возможно, вы видели всю недавнюю шумиху вокруг бессерверных технологий в сообществе разработчиков. Так что же это такое? Я имею в виду, что код все еще должен работать где-то правильно, так как же он на самом деле безсерверный?
Все это означает, что разработчику и команде эксплуатации не нужно контролировать, управлять или даже заботиться о реальных серверах. Это может показаться очень похожим на облачные вычисления, но есть несколько ключевых отличий. И эти различия в основном заключаются в том, чего вы не знаете по сравнению с другими моделями.
Операционная система неизвестна!?!?
Один из простых способов отличить безсерверные системы от какой-либо формы причудливой облачной оркестровки, такой как Kubernetes, заключается в том, что никто в вашей компании не знает, какую операционную систему использует сервер, на котором выполняется ваш код. Вы можете полагать, что, поскольку вы используете какой-то код .Net, это Windows, или что, поскольку это Ruby, он находится в Linux, но, в конце концов, вы не уверены, и это не имеет никакого значения для вашей разработки.
Вы можете писать код, используя язык, поддерживаемый бессерверным провайдером, и пока вы остаетесь в пределах границ, которые они предоставляют, у вас все в порядке с нулевым знанием того, какая операционная система, версии и т. д. поддерживают это.
И на самом деле, одна из сильных сторон бессерверной архитектуры заключается в том, что в любой момент времени ваше приложение может работать в нескольких разных операционных системах. Все это управляется и управляется вашим провайдером для вас.
Сколько серверов вам нужно для обработки вашего трафика?
Если вы можете ответить на этот вопрос, предполагая что-то вроде X-серверов или нам нужны Y-процессоры, то вы не занимаетесь бессерверной разработкой.
Бессерверный контракт подразумевает, что количество и мощность любых вычислений, необходимых для работы вашего приложения, не будут иметь никакого значения для разработчика. Это не означает, что с вас не взимают плату за это, просто это не то, чем вы или ваша команда будете управлять или заботиться об этом. Хорошие провайдеры автоматически управляют вашим сервисом, чтобы он поддерживал высокую доступность и скорость реагирования.
Модель выставления счетов на основе вычислительных ресурсов, хранилища и сети. Не серверы, процессоры и жесткие диски
Поскольку вы не знаете, какое реальное оборудование работает под вашим приложением, вместе с ним появляется новый способ выставления счетов. Поставщики бессерверных облачных платформ выставляют счета за измеренное использование вычислений, хранилища и сетевой передачи. Это заменяет другие модели выставления счетов, которые взимают плату за ЦП, диски и сетевые подключения. В бессерверном мире они контролируют эту часть, и вы платите только за точное использование ее для вашего приложения.
Это ставит вычисления намного ближе к модели электричества. Ваша энергетическая компания выставляет вам счет за кВтч, который измеряет потребление электроэнергии. Сама энергетика создается углем, атомом, газом, чем угодно. Но биллинг измеряется одинаково независимо от источника.
Простой на нуле
Другое важное изменение в бессерверной версии заключается в том, что когда ваше приложение не используется, оно автоматически масштабируется до нуля. Поскольку вы платите не за ЦП, а за использование вычислений, тогда, когда вы его не используете, ваш счет равен нулю.
Провайдер всегда готов дозировать вычисления по мере необходимости, но вам не нужно платить за сервер, который будет готов, когда он будет использоваться. Это просто расчет оплаты за секунду вычислений, фактически потребляемых при выполнении вашего приложения.
Вы можете думать об этом как о продуктовом магазине. Их работа состоит в том, чтобы в магазине было достаточно молока, чтобы, когда вы, как покупатель, испытываете жажду, вы могли зайти, купить молоко и выпить, а затем уйти. Вы не платите заранее, когда вам понадобится молоко, и вы не платите, если у них есть молоко, которое портится, потому что его никто не купил. Это все, что нужно продуктовому магазину, чтобы убедиться, что у них есть доступный инвентарь, при этом стараясь не затоваривать и не тратить испорченное молоко. Все, что вы знаете, это то, что у них есть то, что вы хотите, и тогда, когда вы этого хотите, а все остальное упрощено без вашей заботы.
Компромиссы для бессерверных
Так что все это упрощение звучит довольно мило. Почему бы человеку не захотеть всего этого: более простого выставления счетов, меньшей операционной ответственности, легкого масштабирования. Как и во всем, здесь есть некоторые компромиссы. Итак, давайте поговорим о них.
Замените привязку к операционной системе привязкой к облачному провайдеру.
В других моделях у вас были различные компромиссы и ограничения из-за операционных систем или серверов, на которых работал ваш код. Теперь, когда бессерверные фреймворки перекладывают эту ответственность на провайдера, вам приходится жить с новыми ограничениями.
На данный момент не существует согласованного набора стандартов, определяющих ограничения и гарантии между поставщиками услуг. Это означает, что это похоже на то, как было бы сложно в прошлом, например, перенести приложения из Windows в Linux. Теперь вы столкнетесь с этим при попытке перенести свои бессерверные приложения из облака Google в облако Amazon.
Эти компании пока не предоставляют какой-либо общей платформы, позволяющей клиентам легко перемещать между собой бессерверные рабочие нагрузки. И, честно говоря, это не в их интересах делать это прямо сейчас, поскольку они предпочли бы максимально заблокировать вас в своих предложениях. Таким образом, вы должны очень хорошо понимать, что ранние бессерверные предложения имеют много проприетарных камней преткновения, из-за которых вам будет сложно отказаться от них.
Меньше информации о производительности и затратах
Инструменты для погружения в производительность кода очень хорошо зарекомендовали себя для предыдущих моделей программирования. Такие вещи, как определение того, сколько ЦП или ОЗУ использует данная программа, являются обычным делом.
В бессерверной модели оптимизация зависит от того, сколько вычислений, сети и вызовов API использует ваш код. Честно говоря, это связано с процессором и оперативной памятью прошлого. Но по мере того, как они будут абстрагироваться еще больше, это помешает этим инструментам быть столь же полезными.
Я полностью верю, что новые инструменты с открытым исходным кодом для отладки и оптимизации производительности появятся для обслуживания этого рынка. Но они потребуют лучшего понимания того, как провайдеры реализуют бессерверную архитектуру. Это может означать, что поставщики облачных услуг — единственные, кто может дать достаточно глубокое представление, чтобы сделать эти инструменты эффективными. И не в их интересах помочь вам использовать меньше ресурсов, поскольку они выставляют счета за эти ресурсы независимо от того, эффективно вы их использовали или нет.
Долго работающие приложения — не лучшее место
Чтобы получить всю гибкость, которую обеспечивает бессерверная версия, обычно разработчик приложения ограничивается временными ограничениями на эти функции как на услугу. Это означает, что он оптимизирован для того, чтобы позволить вашему коду отвечать на веб-запрос, в котором у него есть максимум 1 минута для ответа.
Эти фиксированные максимальные сроки помогают провайдеру выполнять данные вам бессерверные обещания. Они ожидают, что смогут перемещать рабочую нагрузку между реальными физическими процессорами и местами по мере необходимости, чтобы предоставить командам разработчиков услугу, которая автоматически масштабируется и восстанавливается после сбоев оборудования. Длительные рабочие нагрузки нарушают это предположение. Фактически, это обычно указывается как одно из требований их предложения. Где код должен завершиться в течение X времени или быть прекращен.
Для таких вещей, как веб-запросы или API мобильных приложений, эти ограничения не имеют большого значения. Но для других вариантов использования, таких как кодирование видео, работа с игровыми серверами в реальном времени или решения для видеоконференций, эти ограничения неосуществимы. Во многих случаях вы можете обойти эти ограничения путем творческого использования бессерверных ресурсов, но обычно вы выбираете решение, которое обойдется вам дороже и будет работать намного медленнее. Облачные провайдеры будут рады помочь вам в этом, так как более широкое использование означает для них больше денег. Поэтому убедитесь, что вы используете бессерверные решения для веб-приложений и систем, где они лучше всего подходят.