Рейтинг
0.00

Selectel дата-центры

11 читателей, 254 топика

Serverless по стоечкам



Serverless ― это не про физическое отсутствие серверов. Это не «убийца» контейнеров и не мимолетный тренд. Это новый подход к построению систем в облаке. В сегодняшней статье коснемся архитектуры Serverless-приложений, посмотрим, какую роль играет провайдер Serverless-услуги и open-source проекты. В конце поговорим о вопросах применения Serverless.

Я хочу написать серверную часть приложения (да хоть интернет-магазина). Это может быть и чат, и сервис для публикации контента, и балансировщик нагрузки. В любом случае головной боли будет немало: придется подготовить инфраструктуру, определить зависимости приложения, задуматься насчет операционной системы хоста. Потом понадобится обновить небольшие компоненты, которые не затрагивают работу остального монолита. Ну и про масштабирование под нагрузкой не будем забывать.

А что если взять эфемерные контейнеры, в которых требуемые зависимости уже предустановлены, а сами контейнеры изолированы друг от друга и от ОС хоста? Монолит разобьем на микросервисы, каждый из которых можно обновлять и масштабировать независимо от других. Поместив код в такой контейнер, я смогу запускать его на любой инфраструктуре. Уже лучше.

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

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

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

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

Со стороны разработчика
Ранее мы начали говорить про приложение для интернет-магазина. В традиционном подходе основную логику системы выполняет монолитное приложение. И сервер с приложением запущен постоянно, даже если нагрузки нет.

Чтобы перейти к Serverless, разбиваем приложение на микрозадачи. Под каждую из них пишем свою функцию. Функции независимы друг от друга и не хранят информацию о состоянии (stateless). Они даже могут быть написаны на разных языках. Если одна из них «упадет», приложение целиком не остановится. Архитектура приложения будет выглядеть вот так:


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

Serverless-функции должны выполняться за короткий промежуток времени (timeout), который определяет провайдер услуги. Например, для AWS timeout составляет 15 минут. Значит, долгоживущие функции (long-lived) придется изменить под требования ― этим Serverless отличается от других популярных сегодня технологий (контейнеров и Platform as a Service).

Каждой функции назначаем событие. Событие ― это триггер для действия:


Событиями могут выступать HTTP-запросы, потоковые данные, очереди сообщений и так далее. Источники событий ― это изменение или появление данных. Кроме того, функции можно запускать по таймеру.

Архитектуру проработали, и приложение почти стало Serverless. Дальше идем к провайдеру услуги.

Со стороны провайдера
Обычно бессерверные вычисления предлагают провайдеры облачных услуг. Называют по-разному: Azure Functions, AWS Lambda, Google Cloud Functions, IBM Cloud Functions.

Пользоваться услугой будем через консоль или личный кабинет провайдера. Код функций можно загрузить одним из способов:
  • написать код во встроенных редакторах через веб-консоль,
  • загрузить архив с кодом,
  • работать с публичными или приватными git-репозиториями.
Здесь же настраиваем события, которые вызывают функцию. У разных провайдеров наборы событий могут отличаться.


Провайдер на своей инфраструктуре построил и автоматизировал систему Function as a Service (FaaS):
  • Код функций попадает в хранилище на стороне провайдера.
  • Когда появляется событие, на сервере автоматически разворачиваются контейнеры с подготовленным окружением. Каждому экземпляру функции ― свой изолированный контейнер.
  • Из хранилища функция отправляется в контейнер, вычисляется, отдает результат.
  • Число параллельных событий растет ― растет количество контейнеров. Система автоматически масштабируется. Если пользователи не обращаются к функции, она будет неактивна.
  • Провайдер задает время простоя контейнеров ― если в течение этого времени функции не появляются в контейнере, он уничтожается.
Таким образом мы получаем Serverless «из коробки». Платить за услугу будем по модели pay-as-you-go и только за те функции, которые используются, и только за то время, когда они использовались.

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

