Предварительное исследование облачной разработки — упрощенная модель разработки мини-программ 丨Конференция разработчиков Nuggets

база данных внешний интерфейс Апплет WeChat Тенсент Эксплуатация и обслуживание
Предварительное исследование облачной разработки — упрощенная модель разработки мини-программ 丨Конференция разработчиков Nuggets

Ли Чэнси, старший инженер Tencent Cloud. После выпуска в 2014 году он присоединился к Tencent AlloyTeam и отвечал за такие проекты, как QQ group, Fantasia Live и Tencent Documents. Присоединился к команде разработчиков Tencent Cloud в 2018 году. Сосредоточьтесь на оптимизации производительности, инжиниринге и небольших программах.Вейбо | Знай почти | Github

Оригинальная ссылка

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

Боль закулисной разработки мини-программ

Первый — это головная боль, почему она болит?

Поскольку облачные услуги, предоставляемые поставщиками облачных услуг, такими как Tencent Cloud, становятся все более и более удобными, для предприятий стала общей тенденцией переходить в облако. Но все еще есть много отличий от простого развертывания страницы на облачной виртуальной машине до действительно комплексного облачного развертывания. Чтобы по-настоящему реализовать комплексную облачную миграцию, вам нужно понять многие вещи.Когда вы впервые сталкиваетесь с этими концепциями, вы изучаете их одну за другой, что перегружает вас и часто отвлекает от вашего бизнеса. Например, после того, как я пришел в Tencent Cloud, чтобы лучше разбираться в облачных сервисах, я записался на курс по Tencent Cloud. Эта серия курсов разделена на три курса: облачный архитектор, облачная разработка и облачная эксплуатация и обслуживание.Они также разделены на элементарные, промежуточные и продвинутые.Чтобы прояснить эти концепции знаний, требуется много времени, а также много времени, чтобы делать эксперименты на компьютере. Так что для разработки действительно не просто разобраться досконально, и точно голова закружится.

Во-вторых, боль во плоти, особенно ваш босс.

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

Третье — боль в почках.

Все мы знаем, что развитие — это работа по почкам. Например, разделение переднего и заднего концов, которое было популярно в последние годы, хотя и требует специального персонала, привело к проблеме регулировки суставов, что также увеличивает нагрузку на почки.

Вот список из трех проблем, вызванных разделением передней и задней частей.

  1. Полномочия и обязанности часто не ясны, существует много критических позиций, которые трубы могут легко привести к Whangling.
  2. Время общения увеличивается, ведь работают ведь два человека, а общения требуется много
  3. Помимо связи, отладки кода с обеих сторон также требуется, чтобы увидеть, если данные и дисплей не работают. На этот раз также очень неконтролируемый, особенно если окружающая среда особенно сложна, это не только неприятно настроить, но и очень раздражающий.

Бессервисная разработка небольших программ — тренд будущего

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

Так что же такое бессерверная разработка? без обслуживания, также известный какServerless.ServerlessЭто все еще находится в относительно ранней стадии, и в настоящее время нет авторитетного и официального определения.Разные люди и компании имеют разные мнения.Сегодня я не буду много говорить об этом. Как подсказывает название,ServerlessЭто означает, что при разработке приложения больше не нужно учитывать аппаратную инфраструктуру, такую ​​как сервер.ServerlessПрименение архитектуры в основном зависит от фоновых сервисов, предоставляемых поставщиками облачных услуг, такими как Tencent Cloud. Например, бессерверные облачные функции, облачные базы данных, сервисы хранения объектов и т. д. Проще говоря, это равносильно открытию фруктовой лавки по продаже фруктов: раньше нужно было арендовать витрину, заниматься водой и электричеством, украшать фасад. Сейчас такие уже не нужны, вы арендуете полку или ящик в супермаркете, который уже обустроил для вас разное оборудование, если продажи хорошие, вы можете арендовать большую, а если нет, то можете арендовать маленький.Одна точка, в любое время, в любом месте с вашим сердцем, очень гибкий.

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

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

Как решить только что упомянутые болевые точки серверной разработки?

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

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

