❝Frontier: Некоторое время назад я поделился знаниями и опытом BFF и бессерверных приложений внутри компании, от концепций, функций и сценариев применения до простых практик. Сегодня я пользуюсь этой возможностью, чтобы поделиться с вами тем, что такое BFF и бессерверные решения?
❞
1.BFF
❝Прежде чем мы поговорим о Serverless, давайте поговорим о BFF, Как следует из названия, BFF — это
❞Backend For Frontend
, объяснил по-китайски, что серверная часть обслуживает переднюю часть, так почему же там BFF?
У студентов Front-end и Back-end есть свои причины.Есть ли решение для разрешения этой неловкой сцены, так что есть BFF?
1.1 Введение
❝Первоначальное намерение слоя BFF состоит в том, чтобы добавить слой между фоновым сервисом и внешним интерфейсом (клиентом).Далее, давайте посмотрим на следующее изображение.
❞
❝👦А Куан спросил: Какую роль играет BFF?
❞
ответ:用户体验适配层和API聚合层
: в основном отвечает за быструю последующую итерацию пользовательского интерфейса,
Сервис конечного интерфейса объединяется и обрабатывается, а данные обрезаются, форматируются, агрегируются и т. д.
Ниже уровня BFF находятся различные серверные микросервисы, а на верхнем уровне BFF находятся различные интерфейсные приложения (мультитерминальные приложения), которые вызывают вниз серверную часть как услугу, предоставляют интерфейсные услуги клиенту вверх. , а серверная часть обеспечивает внешний интерфейс уровня BFF. Уровень BFF напрямую вызывает интерфейс RPC сервера для получения данных и обрабатывает данные по мере необходимости для завершения замкнутого цикла всего BFF (в основном Node + GraphQL стек технологий)
❝👧 А Дай спросил: Кто будет разрабатывать слой BFF?
❞
Следование принципу сервисной автономии, кто использует, кто разрабатывает, означает, что спровоцировать эту важную задачу могут только фронтенд-студенты, и в то же время это на шаг дальше от «инженеров полного стека». Я не знаю, должен ли 🤷♂️ радоваться или огорчаться
Можно ли сделать BFF бэкендом? Конечно можно, но если это приносит новые проблемы, то всегда забивает интерфейс, что будет ограничивать улучшение личных способностей.
❝🙆Ах Ю спросил: Ты пропустил шлюз API?
❞
хороший вопрос BFF и шлюз — две важные концепции в архитектуре микросервиса, см. следующий простой пример 👇
❝Поделитесь тем, что однажды сказал Ю Бо, руководитель отдела технологий взаимодействия Ant Financial: «Модель BFF — это не просто техническая архитектура. С точки зрения социального разделения труда BFF — это многоуровневая архитектура, ориентированная на множество ценностей».
❞
1.2 Преимущества БФФ
Основные преимущества следующие👇
- Затраты на связь могут быть снижены: студенты, изучающие бэкенд, стремятся к отделению, надеясь, что клиентские приложения и внутренние микросервисы не связаны друг с другом. Благодаря внедрению среднего уровня BFF обе стороны могут меняться независимо друг от друга.
- Адаптация многотерминального приложения: отображать разные (или меньшие) данные. Например, API дизайна страницы на стороне ПК должен поддерживать мобильный терминал. Обнаружено, что существующий интерфейс тесно связан с требованиями к отображению пользовательского интерфейса рабочего стола от дизайна. к реализации и не могут быть легко адаптированы к мобильному терминалу. , точно так же, как интерфейс рекомендации новостей на стороне ПК, поля интерфейса требуются на стороне ПК, но не на мобильном терминале H5.В это время корректировки выполняются на уровне BFF в соответствии с разными терминалами и разными (или меньше) также могут быть сделаны вызовы API (агрегация) для уменьшения HTTP-запросов.
❝Резюме: Когда вы разрабатываете API, между разными терминалами будут разные различия, и их доступ к API, предоставляемому сервером, также имеет свои особенности, которые нужно обрабатывать по-разному. В настоящее время, если вы решите изменить исходный интерфейс, модификация приведет к соединению и разрушит его единственную ответственность.
❞
1.3 Болевые точки BFF
- Повторная разработка: при разработке приложения BFF для каждого устройства оно также столкнется с некоторыми повторяющимися проблемами разработки и увеличит стоимость разработки.
- Проблемы с обслуживанием: Необходимо поддерживать различные приложения BFF. В прошлом интерфейсу не нужно было заботиться о параллелизме, но теперь давление параллелизма сосредоточено на BFF.
- Сложные ссылки: процесс становится громоздким.После введения BFF, интерфейсные и серверные процессы исследований и разработок должны выполняться одновременно, многосторонняя публикация и взаимозависимость, что приводит к громоздким процессам.
- Пустая трата ресурсов: если слоев BFF слишком много, занятость ресурсов станет проблемой, и ресурсы будут потрачены впустую, если не будет гибкого масштабирования и расширения.
Я видел «счастливую беду» под слоем BFF на предыдущем PPT.
1.4 Какие решения могут решить болевые точки традиционных BFF?
- Включая ряд операций развертывания эксплуатации и обслуживания, таких как балансировка нагрузки, резервное резервирование, мониторинг и оповещение приложений, которые должны быть связаны с внешним интерфейсом.
- Как унифицировать управление, эксплуатацию и техническое обслуживание, повысить скорость выпуска и снизить затраты на эксплуатацию и техническое обслуживание
ответ:Serverless
2.Serverless
❝мы можем поставить
❞Serverless
Он разбирается на два слова «сервер» и «меньше», что буквально означает «менее серверный или бессерверный», что ослабляет концепцию серверной части, эксплуатации и обслуживания. Текущие зрелые бессерверные облачные продукты в основном включают Amazon Lambda, Google Cloud Function, Azure Function, AliCloud Функции вычислений, Tencent CloudBase и т. д.
2.1 Эволюция бессерверных технологий
2.2 Что такое бессерверное
❝Serverless = Faas (Function as a service) + Baas (Backend as a service)
❞
2.3 Облачные функции (Faas)
❝FaaS (Function-as-a-Service) — это платформа, на которой поставщики услуг предоставляют пользователям функции разработки, запуска и управления этими функциями без создания и поддержки базовой структуры.
❞
Учащиеся, работающие с клиентами, вызывают сервисы Faas так же просто, как вызов локальных функций. Как показано ниже, это простая демонстрация облачной разработки апплета в Tencent Cloud. cloudfunction — это метод, используемый для определения облачных функций.
2.4 Бэкенд как услуга (BaaS)
❝Бэкэнд BaaS (Backend-as-a-Service) как услуга, включая компоненты серверной службы, это сторонняя служба на основе API, используемая для реализации основных функций в приложениях, включая часто используемые базы данных, хранилище объектов, очереди сообщений, услуги по регистрации и т.д.
❞
Например, следующие сервисы в разработке Tencent Cloud 👇:
-
Облачный вызов апплета WeChatwx-server-sdk
-
База данных облачной разработкиwx.cloud.database
2.5 Бессерверная архитектура
2.6 Преимущества бессерверного доступа
- Унифицированная среда: нет необходимости создавать серверную среду, поддерживать согласованность среды каждой машины. Механизм бессерверной обработки может воспроизводиться естественным образом
- Pay-as-you-go: мы платим только тогда, когда код работает, без траты неиспользуемых ресурсов
- Богатый SDK: существуют полные вспомогательные службы, такие как облачная база данных, облачное хранилище, облачная очередь сообщений, облачное аудио и видео, облачные службы ИИ и т. д.
- Эластичное масштабирование: нет необходимости оценивать трафик, заботиться об использовании ресурсов, резервировать аварийное восстановление, расширять машины и динамически увеличивать пиковый трафик в соответствии с трафиком.
❝«Бессерверная технология на самом деле представляет собой подрыв модели фронтенд-исследований. По сравнению с предыдущим чисто фронтенд-методом НИОКР, бессерверность скрывает сложность базовой инфраструктуры, а серверные возможности платформизуются через FaaS, поэтому нам больше не нужно обратить внимание на детали эксплуатации, обслуживания и развертывания.Сложность разработки была упрощена, а границы групп фронтенд-разработки были расширены, что позволило им участвовать в разработке бизнес-логики, стать ближе и понять бизнес и производить более ценную продукцию».
❞
2.7 Недостатки бессерверных технологий
- Сильная привязка облачных производителей: они часто привязаны к другим облачным продуктам производителя, таким как хранилище объектов, очередь сообщений и т. д., а это означает, что вам нужно одновременно активировать другие службы, а стоимость миграции высока. Если вы хотите мигрировать основную исходную логику, вы не можете это сделать. , питомник должен быть рефакторинг
- Не подходит для длинных задач: функции облачной платформы будут ограничивать время выполнения функции, например, когда функция Ali cloud вычисляет максимальную продолжительность выполнения 10 мин.
- Время холодного запуска: когда функция запущена, выполнение контейнера и среды занимает определенное время. Для HTTP-запросов это может увеличить задержку ответа.
- Отладка и тестирование: разработчикам необходимо постоянно корректировать код, распечатывать журналы и отправлять их на функциональную платформу для запуска тестов, что приведет к затратам на разработку и затратам.
2.8 Сценарии бессерверных приложений
- Сценарий 1: нагрузка имеет пики и спады
Во время пиков и спадов машинные ресурсы должны быть заранее запланированы в соответствии с пиковым спросом, например, при регистрации в больнице.Предполагая, что прием назначается на 10:00 каждый день, пик будет в 10:00. одновременность этого пика, соответствующая производительность (Однако коэффициент использования машины значительно падает во время провала, что приводит к потерям из-за невозможности повторного использования ресурсов, в то время как бессерверные не нужно готовиться к пику, не нужно держать уровня воды и поддерживает эластичное масштабирование и расширение, которое может выполняться во время вашего пика.
- Сценарий 2: Запланированные задачи (отчет статистики и т. д.)
Во время простоя сервиса он может обрабатывать пакетные данные и генерировать отчеты по данным.Благодаря бессерверному методу нет необходимости покупать дополнительные ресурсы обработки с низким коэффициентом использования.Например, ранним утром каждого дня анализировать данные, собранные за предыдущий день, и генерировать отчеты.
- Сценарий 3: Разработка мини-программы (облачная разработка)
Например, при фактической разработке апплета WeChat, если мы не используем процесс получения openid для облачной разработки, а используем традиционный метод, вы знаете, что получение openid — очень громоздкий процесс, и внешний интерфейс должен получить значение кода через wx.login (зависит от времени). Затем перейдите в фоновый режим и используйте appsecret для вызова openid через значение кода.
❝Поскольку облачная функция развернута в Tencent Cloud, Tencent Cloud эффективно инкапсулирует аутентификационную часть облачного вызова, так что ваш интерфейс может легко реализовать защиту аутентификации без необходимости поддерживать сложный механизм аутентификации, так что авторы личных разработок и небольшие команды могут легче разрабатывать апплеты
❞
3 Резюме
❝Эта статья знакомит с концепцией, позже будет представлена дополнительная практика бессерверных технологий, студенты, заинтересованные в углубленном изучении, могут сначала понять следующую личную рекомендуемую литературу.
❞
- Yuque на «облачной» стороне: создание коммерческих приложений с полным стеком JavaScriptчитать
- Руководство по разработке приложений для бессерверной архитектурычитать
- Бессерверные технологии запускают новые технологические изменения во внешнем интерфейсечитать
- Начало работы с Serverless для фронтенд-инженеровчитать
- Как мы перешли от передовых технологий к опытным технологиям?читать
🌲Предыдущие статьи Соуса:
- Расскажите об инструментах ежедневной совместной работы для фронтенд-разработки
- данные формы внешнего интерфейса
- Как лучше управлять интерфейсом API
- Микро интерфейсные вещи
- передовой инжиниринг
- Внешний интерфейс Nginx
- Развертывание интерфейсной эксплуатации и обслуживания
Пожалуйста, выпейте 🍵 Не забудьте подключиться три раза~
1. После прочтения не забудьте поставить лайк 🌲 соусу, там есть 👍 и мотивация
2. Обратите внимание на интересные вещи в интерфейсе официального аккаунта и пообщайтесь с вами об интересных вещах в интерфейсе.
3. Статья размещена на GithubfrontendThingsСпасибо, Стар✨