Основное преимущество работы с провайдером ― возможность не беспокоиться об инфраструктуре (серверах, виртуальных машинах, контейнерах). Со своей стороны провайдер может реализовать FaaS как на собственных разработках, так и с помощью open-source инструментов. О них и поговорим дальше.

Со стороны open source
Последние пару лет сообщество open-source активно работает над инструментами Serverless. В том числе вклад в развитие бессерверных платформ вносят крупнейшие игроки рынка:
  • Google предлагает разработчикам свой open-source инструмент ― Knative. В его разработке участвовали IBM, RedHat, Pivotal и SAP;
  • IBM работали над Serverless-платформой OpenWhisk, которая затем стала проектом Apache Foundation;
  • Microsoft частично открыли код платформы Azure Functions.
Разработки ведутся и в направлении serverless-фреймворков. Kubeless и Fission разворачиваются внутри заранее подготовленных Kubernetes-кластеров, OpenFaaS работает как с Kubernetes, так и с Docker Swarm. Фреймворк выступает в роли своеобразного контроллера ― по запросу готовит внутри кластера среду выполнения, потом запускает там функцию.

Фреймворки оставляют простор для конфигурации инструмента под свои нужды. Так, в Kubeless разработчик может настроить timeout выполнения функции (дефолтное значение ― 180 секунд). Fission в попытке решить проблему холодного старта предлагает часть контейнеров держать все время запущенными (хоть это и влечет затраты на простой ресурсов). А OpenFaaS предлагает набор триггеров на любой вкус и цвет: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs и другие.

Инструкции к началу работы можно найти в официальной документации фреймворков. Работа с ними подразумевает наличие чуть большего количества навыков, чем при работе с провайдером ― это как минимум умение запустить Kubernetes-кластер через CLI. Максимум, включить в работу другие open-source инструменты (допустим, менеджер очередей Kafka).

Вне зависимости от того, каким способом мы будем работать с Serverless ― через провайдера или с помощью open-source, мы получим ряд преимуществ и недостатков Serverless-подхода.
Последние пару лет сообщество open-source активно работает над инструментами Serverless. В том числе вклад в развитие бессерверных платформ вносят крупнейшие игроки рынка:

Google предлагает разработчикам свой open-source инструмент ― Knative. В его разработке участвовали IBM, RedHat, Pivotal и SAP;
IBM работали над Serverless-платформой OpenWhisk, которая затем стала проектом Apache Foundation;
Microsoft частично открыли код платформы Azure Functions.
Разработки ведутся и в направлении serverless-фреймворков. Kubeless и Fission разворачиваются внутри заранее подготовленных Kubernetes-кластеров, OpenFaaS работает как с Kubernetes, так и с Docker Swarm. Фреймворк выступает в роли своеобразного контроллера ― по запросу готовит внутри кластера среду выполнения, потом запускает там функцию.

Фреймворки оставляют простор для конфигурации инструмента под свои нужды. Так, в Kubeless разработчик может настроить timeout выполнения функции (дефолтное значение ― 180 секунд). Fission в попытке решить проблему холодного старта предлагает часть контейнеров держать все время запущенными (хоть это и влечет затраты на простой ресурсов). А OpenFaaS предлагает набор триггеров на любой вкус и цвет: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs и другие.

Инструкции к началу работы можно найти в официальной документации фреймворков. Работа с ними подразумевает наличие чуть большего количества навыков, чем при работе с провайдером ― это как минимум умение запустить Kubernetes-кластер через CLI. Максимум, включить в работу другие open-source инструменты (допустим, менеджер очередей Kafka).

Вне зависимости от того, каким способом мы будем работать с Serverless ― через провайдера или с помощью open-source, мы получим ряд преимуществ и недостатков Serverless-подхода.

С позиции преимуществ и недостатков
Serverless развивает идеи контейнерной инфраструктуры и микросервисного подхода, при которых команды могут работать в мультиязычном режиме, не привязываясь к одной платформе. Построение системы упрощается, а исправлять ошибки становится легче. Микросервисная архитектура позволяет добавлять в систему новый функционал значительно быстрее, чем в случае с монолитным приложением.
  • Serverless сокращает время разработки еще больше, позволяя разработчику сосредоточиться исключительно на бизнес-логике приложения и написании кода. Как следствие, время выхода разработок на рынок сокращается.
  • Бонусом мы получаем автоматическое масштабирование под нагрузку, а платим только за используемые ресурсы и только в то время, когда они используются.

