Kubernetes и serverless: точка пересечения

Опубликовано: 16 Апреля, 2023
Kubernetes и serverless: точка пересечения

Облегчение жизни разработчика программного обеспечения — это многомиллиардная индустрия с Kubernetes во главе и безсерверными вариантами от AWS и подобных компаний. Все это сводится к различным подходам к достижению общей цели, которая в конечном итоге заключается в том, чтобы разработчики могли сосредоточиться на своем коде и не беспокоиться об инфраструктуре.

Kubernetes делает это, аккуратно упаковывая все в самодостаточные контейнеры, которые можно запускать где угодно, поэтому разработчикам не нужно беспокоиться о совместимости между различными программными средами. Однако это требует много тяжелой работы в отношении настройки и конфигурации инфраструктуры, поэтому вам нужно знать о контейнерах, Kubernetes и Docker, а также о том, как все это работает, прежде чем начать.

Kubernetes для контроля

По данным CNCF, проблемы с хранением, безопасностью и сетью остаются главными проблемами для тех, кто развертывает свои архитектуры через Kubernetes. Это связано с тем, что при внедрении архитектуры, полностью основанной на контейнерах, возникают значительные препятствия, даже если она организована Kubernetes. Например, масштабирование не является мгновенным, и вам нужно дождаться подключения контейнера к сети. Существуют также значительные проблемы «управления», которые необходимо решить, прежде чем вы начнете работу.

Таким образом, несмотря на то, что Kubernetes — это технология, разработанная для обеспечения «бессерверного опыта» запуска контейнеров, на уровне земли архитектура Kubernetes глубоко учитывает инфраструктуру. Это связано с тем, что в основе инфраструктуры Kubernetes лежит предположение, что контейнеры в Kubernetes живут на машинах, видимых для Kubernetes, поэтому абстрагирование всей инфраструктуры по-прежнему является несбыточной мечтой, если не сказать больше.

Бессерверный для простоты

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

Это связано с тем, что у бессерверных решений тоже есть свои ограничения, и они не имеют ничего общего с функциональностью и контролем, которые предлагает Kubernetes, просто потому, что все это контролируется вашим поставщиком облачных услуг. Он также имеет ограничения на время выполнения и размер файла, поэтому он совершенно непрактичен для больших наборов данных, таких как онлайн-игры и приложения, задержка также является проблемой. Итак, хотя обе эти платформы нацелены на абстрагирование этого уровня инфраструктуры от цепочки поставок программного обеспечения, где именно они пересекаются?

Kubernetes против бессерверного

Изображение 409
Бессерверные архитектуры на данный момент сравнивают с Kubernetes просто потому, что они позволяют масштабировать без сложностей. Однако на этом сходство заканчивается, а контейнеры и безсерверные — это две совершенно разные игры. На сегодняшний день выбор между Kubernetes и бессерверными вариантами не имеет смысла по ряду причин.

Это связано с тем, что, хотя у обоих может быть одна и та же конечная цель, оба сейчас находятся на очень разных стадиях своего «жизненного цикла» и все еще разрабатываются с точки зрения готовности к производству. Таким образом, Kubernetes предлагает преимущества, которых нет у бессерверных альтернатив, и наоборот, ключ к успешному развертыванию прямо сейчас — это знать, как выбрать между Kubernetes и бессерверными решениями, и выяснить, что имеет больше смысла в вашей ситуации.

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

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

Контейнеры имеют свои преимущества помимо очевидной «мобильности», которую они предлагают. Они также помогают избежать привязки к поставщику, что является важным уникальным торговым предложением. Кроме того, контейнеры предоставляют вам весь необходимый контроль над вашей средой и инфраструктурой, чтобы вы могли распределять ресурсы по своему усмотрению.

Бессерверные контейнеры

Изображение 14474
АМС

Есть несколько платформ, которые пытаются абстрагироваться от сложностей, связанных с управлением контейнерами, и AWS Fargate стремится сделать это, предлагая так называемые «бессерверные» контейнеры.

Fargate предлагает ценообразование на основе ресурсов и посекундную тарификацию в дополнение к множеству других функций, таких как поддержка реестра контейнеров, балансировка нагрузки и многое другое. С Fargate вам не нужно выделять, настраивать или масштабировать виртуальные машины в ваших кластерах для запуска контейнеров. Fargate можно использовать с Amazon ECS уже сегодня, и в ближайшее время планируется поддержка Amazon Elastic Container Service для Kubernetes.

Однако на самом деле это не бессерверное решение, и хотя ваш Docker использует автомасштабирование, вам все равно придется беспокоиться о масштабировании контейнеров в балансировщике нагрузки. Вам также необходимо настроить подсети в нескольких зонах доступности, запустить несколько контейнеров и настроить Fargate для использования этих подсетей. Кроме того, сейчас это намного дороже, чем использование ECS на AWS Lambda.

Кроме того, с AWS Fargate ваши контейнеры продолжают работать независимо от того, запускаются действия или нет. Это связано с тем, что контейнеры активны, даже когда они не обрабатывают данные, поэтому, если вы запустите один из них и запустите процесс узла, который прослушивает запросы, это сервер. Несомненно, меньше инфраструктуры — это всегда хорошо, но все еще немного преждевременно называть Fargate бессерверным, особенно по сравнению с AWS Lambda.

Fn — еще одна платформа «бессерверных» функций с открытым исходным кодом, которая пытается привнести ценность и удобство бессерверной архитектуры в контейнеры. Проект TheFn — это бессерверная платформа с лицензией Apache 2.0, нативная для контейнеров, которую можно запускать где угодно, в любом облаке или локально. Опять же, это не совсем бессерверное приложение, как Lambda, где ваши функции не существуют до тех пор, пока они не будут запущены, это также зависит от Docker.

Перекресток

Точка пересечения, которую мы ищем, вероятно, находится впереди, в отдаленном будущем, когда Kubernetes дойдет до точки, где вся конфигурация, сложность и управление кластером будут абстрагированы, или AWS Fargate дойдет до точки, где он предложит «Kubernetes- уровне» контроля над окружающей средой. Хотя автоматизация — это здорово, мы всегда ищем «мощные» инструменты, которые сделают нас хозяевами нашей среды. Таким образом, тонкий баланс между абстрагированием инфраструктуры и предоставлением нам достаточного контроля, чтобы мы могли настроить важные вещи, вероятно, то, что мы ищем.

Таким образом, объединение лучшего из обоих миров в отношении контейнеров и бессерверных технологий может показаться мечтой в теории, но путешествие только началось. Определенно наступит день, когда AWS Fargate полностью позаботится об оркестровке, а также настанет день, когда Kubernetes будет работать как AWS Lambda. Когда этот день наступит, мы окажемся в той точке пересечения, где это не имеет большого значения, поскольку мы все будем свободны просто работать над нашим кодом и ничего больше. Пока этот день не настал, serverless и Kubernetes — два совершенно разных зверя, так что выбирайте с умом.