{"id":14286,"url":"\/distributions\/14286\/click?bit=1&hash=d1e315456c2550b969eff5276b8894057db7c9f3635d69a38d108a0d3b909097","hash":"d1e315456c2550b969eff5276b8894057db7c9f3635d69a38d108a0d3b909097","title":"\u041f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u043a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0438\u043c\u0438 \u0418\u0422-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u044b","buttonText":"","imageUuid":""}

Облачные решения, Serverless и вот это все. Кому нужно, как работает и что выбрать для разработки в 2020

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

Давайте разбираться, кому и зачем это нужно, как это все работает и какие инструменты сегодня существуют.

Облачные технологии уже стали неотъемлемой частью разработки благодаря Amazon Web Services, Microsoft Azure и Google Cloud Platform. Так что serverless или бессерверная архитектура — логический следующий шаг в развитии облаков, цель которого — ускорение разработки и снижение издержек.

Рынок согласен с этим утверждением — каждый год сегмент serverless-услуг растёт на 75% и при развитии в таком темпе достигнет 7,7 миллиардов долларов к 2021 году. Только в 2018 году технологией стали пользоваться в 1,5 раза чаще: serverless использовали 36% опрошенных представителей компаний, а ещё 22% — экспериментировали на предмет внедрения.

Что такое serverless?

Несмотря на название, концепция не предполагает отказа от серверов как таковых — их мощности всё ещё нужны для работы приложений. Просто физический или выделенный виртуальный сервер с конкретными характеристиками заменяется абстрактным, ресурсы для которого берутся из общего пула гигагерц и мегабайт у провайдера.

Преимущества Serverless

Для работы приложения всегда выделяется ровно столько ресурсов, сколько нужно

Больше не будет ситуации, когда сервер простаивает из-за низкой нагрузки или не справляется в пиковые моменты.

Экономится время на настройку и обслуживание серверов

Больше не надо заниматься подбором сервера, разбираться в настройке, следить за работой, обновлять программы. Теперь управление серверами лежит на провайдере. А разработчик может сконцентрироваться на качестве и защищённости кода.

Меньше затрат

Мало того, что закупка и обслуживание оборудования теперь на провайдере. Теперь и оплата за динамически меняющиеся мощности — тоже динамическая. Нет нагрузки — нет затрат, понадобились дополнительные мощности на пару часов — эти часы и оплачиваете.

Infrastructure as code (IaC)

Усложнение архитектуры приложения и большое количество провайдеров способствует к переходу описания инфраструктуры в коде проекта. Монолитное приложение на классических серверах настраивается 1 раз и работает пока что-то не сломается. Если понадобится обновить один из компонентов приложения, это может быть невозможным без больших затрат и переписи половины или даже всего кода. Всё усложнится, если разработчика, писавшего это приложение, уже нет в компании и кому-то придётся разбираться в коде с нуля.

Serverless-решения зачастую разворачиваются в облаке запуском одной команды вместо конфигурации сервера с нуля, установки библиотек или даже перевозки и коммутации сервера в другом датацентре.

Недостатки Serverless

Привязка к сервису

Возможна ситуация, когда разработав и запустив serverless приложение на одной из платформ, вы не сможете переехать на другую без серьёзной переработки кода из-за различия в архитектуре сервисов и отсутствия поддержки нужных языков. Например, в системах управления баз данных — AWS использует DynamoDB, Azure — CosmosDB. AWS поддерживает язык Go, Google Cloud Platform — нет.

Повышенные расходы в некоторых случаях

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

Ограниченный срок жизни инстанса

Обратная сторона экономии на ресурсах — нельзя сделать так, чтобы для ускорения работы какие-то инстансы работали постоянно.

Задержки из-за постоянных холодных стартов

Продолжение предыдущего недостатка — если процесс завершился к тому моменту, когда он понадобился снова — придётся тратить 1-3 секунды на запуск.

Сложность дебаггинга

Из-за деления на модули, в serverless приложениях сложнее отследить причины ошибок — ведь приходится отслеживать каждый модуль отдельно, а также связи между ними.

Нужен ли переход на serverless именно вам

Хотя у технологии есть свои преимущества, вовсе не значит, что на неё надо переходить всем. Serverless не подойдёт тем, у кого стабильная и постоянная нагрузка на сервера или тем, кто не хочет отказываться от собственных серверов по соображениям контроля и безопасности. Может быть и так, что в вашем случае выгоднее и удобнее продолжить разработку монолитного приложения.