Как и любая технология, Serverless имеет недостатки.
  • Например, таким недостатком может быть время холодного старта (в среднем до 1 секунды для таких языков как JavaScript, Python, Go, Java, Ruby).
С одной стороны, на деле время холодного старта зависит от многих переменных: язык, на котором написана функция, количество библиотек, объем кода, общение с дополнительными ресурсами (те же базы данных или серверы аутентификации). Поскольку разработчик управляет этими переменными, он может сократить время старта. Но с другой стороны, разработчик не может управлять временем запуска контейнера ― здесь все зависит от провайдера.

Холодный старт может превратиться в теплый, когда функция переиспользует запущенный предыдущим ивентом контейнер. Такая ситуация возникнет в трех случаях:
  • если клиенты часто используют сервис и растет количество обращений к функции;
  • если провайдер, платформа или фреймворк позволяют держать часть контейнеров запущенными все время;
  • если разработчик запускает функции по таймеру (скажем, каждые 3 минуты).
Для многих приложений холодный старт ― не проблема. Здесь нужно отталкиваться от типа и задач сервиса. Задержка старта на секунду не всегда критична для бизнес-приложения, но может стать критичной для медицинских служб. Вероятно, в этом случае бессерверный подход уже не подойдет.
  • Следующим недостатком Serverless называют короткое время жизни функции (timeout, за который функция должна выполниться).
Но, если предстоит работать с долгоживущими задачами, можно использовать гибридную архитектуру ― скомбинировать Serverless с другой технологией.
  • Не все системы смогут работать по Serverless-схеме.
Некоторые приложения по-прежнему будут хранить данные и состояние во время выполнения. Некоторые архитектуры останутся монолитными, а некоторые функции будут долгоживущими. Однако (как когда-то облачные технологии, а затем и контейнеры), Serverless ― технология с большим будущим.

В этом ключе мне бы хотелось плавно перейти к вопросу применения Serverless-подхода.

Со стороны применения
За 2018 год процент использования Serverless вырос в полтора раза. Среди компаний, которые уже внедрили технологию в свои сервисы, такие гиганты рынка как Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. При этом нужно понимать, что Serverless ― не панацея, а инструмент для решения определенного круга задач:
  • Сократить простой ресурсов. Не надо постоянно держать виртуальную машину под сервисы, к которым мало обращений.
  • «На лету» обработать данные. Сжимать картинки, вырезать фон, менять кодировку видео, работать с датчиками IoT, выполнять математические операции.
  • «Склеить» между собой другие сервисы. Git-репозиторий с внутренними программами, чат-бот в Slack с Jira и с календарем.
  • Балансировать нагрузку. Здесь остановимся подробнее.
Допустим, есть сервис, на который приходит 50 человек. Под него стоит виртуальная машина со слабым железом. Периодически нагрузка на сервис возрастает в разы. Тогда слабое железо не справляется.

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

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


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

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

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

Если у вас есть идеи, какой должна быть идеальная FaaS-платформа и как вы хотите использовать Serverless в своих проектах, поделитесь ими в комментариях. Мы учтем ваши пожелания при разработке платформы.

Обновления «Выделенных серверов» и панели управления, важные новости по аренде ПО



Это рассылка Selectel — делимся новостями апреля. Сегодня в выпуске: новая конфигурация Chipcore, посуточная аренда серверов с GPU, обновленное меню панели управления, важные новости по аренде ПО, а также наши актуальные вакансии.



