Перевод статьи подготовлен специально для студентов курса.
Хотите развиваться в этом направлении? Посмотрите мастер-класс Егора Зуева (TeamLead InBit) «Сервис AWS EC2» и присоединяйтесь к следующей группе курса: старт 26 сентября.
Все больше людей переходят на AWS Lambda из-за масштабируемости, производительности, экономии и возможности обрабатывать миллионы или даже триллионы запросов в месяц.
Для этого вам не нужно управлять инфраструктурой, на которой работает сервис.
А автомасштабирование позволяет обслуживать тысячи одновременных запросов в секунду.
Думаю, AWS Lambda по праву можно назвать одним из самых популярных сервисов AWS. AWS Лямбда AWS Lambda — это сервис бессерверных вычислений, управляемый событиями, который позволяет запускать код без выделения серверов или управления ими, а также расширять другие сервисы AWS с помощью специальной логики.
Lambda автоматически реагирует на различные события (называемые триггерами), такие как HTTP-запросы через Amazon API Gateway, изменения данных в корзинах Amazon S3 или таблицах Amazon DynamoDB; или вы можете запускать свой код посредством вызовов API, используя AWS SDK и переходы между состояниями в AWS Step Functions. Lambda запускает код в высокодоступной вычислительной инфраструктуре и несет полную ответственность за администрирование базовой платформы, включая обслуживание сервера и операционной системы, предоставление ресурсов, автоматическое масштабирование, мониторинг кода и ведение журналов.
То есть вам просто нужно загрузить свой код и настроить, как и когда он должен выполняться.
В свою очередь сервис позаботится о его запуске и обеспечит высокую доступность вашего приложения.
Когда переходить на Lambda? AWS Lambda — это удобная вычислительная платформа, подходящая для различных вариантов использования, если сервис поддерживает язык и среду выполнения вашего кода.
Если вы хотите сосредоточиться на своем коде и бизнес-логике, одновременно отдавая на аутсорсинг обслуживание, предоставление и масштабирование серверов по разумной цене, AWS Lambda определенно подойдет вам.
Lambda идеально подходит для создания программных интерфейсов, а при использовании в сочетании с API Gateway можно значительно сократить расходы и быстрее выйти на рынок.
Существуют разные способы использования функций Lambda и варианты организации бессерверной архитектуры — каждый может выбрать что-то подходящее исходя из своей цели.
Lambda позволяет выполнять широкий спектр задач.
Таким образом, благодаря поддержке CloudWatch вы можете создавать отложенные задачи и автоматизировать отдельные процессы.
Никаких ограничений по характеру и интенсивности использования сервиса нет (учитывается потребление памяти и время), и ничто не мешает вам планомерно работать над полноценным микросервисом на базе Lambda. Здесь вы можете создавать сервис-ориентированные действия, которые не выполняются постоянно.
Типичный пример — масштабирование изображения.
Даже в случае распределенных систем лямбда-функции остаются актуальными.
Итак, если вы не хотите заниматься распределением и управлением вычислительными ресурсами, попробуйте AWS Lambda; если вам не нужны тяжелые, ресурсоемкие вычисления, попробуйте также AWS Lambda; если ваш код выполняется периодически, правильно, вам следует попробовать AWS Lambda. Безопасность К безопасности пока претензий нет. С другой стороны, поскольку многие внутренние процессы и особенности реализации этой модели скрыты от пользователя управляемой среды выполнения AWS Lambda, некоторые общепринятые правила облачной безопасности становятся неактуальными.
Как и большинство сервисов AWS, Lambda предоставляется на основе общей безопасности и соответствия требованиям между AWS и клиентом.
Этот принцип снижает операционную нагрузку на клиента, поскольку AWS берет на себя задачи по обслуживанию, администрированию и мониторингу сервисных компонентов — от операционной системы хоста и уровня виртуализации до физической безопасности инфраструктурных активов.
Говоря конкретно об AWS Lambda, AWS отвечает за управление базовой инфраструктурой, соответствующими базовыми сервисами, операционной системой и платформой приложений.
При этом клиент несет ответственность за безопасность своего кода, хранение конфиденциальных данных, контроль доступа к ним, а также к сервису и ресурсам Lambda (Identity and Access Management, IAM), в том числе в пределах используемых функций.
На диаграмме ниже показана модель общей ответственности применительно к AWS Lambda. Ответственность AWS отмечена оранжевым цветом, а ответственность клиента — синим.
Как видите, AWS берет на себя больше ответственности за приложения, развернутые на сервисе.
Модель общей ответственности, применимая к AWS Lambda
Среда выполнения лямбды Главное преимущество Lambda в том, что, выполняя функцию от вашего имени, сервис сам выделяет необходимые ресурсы.
Вы можете не тратить время и силы на системное администрирование и сосредоточиться на бизнес-логике и кодировании.
Служба Lambda разделена на две плоскости.
Первый — это уровень управления.
Согласно Википедии, плоскость управления — это часть сети, отвечающая за транспортировку сигнального трафика и маршрутизацию.
Это основной компонент, который принимает глобальные решения о предоставлении, обслуживании и распределении рабочих нагрузок.
Кроме того, плоскость управления действует как топология сети поставщика решения, отвечая за маршрутизацию и управление трафиком.
Вторая плоскость — это плоскость данных.
У него, как и у самолета управления, свои задачи.
Плоскость управления предоставляет API для управления функциями (CreateFunction, UpdateFunctionCode) и контролирует взаимодействие Lambda с другими сервисами AWS. Плоскость данных управляет API Invoke, который запускает функции Lambda. После вызова функции плоскость управления выделяет или выбирает существующую среду выполнения, предварительно подготовленную для этой функции, а затем выполняет в ней код. AWS Lambda поддерживает различные языки программирования, включая Java 8, Python 3.7, Go, NodeJS 8, .
NET Core 2 и другие, через соответствующие среды выполнения.
AWS регулярно обновляет их, распространяет исправления безопасности и выполняет другие действия по обслуживанию этих сред. Lambda позволяет вам использовать и другие языки, при условии, что вы самостоятельно реализуете соответствующую среду выполнения.
И тогда вам придется позаботиться о его обслуживании, в том числе и о контроле за его безопасностью.
Как это все работает и как сервис будет выполнять ваши функции? Каждая функция выполняется в одной или нескольких выделенных средах, которые существуют только на протяжении всего срока действия этой функции и затем уничтожаются.
Каждая среда одновременно выполняет только один вызов, но он используется повторно, если к одной и той же функции выполняется несколько последовательных вызовов.
Все среды выполнения работают на виртуальных машинах с аппаратной виртуализацией — так называемых микроВМ.
Каждая микровиртуальная машина назначается определенной учетной записи AWS и может повторно использоваться средами для выполнения различных функций в рамках этой учетной записи.
MicroVM упакованы в составные блоки аппаратной платформы Lambda Worker, которой владеет и управляет AWS. Одна и та же среда выполнения не может использоваться разными функциями, а микроVM не являются уникальными для разных учетных записей AWS.
Модель изоляции AWS Lambda Изоляция сред выполнения реализуется с помощью нескольких механизмов.
На верхнем уровне каждой среды находятся отдельные копии следующих компонентов:
- Код функции
- Любые слои Lambda, выбранные для функции.
- Среда выполнения функций
- Минимальное пользовательское пространство на базе Amazon Linux
- cgroups — ограничить доступ к процессору, памяти, хранилищу и сетевым ресурсам для каждой среды выполнения;
- пространства имен — группировка идентификаторов процессов, идентификаторов пользователей, сетевых интерфейсов и других ресурсов, управляемых ядром Linux. Каждая среда выполнения работает в своем собственном пространстве имен;
- seccomp-bpf — ограничивает системные вызовы, которые можно использовать во время выполнения;
- iptables и таблицы маршрутизации — изоляция сред выполнения друг от друга;
- chroot — обеспечивает ограниченный доступ к базовой файловой системе.
Среды, изолированные таким образом, не могут получать доступ к данным из других сред или изменять их.
Хотя на одной микровиртуальной машине может работать несколько сред выполнения одной и той же учетной записи AWS, ни при каких обстоятельствах микровиртуальные машины не могут использоваться разными учетными записями AWS. AWS Lambda использует только два механизма для изоляции микроVM: инстансы EC2 и Firecracker. Изоляция гостей в Lambda на основе экземпляров EC2 существует с 2015 года.
Firecracker — это новый гипервизор с открытым исходным кодом, специально разработанный AWS для бессерверных рабочих нагрузок и представленный в 2018 году.
Физическое оборудование, на котором работают микроVM, распределяется между рабочими нагрузками в разных учетных записях.
Сохранение сред и состояний процессов Хотя среда выполнения Lambda уникальна для разных функций, они могут многократно вызывать одну и ту же функцию, а это означает, что среда выполнения может существовать в течение нескольких часов, прежде чем будет уничтожена.
Каждая среда выполнения Lambda также имеет файловую систему с возможностью записи, доступную через каталог /tmp. Доступ к его содержимому из других сред выполнения невозможен.
Что касается сохранения состояния процесса, файлы, записанные в /tmp, существуют в течение всего жизненного цикла среды выполнения.
Это позволяет накапливать результаты нескольких вызовов, что особенно полезно для дорогостоящих операций, таких как загрузка моделей машинного обучения.
Передача данных звонка API Invoke можно использовать в двух режимах: режиме событий и режиме запроса-ответа.
В режиме событий вызов добавляется в очередь для последующего выполнения.
В режиме запрос-ответ функция вызывается мгновенно с предоставленными полезными данными, после чего возвращается ответ. В обоих случаях функция выполняется в среде Lambda, но с разными путями полезной нагрузки.
Во время вызовов запрос-ответ полезная нагрузка передается от API обработки запросов (вызов API), такого как AWS API Gateway или AWS SDK, в балансировщик нагрузки, а затем в службу вызовов Lambda (служба вызова).
Последний определяет подходящую среду для выполнения функции и передает туда полезную нагрузку для завершения вызова.
Балансировщик нагрузки получает трафик, защищенный TLS, через Интернет. Трафик внутри сервиса Lambda — после балансировщика нагрузки — проходит через внутренний VPC в определенном регионе AWS.
Модель обработки вызовов AWS Lambda: режим «запрос-ответ» Вызовы событий могут быть выполнены немедленно или добавлены в очередь.
В некоторых случаях очередь реализуется с помощью Amazon SQS (Amazon Simple Queue Service), который передает вызовы в службу выполнения вызовов Lambda через внутренний процесс опроса.
Передаваемый трафик защищен TLS, а дополнительное шифрование данных, хранящихся в Amazon SQS, отсутствует. Вызовы событий не возвращают ответы — Lambda Worker просто игнорирует любую информацию об ответе.
Вызовы на основе событий из Amazon S3, Amazon SNS, CloudWatch и других источников обрабатываются Lambda в режиме событий.
Вызовы из потоков Amazon Kinesis и DynamoDB, очередей SQS, вызовов Application Load Balancer и шлюза API обрабатываются в режиме запрос-ответ. Мониторинг Вы можете отслеживать и проверять функции Lambda, используя различные механизмы и сервисы AWS, включая следующие.
Amazon CloudWatch Собирает различную статистику, такую как количество запросов, продолжительность запросов и количество неудачных запросов.
Amazon CloudTrail Позволяет регистрировать, постоянно отслеживать и поддерживать информацию об активности учетной записи, связанной с вашей инфраструктурой AWS. У вас будет полная история действий, выполненных с использованием консоли управления AWS, AWS SDK, инструментов командной строки и других сервисов AWS. AWS-рентген Обеспечивает полную видимость всех этапов обработки запросов в вашем приложении на основе карты его внутренних компонентов.
Позволяет анализировать приложения во время разработки и в производственных средах.
Конфигурация AWS Вы сможете отслеживать изменения в конфигурации функции Lambda (включая удаление) и среде выполнения, тегах, именах обработчиков, размере кода, выделении памяти, настройках тайм-аута и настройках параллелизма, а также роли выполнения Lambda IAM, подсетях и привязках групп безопасности.
.
Заключение AWS Lambda предлагает мощный набор инструментов для создания безопасных и масштабируемых приложений.
Многие методы обеспечения безопасности и соответствия требованиям в AWS Lambda такие же, как и в других сервисах AWS, хотя есть исключения.
По состоянию на март 2019 года Lambda соответствует требованиям SOC 1, SOC 2, SOC 3, PCI DSS, Закону о переносимости и подотчетности медицинского страхования (HIPAA) и другим нормативным актам.
Итак, когда вы подумываете о реализации своего следующего приложения, рассмотрите сервис AWS Lambda — возможно, он лучше всего подойдет для вашей задачи.
Теги: #облачные сервисы #aws #Amazon Web Services #lambda
-
Типы Нейтрино И Нейтринные Осцилляции
19 Oct, 24 -
Алгоритм Поведения Призраков В Игре Pac-Man
19 Oct, 24 -
Обновите Firefox 2.0.0.16 И Firefox 3.0.1.
19 Oct, 24