Если вы всё прикинули, подсчитали выгоды от Serverless и решили начать разработку такого приложения или же переписать имеющееся под такую архитектуру — давайте разберёмся, какой провайдер подойдёт для этого лучше всего.

Выбор провайдера для serverless разработки

В 2020 году на рынке представлено около десятка компаний, которые предоставляют облачные сервисы для бессерверной разработки. Из них наибольшими ресурсами и популярностью обладают 3: AWS Lambda от Amazon, Azure Functions от Microsoft и Google Cloud Functions. Есть у них и перспективные конкуренты, например, IBM, Alibaba и несколько других. Но здесь и сейчас для разработки лучше выбрать кого-то из большой тройки.

AWS Lambda

Сервис-пионер для разработки бессерверных приложений появился в 2014 году и за счёт раннего старта занял самую большую долю на рынке. Поддерживает Node.js, Python, Java (Java 8), C #, Go, Visual Basic, F #.

Преимущества

  • Большой выбор стран и регионов. Вы можете выбрать датацентр, который территориально ближе к вашей аудитории, чтобы контент загружался быстрее.

  • Подробная документация и большое сообщество. Если у вас проблема — то с большой долей вероятности кто-то уже столкнулся с ней и предложил решение

  • Лучшая скорость “холодного старта”. Важно для stateless приложений, которые не сохраняют состояние сеанса клиента на сервере
  • Обучение и сертификация

Недостатки

  • Максимум параллельно выполняемых операций ограничен 1000
  • Меньше возможностей для загрузки приложения на хостинг

Azure Functions

Сервис номер 2, появился на рынке в 2016 году. Поддерживает C #, F #, Python, Java, Javascript, Node.js, PHP, Bash, Batch, PowerShell

Преимущества

  • Лучший срок жизни инстанса. Но тут палка о двух концах — чем дольше инстанс занимает ресурсы — тем больше вы платите, но тем быстрее работает приложение в случае повторных обращений.
  • Поддержка большого количества языков
  • Удобная интеграция с сервисами Microsoft, что неудивительно.

Недостатки

  • Нельзя настроить свою виртуальную машину, можно только выбрать из уже сконфигурированных

Google Cloud Functions

Сервис был запущен в 2017 году, но долгое время находился в бета-стадии и отставал от двух других. Ситуация стала меняться в 2018 году, когда Google занялся активным развитием Cloud Functions. Несмотря на это, платформа до сих пор отстаёт от лидеров по количеству дата-центров, поддерживаемых языков и возможностей интеграции с другими продуктами. Поддерживает Node.js, Python.

Преимущества

  • Самая быстрая настройка деплоя. Cвязано это с тем, что Гугл предлагает минимальное количество опций. Такой подход хорош для новичков.
  • Наиболее гибкое ценообразование и лучший бесплатный тариф.
  • Интеграция с клиентскими сервисами Google, например, за несколько минут можно настроить работу c Google Sheets или Google Docs из serverless-функций.

Недостатки

  • Поддержка всего двух языков программирования
  • Максимальное количество функций — 1000 на проект
  • Самое маленькое сообщество
  • Самая дорогая оплата — на момент написания статьи 2000000 запросов и 1536мб памяти обошлись бы в 53 доллара США и 70 центов с учётом оплаты сверх бесплатного пакета.

На чём писать?

Несмотря на относительную молодость технологии serverless, уже есть фреймворки — программные продукты, которые дают программисту готовые базовые модули, на основе которых он дальше занимается разработкой.

Самым продвинутым и популярным на — данный момент является фреймворк Serverless — с таким же названием, как и сама технология. Он написан на Node.js и хорош своей универсальностью:

  • справляется с разными видами задач на уровне специализированных фреймворков
  • превосходит другие фреймворки в задачах за пределами их специализации
  • совместим с AWS, Azure, Google Cloud и другими сервисами
  • подходит для разработки любого масштаба
  • есть бесплатная версия для индивидуальных разработчиков и малых команд, а также платная с разширенными возможностями: интеграцией с другими программами, увеличенным количеством ивентов и возможностью подключить 5 и более разработчиков.

Но мало написать приложение, для его работы нужно нужно создать инфраструктуру и управлять ей. В рамках подхода Infrastructure as Code с задачей её сборки и настройки лучше всего справляется инструмент декларативного управления инфраструктурой Terraform. С помощью него можно описать желаемую конфигурацию инфраструктуры и буквально одной командой сразу создать её, вместо ручного введения команд по отдельности.

Также как и фреймворк Serverless, Terraform совместим с AWS, Azure и Google Cloud.

0
Комментарии
-3 комментариев
Раскрывать всегда