Обновления «Выделенных серверов»
Мы пополнили линейку Chipcore новой конфигурацией на базе APU AMD Ryzen 5 2400G. Встроенная в процессор видеокарта Radeon RX Vega 11 и технология AMD SenseMI, использующая искусственный интеллект для ускорения работы процессора, обеспечивают высокий уровень производительности сервера. И все это, как обычно, по очень выгодной цене. Заказать сервер с новым производительным процессором можно уже сейчас. Он будет готов через 15 минут после оплаты заказа.

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

Удобная работа в панели управления Selectel
Мы внимательно относимся к вашей обратной связи: стараемся учитывать пожелания, чтобы панель управления стала еще удобнее и понятнее. На этот раз изменения коснулись меню:
1. «Сеть доставки контента» (CDN) пользуется популярностью среди клиентов, поэтому мы переместили ее в главное меню.
my.selectel.ru/cdn/home


2. «Мультиоблачная среда» и «Облачные приложения» переехали в раздел «Сервисы партнеров».
Если у вас есть пожелания по улучшению нашей панели или вы просто хотите поделиться впечатлениями, напишите нам через тикет-систему.

Всегда актуальное ПО
9 июля 2019 года Microsoft снимет с поддержки SQL Server 2008 и 2008 R2, а 14 января 2020 года — Windows Server 2008 и 2008 R2. Это значит, что регулярные обновления защиты выпускаться не будут. Всем, кто работал на этом ПО, придется покупать новое или пользоваться старой версией без обновлений, что может привести к проблемам безопасности и правового соответствия.

Мы можем помочь минимизировать ваши затраты на покупку и предлагаем арендовать программное обеспечение ведущих компаний с регулярными обновлениями.
selectel.ru/services/additional/rentsoft/

Для всех, кто столкнется со снятием с поддержки Microsoft Office 2010, рекомендуем присмотреться к «Облачным приложениям» Selectel. Это популярные пакеты в облачном исполнении: приложения Microsoft и G Suite от Google. Они сделают вашу работу с документами еще удобнее.
Для заказа свяжитесь с нами любым удобным способом: позвоните по телефону +7 800 555 06 75, напишите на sales@selectel.ru или обратитесь в техподдержку.
selectel.ru/services/cloud-apps/

Новости компании
Изменения партнерской программы White Label
Мы обновили условия партнерской программы, чтобы вы могли перепродавать услуги Selectel. Теперь наши партнеры могут получать базовую скидку бессрочно, а также работать по постоплате. Подробнее о программе White Label вы можете прочитать на сайте. Если хотите развивать IT-инфраструктуру своих клиентов, получать за это скидки или бонусы, то вам в Selectel. Стать партнером просто — напишите нам на partner@selectel.ru.

Наши серверы в ИТМО
Мы прекрасно понимаем, насколько важно обеспечить студентов технических специальностей актуальным оборудованием, а учебное заведение — современной инфраструктурной базой. Именно поэтому в середине апреля мы помогли модернизировать учебный дата-центр Университета ИТМО и передали 40 современных высокопроизводительных серверов. Надеемся, что обучение станет еще интереснее, а также ждем студентов и выпускников на практику и стажировку в Selectel.
selectel.ru/careers/internships/

Selectel и DDoS-GUARD на страже Петербурга
Совместно с DDoS-GUARD, оператором связи и услуг по защите от DDoS-атак, мы запустили первый и единственный в Петербурге узел фильтрации трафика. Расположен он в нашем дата-центре «Цветочная 2». Основная задача — сократить задержки на сети для легитимного трафика серверов. Это значит, что весь локальный трафик будет обработан в Петербурге, без передачи на фильтрацию в другие регионы.
Повысьте надежность и отказоустойчивость своих серверов, оптимизируйте маршруты трафика и снизьте задержки на сети — пользуйтесь надежной защитой DDoS-GUARD в Selectel. Она вычислит и заблокирует атаки на уровнях L3-L4 и L7 мощностью до 1.5 Tbps.

Мы завели канал в Телеграм!
Будем рассказывать о жизни компании, новостях индустрии и мероприятиях, которые нельзя пропустить. Самые интересные статьи из блога, вакансии и продуктовые анонсы тоже будут.
Наш новый проект с DTF уже на канале. Подписывайтесь, чтобы ничего не упустить!
t.me/SelectelNews