Третье — переход от front-end инженеров к full-stack инженерам. Благодаря бессерверной разработке фронтенд-инженеры могут безопасно и эффективно оперировать некоторыми данными и логикой, с которыми раньше отваживались работать только серверные части.Если разрабатываемое приложение такое же легкое и простое, как небольшая программа, его можно полностью контролировать. Выполняется фронтенд-инженерами, если это не особенно сложно, может потребоваться только вмешательство серверной части. Это также избавляет от упомянутой ранее совместной отладки внешнего и внутреннего интерфейса.

Облачная мини-программа

Сказав так много концепций и преимуществ безсервисной разработки, какие работы есть у Tencent Cloud в области безсервисной разработки небольших программ? Это то, на чем я хочу сосредоточиться сегодня, разработка облачных апплетов, это лист ответов, переданный после совместных исследований и разработок Tencent Cloud и WeChat.

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

旧开发模式

Во-первых, это контраст между режимом разработки и архитектурой. До выхода облачной модели разработки старая модель фоновой разработки апплетов была на картинке выше.При отправке запросов на стороне апплета часто приходится вводить дополнительные пакетные.SDK, а затем вам нужно настроить большое количество продуктов для эксплуатации и обслуживания на стороне облачных сервисов, чтобы сделать продукты с очень хорошей производительностью и доступностью. Контент, о котором должны заботиться разработчики, от интерфейса и сервера до эксплуатации и обслуживания.

云开发模式

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

腾讯云控制台

Второй — сравнение платформ управления ресурсами. В прошлом вам нужно было управлять облачными ресурсами, и вам нужно было найти нужные продукты среди десятков или сотен продуктов на панели Tencent Cloud.

云开发控制台

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

旧开发模式-上传文件

В-третьих, давайте сравним ресурсы вызова на стороне апплета. Возьмите загрузку файлов в качестве примера, в старом режиме разработки апплет, который вам нужно использоватьwx.chooseImageа такжеwx.uploadFileДля интерфейса апплета бизнес-инфраструктура, маршрутизация и логика записи должны быть развернуты в фоновом режиме и загружены в хранилище объектов Tencent Cloud.Также необходимо учитывать производительность и безопасность этой фоновой службы.Что делать, если количество пользователей достигает пика сильно?Что если произойдет хакерская атака?Управляйте.

云开发模式-上传文件

Пример облачной разработки предельно прост: с помощью дюжины строк кода вы можете написать безопасную и производительную логику загрузки кода!

Предположим, что разработчик — новичок, который понимает толькоJavaScriptБазовая, по сравнению с традиционной моделью разработки, фронтальная разработка занимает 2 минуты, совместная отладка занимает 1 час, а фоновая структура, логика и совместная отладка занимают в общей сложности 8 часов.На изучение операции уходит целый день и техническое обслуживание, и это занимает в общей сложности 1142 минуты. По сравнению с моделью облачной разработки, которую можно выполнить всего за 2 минуты, это в 571 раз больше, чем разработка в облаке!

旧开发模式-插入数据

Наконец, давайте сравним вставку данных на сервер. Сервер здесь относится к облачным функциям и серверам, которые вы купили сами. В старом режиме апплет используетwx.requestПосле отправки запроса в фон, и настройки фреймворка, маршрутизации и других сервисов в фоновом режиме запускается логика вставки данных в инстанс Tencent Cloud MongoDB.Естественно необходимо учитывать производительность и безопасность сервиса .

云开发模式-插入数据

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

Если предположить, что разработчик является новичком, то, в отличие от традиционной модели разработки, на фронтенд-разработку и совместную отладку уходит 31 минута, на серверную часть — 6 часов на развертывание логики разработки сервиса и 30 минут — на совместную отладку. занимает около 10 часов, что более чем в 1000 раз больше, чем у модели облачной разработки.

Сравнивая старую и новую модели разработки с точки зрения кода и затрат времени, мы можем обнаружить, что разработка в облаке абсолютно сокрушительна.

Техническая сила Mini Program Cloud Development

Теперь все знают, что безсервисная разработка — это новая тенденция развития в будущем, и различные преимущества, которые дает разработка небольшого программного облака с бессервисными характеристиками, так какие технологии Tencent Cloud использует за кулисами для его поддержки?

