Часть 1: Почему бессерверная?
Если вы разработчик программного обеспечения, который в настоящее время ищет что-то новое, то такие модные слова, как Serverless, Lambda, скорее всего, натолкнулись на ваши поисковые запросы. За последние несколько недель я потратил несколько раз на изучение бессерверного мира, особенно в экосистеме AWS. Таким образом, я решил начать серию статей Перейти без сервера.
Помимо кратких идей о том, что на самом деле такое бессерверное, эта серия статей также направлена на более глубокое изучение бессерверной экосистемы AWS. Мы постепенно пройдемся по его строительным блокам и посмотрим, как все они будут реализованы в реальности.
Давайте начнем!
Означает ли бессерверное… отсутствие сервера?
Интересно ... нет
На самом деле бессерверный режим подразумевает меньше управления на сервере, чем отсутствие сервера. По сравнению с традиционной серверной архитектурой, serverless дает все доверие поставщикам облачных услуг для выполнения работы по распределению и предоставлению ресурсов.
Итак - бессерверная - меньше работы для вас, больше работы для облачного провайдера вашего приложения.
Бессерверное приложение запускается в компьютерных контейнерах без сохранения состояния (также управляемых облачными провайдерами) в течение очень короткого количества раз, что может быть всего одним вызовом. Кроме того, это событие-триггер. Это означает, что ваш сервер всегда спит, пока не будет разбужен определенным триггером события. После обработки события сервер снова переходит в спящий режим.
Бессерверные провайдеры
Есть ряд технологических гигантов, которые вкладывают огромные средства в бессерверные сервисы и инфраструктуры. Их платформы предлагают широкий спектр инструментов и услуг, которые помогают в создании приложений.
Теперь вы можете задаться вопросом: чем все это отличается от обычного, говорит сервер AWS, с которым вы знакомы много лет?
По правде говоря, довольно сложно выяснить причину, основываясь исключительно на определении serverless и его архитектуре. Однако, как упоминалось ранее:
Разработчикам необходимо полностью полагаться на бессерверных провайдеров, чтобы они выполняли работу по выделению и предоставлению ресурсов для сервера
Что именно выделяет и инициализирует сервер? 🤔 Давайте возьмем AWS в качестве примера и кратко рассмотрим несколько сервисов, которые он предоставляет, чтобы разобраться в этом непростом вопросе 💪
Что мы делаем меньше?
Вот краткий обзор бессерверной архитектуры AWS. Мы рассмотрим эти блоки, которые полностью управляются AWS для внутренних разработчиков.
Создавайте и поддерживайте API с помощью API Gateway
Обычно одной из первых задач при создании серверного приложения является инициализация приложения, скорее всего, из фреймворка. Затем вы разработаете другие API:
- Добавление дополнительных маршрутов
- Написание обработчиков для каждого маршрута для выполнения таких операций, как проверка и форматирование данных.
- Подключение к базе данных и запрос к ней, выполнение логики и обработка ошибок перед возвратом запрошенных данных клиенту.
За исключением третьей части, обрабатываемой Lambda, API Gateway поможет вам сделать все остальное. Как?
Все это будет более подробно рассмотрено в следующих частях этой серии, поскольку мы будем работать над созданием REST API с нуля 😎. А теперь, чтобы вы могли познакомиться с этим, вот сладости, которые вы можете получить прямо из коробки с помощью API Gateway:
- Объявление ресурса и метода
- Запросить валидатор
- Запросить отображение и преобразование данных перед передачей в Lambda для обработки
- Измените форму данных, возвращаемых Lambda, прежде чем отправлять их обратно клиенту
- Ведение журнала: в большом приложении вам может потребоваться создать и поддерживать отдельную службу для ведения журнала. AWS предоставляет для этого AWS CloudWatch.
Запустить код приложения с помощью Lambda
AWS Lambda - это вычислительная служба, которая запускает код без необходимости управлять сервером. Таким образом, вам не нужно беспокоиться о поддержке сервера, его ЦП, сети и ОС. Когда ваше приложение получает больше трафика, Lambda автоматически масштабируется.
Еще одно большое преимущество Lambda и serverless в целом - это экономия средств. Нам нужно платить только за время, в течение которого наш код действительно выполняется.
Это здорово благодаря своей модели исполнения. Лямбда-функции выполняются в контейнерах, управляемых AWS. В ответ на триггер события контейнер инициализирует экземпляр и выполняет в нем функцию-обработчик Lambda. Если поступают другие запросы, создаются новые экземпляры. Если его больше нет, контейнер снова переводится в спящий режим и не используется.
Как они связаны друг с другом?
Вернемся к бессерверной архитектуре AWS. Мы уже знали, что API Gateway - это место для создания наших API и управления ими. Он принимает и изменяет данные, полученные по запросам клиентов, и отправляет эти значимые данные в обработчик функции. Но как ресурс шлюза API взаимодействует с лямбда-функцией?
В бессерверном приложении нам нужно добавить конфигурацию для этого соединения. Это выглядело бы примерно так:
Эта настройка по существу указывает приложению использовать функцию todos.handler
в ответ на событие HTTP с помощью метода GET
и маршрута /todos
. Итак, когда клиент делает запрос GET для этого маршрута нашего API, будет вызвана функция todos.handler
, получит данные задач и отправит их обратно в API-шлюз (! Понятно). Метод API Gateway при необходимости преобразует эти данные перед возвратом данных клиенту. Мы углубимся в это в следующей части серии.
Быстрые обновления и уменьшение задержки
Помимо отсутствия ресурсов сервера, масштабирования управления и экономии затрат, бессерверное решение дает существенные преимущества.
Разработчики могут быстро предоставлять конечным пользователям новые функции и обновления благодаря бессерверной архитектуре. Поскольку бессерверное приложение на самом деле представляет собой набор функций, а не один стек, мы могли бы обновлять приложение постепенно, функция за функцией. Это помогает быстро выпускать обновления, не беспокоясь о нарушении других функций приложения.
Затем бессерверные приложения могут быть распределены по всему миру. Это означает, что коды наших приложений запускаются не на сервере с фиксированным происхождением, а ближе к конечным пользователям. Самое приятное то, что облачные провайдеры предоставляют нам потрясающие инструменты и помогают управлять всей инфраструктурой за сценой. Хорошими примерами являются Lambda @ Edge от AWS и Cloudflare Workers от Cloudflare. Этот уникальный вид архитектуры значительно снижает задержку запросов и, таким образом, повышает производительность наших приложений.
Ключевые выводы
- Бессерверные приложения работают на реальных серверах.
- Облачные провайдеры помогают разработчикам в решении критически важных задач по распределению ресурсов и обеспечению. Эти работы включают создание API, обслуживание и автоматическое масштабирование сервера (операционной системы, ЦП и сети), а также базы данных.
- Бессерверные провайдеры и внешние фреймворки предоставляют нам API и инструменты для соединения строительных блоков архитектуры вместе.
- Одно из ключевых преимуществ бессерверной архитектуры по сравнению с традиционным сервером - это оплата по мере использования, предоставляемая поставщиками услуг. Это означает, что нам нужно платить только за фактически используемые ресурсы.
- Бессерверная архитектура также дает большие преимущества, такие как более быстрое обновление и повышение производительности приложений.
Ресурсы
Что такое бессерверная архитектура? Каковы его плюсы и минусы?
Lambda-AWS Docs
Что такое AWS Lambda? | Бессерверный стек
Amazon API Gateway - Amazon Web Services
Пограничные вычисления | CDN, глобальный бессерверный код, распространение | AWS Lambda @ Edge
Это конец серии «Часть 1: Почему бессерверные в Go Serverless»!
В следующей части мы создадим бессерверный API с нуля с помощью API Gateway, Lambda и Serverless framework. Так что следите за обновлениями и счастливого кодирования! 💪👨🏻💻
Я хотел бы услышать ваши идеи и мысли 🤗 Пожалуйста, запишите их ниже 👇👇👇
✍️ Автор
Винь Ле @ vinhle95
👨🏻💻🤓🏋️🏸🎾🚀
Деловой человек, ученик на протяжении всей жизни, любитель технологий и разработчик программного обеспечения
Сказать привет 👋 на
✅ Github
✅ Средний