Мероприятия
Selectel на Azure Day
10 апреля команда облачной интеграции Selectel провела на Azure Day. Никита Завьялов, архитектор облачных решений, выступил с докладом «Создание умных чат-ботов в Azure за 15 минут». Тема получила отклик среди аудитории: было много интересных вопросов, а некоторые участники после мероприятия даже создали своих первых чат-ботов.
Коллеги на стенде презентовали нашу новую услугу Direct Connect, которая организовывает выделенное соединение до облаков Azure, AWS, Google Cloud, Alibaba Cloud и не только.
Если вас заинтересовали услуги облачной интеграции, напишите на azure@selectel.ru, мы ответим на интересующие вопросы и подберем решение.
azureday.ru

Официальная презентация Intel
Мы не только следим за технологическими новинками, но и сразу внедряем их в свои услуги. 15 апреля в Москве мы присутствовали на официальной презентации новых технологий Intel, где рассказывалось о новых процессорах и памяти. Там же мы представили 4 новых процессора Intel®️ Xeon Scalable в выделенных серверах произвольных конфигураций и объявили о возможности тестирования новой энергонезависимой памяти Intel Optane DC в Selectel Lab.
selectel.ru/lab/intel-optane-dc/
selectel.ru/promo/intel-xeon-scalable/

Selectel передал серверы Университету ИТМО

Selectel, провайдер ИТ-инфраструктурных решений для бизнеса, помог модернизировать учебный дата-центр Университета ИТМО. Компания безвозмездно передала вузу 40 современных высокопроизводительных серверов.

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

Selectel является признанным технологическим лидером российского облачного рынка. Компания выбрала из продуктовой линейки серверы, наиболее подходящие для ряда новых проектов университета, и безвозмездно передала их вузу.

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

Сергей Хоружников, декан факультета инфокоммуникационных технологий Университета ИТМО:
Участие отраслевых партнеров в образовательном процессе, безусловно, является важным его элементом и положительно сказывается на уровне подготовки обучающихся и их дальнейшем трудоустройстве. Университет ИТМО и компания Selectel плодотворно взаимодействуют в этом направлении уже более пяти лет. Наши студенты проходят практику и выполняют выпускные работы в Selectel под руководством высококвалифицированных специалистов компании

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

Selectel активно сотрудничает с российскими вузами. Компания поддерживает их образовательные инициативы, проводит собственные Дни карьеры и развивает программу студенческих стажировок, помогая студентам попасть на работу в IT-бизнес.

Уязвимость Intel MDS | Intel MDS vulnerability



15 Мая была опубликована информация о наличии MDS (Microarchitectural Data Sampling) уязвимости в процессорах Intel:
www.intel.com/content/www/us/en/architecture-and-technology/mds.html

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

С информацией о том, как эксплуатируется уязвимость и в чем она заключается, можно ознакомиться на специально созданном веб-сайте или в одной из статей с подробным описанием проблемы:
zombieloadattack.com/
www.cyberus-technology.de/posts/2019-05-14-zombieload.html
www.phoronix.com/scan.php?page=news_item&px=Microarch-Data-Sampling

Обновления микрокода для процессоров Intel доступны в официальных репозиториях:
github.com/intel/Intel-Linux-Processor-Microcode-Data-Files
support.microsoft.com/en-us/help/4072698/windows-server-speculative-execution-side-channel-vulnerabilities-prot
access.redhat.com/security/vulnerabilities/mds
blog.ubuntu.com/2019/05/14/ubuntu-updates-to-mitigate-new-microarchitectural-data-sampling-mds-vulnerabilities
security-tracker.debian.org/tracker/CVE-2019-11091

В случаях, если в ваших системах запускается плохо контролируемый код – сторонние виртуальные машины или контейнеры, работают недоверенные пользователи, мы рекомендуем как можно скорее обновить микрокод процессора и установить обновления для вашей операционной системы – они уже доступны в репозиториях на mirror.selectel.ru.