С точки зрения архитектуры, операция запроса начинается со стороны апплета через бэкэнд WeChat на уровень службы облачной разработки Tencent Cloud.Эти базы данных, хранилище и облачные функции, вызываемые уровнем службы облачной разработки, фактически основаны на различных основах. Облака Tencent. По этому пути запроса WeChat отправит пользователям апплетаopenid, АпплетыappidПринесите его напрямую и запишите информацию о пользователе в облачную функцию, данные и метаинформацию файла, заложив основу для более удобного контроля разрешений.

Кроме того, поскольку основные ресурсы Tencent Cloud используются повторно, они, естественно, обладают характеристиками облачных ресурсов. Например, доступ к хранилищу осуществляется автоматически.CDNУскорение, база данных, естественно, имеет такие функции, как автоматическое резервное копирование и восстановление без потерь.Облачные функции обладают характеристиками эластичного масштабирования и доступности в нескольких местах и ​​могут реагировать на услуги с различными пиками. На уровне службы облачной разработки мы также выполнили балансировку нагрузки и подключились к серверной части WeChat поблизости, чтобы повысить производительность.

В настоящее время облачная разработка официально запущена на 5 дней (Примечание: релиз состоится поздно вечером 10 сентября, а 16 сентября состоится Nuggets Technology Conference).APIОдин апплет с наибольшим ежедневным объемом звонков достиг1000W+Каково понятие громкости звонка? Как правило, только BAT и некоторые небольшие программы, разработанные единорогами, которые часто используются, могут достичь этого уровня вызова. Поэтому более 90% небольших программ без проблем пользуются нашим сервисом.

Рекомендуемая практика

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

Первый пункт — это рекомендуемые методы манипулирования ресурсами.

小程序端

服务端

С точки зрения операционных ресурсов на стороне апплета, мы используем собственный интерфейс апплета для работы.Однако, когда операционные ресурсы на стороне апплета, из соображений безопасности, в основном рабочее хранилище, база данных и другие ресурсы могут только записывать собственные ресурсы пользователя. Чтение данных основано на правилах, определяющих наличие разрешения. Что касается операционных ресурсов на стороне сервера, мы используемwx-server-sdkилиtcb-admin-nodeЧтобы справиться с этим, первый инкапсулируется на основе возможностей второго. Используйте эти два на стороне сервераSDKДля управления ресурсами у вас есть полномочия на уровне управления, что означает, что вы можете управлять всеми ресурсами.

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

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

В-третьих, рекомендуется использовать облачное хранилище для хранения статических ресурсов, необходимых в апплете. Поскольку хранилище, разработанное в облаке, естественным образом поставляется сCDNускорить. Например, в хранилище панели управления адрес загрузки, полученный в реквизитах файла,CDNАдреса, которые были ускорены.

Четвертый момент — использование облачных функций. В настоящее время облачные функции не поддерживают слишком трудоемкие и сложные операции.Текущий период ожидания составляет 20 секунд, а размер пакета функций контролируется на уровне около 20M. Но на самом деле это уже может обеспечить более 80% спроса, по мере постепенной стабилизации сервиса мы будем рассматривать возможность дальнейшего смягчения этих ограничений.

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

Например, вот традиционное использование облачных функций: одна облачная функция выполняет одну задачу и сильно отделена друг от друга.

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

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

Другое использование облачной функции заключается в том, что ее можно использовать в качестве промежуточного маршрута, а затемappid, openid, перенаправленные в исходную службу. Здесь мы возьмем альбом Tencent в качестве примера. Как это работает. Например, Tencent Album ранее интегрировала функцию комментариев в облачную разработку, но некоторые чувствительные операции, такие как удаление и редактирование комментариев, отправляют этот запрос в облачную функцию, а затем облачная функция перенаправляет информацию о пользователе на исходный фон альбом, а затем пользователь Есть ли у вас разрешение вернуться, чтобы сообщить облачной функции, если у вас есть разрешение, удалить комментарий в облачной функции.

Наконец, если вы хотите вызвать облачную функциюAIServices и некоторые операции, связанные с WeChat, вы можете использовать два инкапсулированных мнойSDK. Первыйimage-node-sdkОхват является относительно полным и охватывает все сервисы интеллектуальных изображений Tencent Cloud, следующиеwx-js-utils, также предоставляет несколько часто используемых интерфейсов, таких как оплата WeChat, шаблоны сообщений и сбор информации о пользователях.

Вы можете подписаться на мой Weibo илиGithubПолучите информацию или техническую информацию о последних разработках в области облачных вычислений.