Aprenda a aprender Serverless | ¿Cómo resolver el problema del desarrollo y despliegue de aplicaciones serverless?

Autor: Jiang Yu|Administrador de productos sin servidor en la nube de Alibaba

Breaking the game: la falta de un sistema de cadena de herramientas

En el artículo anterior , " Aprenda a aprender Serverless | Conociendo Serverless por primera vez" , mencionamos que Serverless está cambiando el modelo y el proceso de desarrollo de software futuro, y se prevé que lidere la próxima década de computación en la nube. pero a pesar de ello, los desarrolladores todavía tienen muchas preocupaciones a la hora de optar por usar Serverless, y la más preocupante es sin duda la falta de un sistema de cadena de herramientas.

La llamada falta de cadena de herramientas: Por un lado, la cadena de herramientas en el mercado no es perfecta, lo que dificulta el desarrollo y la implementación, lo que aumenta los costos; La falta de cadena de herramientas hace que sea más difícil para los desarrolladores de Serverless que están preocupados. sobre estar obligado por los fabricantes a desagregarse de los fabricantes.

En octubre de 2020, la Academia de Tecnología de la Información y las Comunicaciones de China publicó el primer "Informe de encuesta de usuarios nativos de la nube" en China, que señaló claramente que antes de usar la arquitectura sin servidor, el 49 % de los usuarios consideró los costos de implementación, el 26 % de los usuarios consideró el proveedor vinculante, y el 24% de los usuarios Los usuarios consideran las herramientas relevantes y el grado de perfección Lo que se revela detrás de estos datos es en realidad la fuerte demanda de los desarrolladores para mejorar la cadena de herramientas.

Aunque algunos desarrolladores piensan que es relativamente más fácil comenzar con la arquitectura sin servidor a través de la operación de pantalla blanca y, hasta cierto punto, es más conveniente crear y actualizar funciones a través de las consolas de varios proveedores de nube. Pero es innegable que las herramientas de desarrollo sin servidor en realidad tienen un valor y funciones más importantes hasta cierto punto, como:

  • A través del andamiaje, se pueden crear rápidamente aplicaciones con arquitectura sin servidor;

  • Durante el proceso de desarrollo, la depuración de aplicaciones se puede realizar a través de herramientas de desarrollo;

  • Una vez que se completa el desarrollo, la aplicación se puede implementar en línea con un solo clic a través de herramientas para desarrolladores (puede incluir varias funciones y los productos BaaS correspondientes);

  • En la etapa de operación y mantenimiento del proyecto, utilice herramientas de desarrollador para observar el proyecto y localizar problemas;

Si es necesario lograr un despliegue científico, generalmente es necesario liberar aplicaciones de arquitectura serverless a través de algunas plataformas/herramientas de CI/CD; sin embargo, en la actualidad, las herramientas de desarrollo en el campo serverless son complejas y diversas, y muchas funciones no son compatibles. entre sí Imperfecto, básicamente se manifiesta en:

No existe una herramienta de desarrollo sin servidor absolutamente unificada y consistente, cada fabricante tiene su propia herramienta de desarrollo, y la forma de uso y el comportamiento son diferentes, lo que lleva a la investigación del desarrollador antes del desarrollo, la depuración durante el desarrollo, después de la implementación, operación y mantenimiento y otros aspectos. enfrentar desafíos severos;

La mayoría de las herramientas de desarrollo sin servidor son más herramientas de orquestación e implementación de recursos, y en realidad no pueden llamarse herramientas de desarrollo o herramientas de operación y mantenimiento, especialmente cómo garantizar la coherencia de los entornos en línea y fuera de línea cuando se depura en el estado de desarrollo;

No existe una solución unificada y completa sobre cómo depurar rápidamente el negocio en el estado de operación y mantenimiento, cómo solucionar errores más fácilmente, localizar problemas, etc., lo que conduce al costo de aprender y usar la arquitectura sin servidor. muy alto para los desarrolladores;

En resumen, es particularmente importante desarrollar un sistema de cadena de herramientas sin servidor que pueda mejorar la eficiencia del desarrollo de aplicaciones sin servidor y reducir la dificultad de usar la arquitectura sin servidor.Es precisamente por esto que surgió Serverless Devs.

Serverless Devs es una plataforma de desarrollo sin servidor abierta y de código abierto dedicada a proporcionar a los desarrolladores un poderoso sistema de cadena de herramientas. A través de esta plataforma, los desarrolladores no solo pueden experimentar productos sin servidor de múltiples nubes con un solo clic, implementar proyectos sin servidor a alta velocidad, sino también administrar proyectos en todo el ciclo de vida de las aplicaciones sin servidor y pueden combinar Desarrolladores sin servidor con otras herramientas/plataformas muy simple y rápidamente Mejore aún más la eficiencia de I + D, operación y mantenimiento.

Características de los desarrolladores sin servidor

无厂商锁定: 得益于功能的可插拔特性,可以非常简单的支持不同云厂商的项目部署,或者一键部署到不同云平台。目前 Serverless Devs 已经支持了阿里云函数计算、AWS Lambda 、百度智能云函数计算 、华为云函数工作流 、腾讯云云函数等多云的 FaaS 产品;

开源形式建设: 项目通过开源代码,开放生态进行建设,开发者可以随时查看和参与 Serverless Devs 开发者工具的贡献,也可以随时随地进行相关组件和应用的贡献。当然,除了这种开源开放的形态,我们也鼓励一些企业级团队,通过 Serverless Registry Model 建设自己的私有 Registry 以定制化某些不便公开的自定义组件;

关于如何快速完成 Serverless Devs 应用开发并发布到 Regsitry 可查阅相关文档:

​https://github.com/Serverless-Devs/Serverless-Devs/discussions/439​

简单快速上手: 通过开放 Serverless Registry 的模型/规范,该项目可以通过应用的模式,为开发者提供多种形式,多种领域以及多种场景的上手案例,帮助开发者快速了解、学习、深入、上手 Serverless 架构,例如新手引导中的 Serverless:Hello World;人工智能:目标检测;传统框架:基于 Django 的博客项目等项目;

场景体验地址:

​https://developer.aliyun.com/adc/expo/serverless​

功能灵活可插拔: Serverless Devs 开发者工具本身,不具备任何业务能力,所有的业务能力均是通过组件化的形式,进行可插拔式使用,并且每个组件可以根据需要,自定义相对应的命令和功能;开发者可以在一个应用中,选择不同的组件完成对应的业务能力,以满足对不同模块的诉求;

应用全生命周期管理: 通过组件化的支持,Serverless Devs 可以在应用的全生命周期发挥重要作用,以阿里云函数计算的 FC 组件为例,开发者可以在项目创建、项目的开发、调试、可观测性等多个层面进行项目的建设和管理;

良好的集成与被集成性: 项目具有非常好的集成性与被集成性,可以通过组件化的支持,非常简单的与传统的生态进行有机结合。同时,Serverless Devs 开发者工具也可以非常简单的被集成到海量的自动化流程中,例如 CI/CD 文档中,就举例了与 Github Action 的集成、与 Gitee Go 的集成、与 Jenkins 的集成等平台集成的案例;

总的来说,Serverless Devs 是一个开源开发的 Serverless 领域的工具链项目,它不仅仅表示单纯的某个命令行工具,更在一定程度上指的是一个完整的工具链体系。

社区网址一览(可滑动):

社区官网:http://www.serverless-devs.com/
项目仓库:https://github.com/Serverless-Devs/Serverless-Devs
ServerlessDesktop桌面客户端:https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.html
Serverless应用开发者套件:http://serverless-dk.oss.devsapp.net/docs/tutorial-dk/intro/react
Serverless Devs CLI:https://serverlessdevs.resume.net.cn/zh-cn/cli/index.html
Serverless Hub应用中心:https://serverlesshub.resume.net.cn/#/hubs/special-view
复制代码

Serverless Devs 的成长之路

  • 2020 年 10 月 23 日,Serverless 开发者平台 Serverless Devs 正式开源;
  • 2020 年 11 月,Serverless Devs 被 CNCF Landsacpe 收录, 成为国内首个进驻的 Serverless 工具;
  • 2020 年 11 月,入围 InfoQ 评选 2020 年度十大开源新锐项目;同年,Serverless Developer Meetup 首召开,成 Serverless 开发者技术新渠道;
  • 2020 年 12 月,ServerlessDevs 下载次数突破 5000,组件 & 应用累计使用次数突破 1w+;
  • 2021 年 4 月,Serverless Developer Meetup 在上海召开,并正式发布 Serverless Devs 2.0 版本;
  • 2021 年 7 月,Serverless Developer Meetup 在杭州召开,阿里云函数计算团队在会上正式发布端云联调、桌面客户端等功能;
  • 2021 年 8 月,Serverless Devs 下载次数突破 2w+;
  • 2021 年 10 月,在 2021 OpenInfra Days China 会议上,Serverless Devs 带来了《Serverless Devs:Serverless 全生命周期的工具链建设》的主题演讲;
  • 2021 年 12 月,Serverless Developer Meetup 在深圳召开,并尝试性的对外展示了 Serverless Devs Model;

Serverless Devs 的设计哲学

Serverless Devs 的模型设计原则,是希望可以通过更加简单、科学、规范的 Serverless 工具链体系,让开发者更专注于业务逻辑,提升 Serverless 应用开发、部署、运维效率。

通过该模型,开发者可以通过一种更灵活、更通用的方法使用不同云厂商以及开源的 Serverless 产品,进而更高效、更简洁、更便利的实现 Serverless 应用管理。在 Serverless Devs 中,通常拥有两个角色:

开源贡献者: 开源贡献者将按照 Serverless Package Model 进行组件/应用的开发,并将内容发布到 Serverless Hub 中,即可以被更多人所使用;

Serverless 开发者: 通过开发者工具 (包括命令行工具以及桌面端等工具),进行应用的初始化,以及组件的使用;通过开发者工具,将业务按照预期部署到线上。

在这样一个 Serverless Devs 的应用框架上,不难发现可以和其他任何一种模式/生态,具有相似的命名以及模块:

Serverless Hub: 类似于一种组件、应用、案例中心;类似于 Docker Hub 等;

Serverless Registry: 类似于一种组件、应用的管理工具或者规范模型;类似于 Python 生态中的 Pypi,类似于 Node.js 生态中的 NPM;

下面我们再详细地介绍一下,在 Serverless Hub 中,其实是有两种形态的 Package (组件和应用),同时通过上图也可以看到两个比较明显的词汇:Component 和 Application:

  • Component: 指的是组件;是由 Package developer 开发并发布的符合 Serverless Package Model 规范的一段代码,通常这段代码会在应用中被引用,并在 Serverless Devs 开发者工具中被加载,并按照预定的规则进行执行某些动作。例如,将用户的代码部署到 Serverless 平台;将 Serverless 应用进行构建和打包;对 Serverless 应用进行调试等;

  • Application: 指的是应用,可以由 Package Developer 公开发布到 Registry,以供更多人学习和使用,例如某位贡献者贡献了一个猫狗识别的案例到 Registry;也可以由 Serverless Developer 开发,例如某人开发了一个人脸识别的应用;通常情况下一个应用可以引用一个或者多个组件,并通过 Serverless Devs 开发者工具部署到 Serverless 平台,例如我开发了一个猫狗识别的应用,在这个应用中引用了 Lambda 组件帮助我将部分业务逻辑部署到 FaaS 平台,同时我也引用了 Website 组件帮助我把前端业务代码部署到对象存储中。

如果说 Serverless 提升了传统应用的开发效能,那么 Serverless Devs 开发者工具就是提升了 Serverless 应用开发的效能。随着时间的发展,Serverless Devs 也从 1.0 版本 到了 2.0 版本,详情可点击阅读往期文章​​《Serverless Devs 2.0 全新发布,让 Serverless 应用开发更简单》​​。

结语

本篇介绍了 Serverless Devs 的前世今生,实际上,我们一直希望可以通过 Serverless Devs 的工具链模式和思路,让各位通过该平台能够一键体验多云 Serverless 产品,极速部署 Serverless 项目;为应用的开发,传统项目上 Serverless 架构提供巨大的便利和更科学的管理。在下篇文章中,我们会带领各位一起实现 Serverless Devs 的基础入门,十分简单,并会就一些功能案例进行刨析解读,欢迎关注 Serverless 公众号连续订阅该系列,感兴趣的小伙伴也可以钉钉扫码加入我们的 Serverless 开发者技术学习群,我们下周同一时间不见不散。

近期热门

# Comience rápidamente con Serverless #

A medida que la popularidad de serverless continúa aumentando, más y más personas esperan comenzar rápidamente en el trabajo real. Con el fin de permitir que más principiantes sin servidor aprendan realmente el conocimiento teórico de la tecnología sin servidor y apliquen de manera flexible la tecnología sin servidor en su trabajo de acuerdo con sus necesidades, el equipo sin servidor de Alibaba Cloud ha lanzado un mapa de tecnología.Este curso incluye varias formas de frecuencia de computadora, manos- en experimentos, libros electrónicos, transmisiones en vivo y proyectos de código abierto. contenido, para que los desarrolladores puedan aprenderlo y usarlo de inmediato, y disfrutar de la bonificación de tecnología sin servidor cuando se ejecuta. ¡ Haz clic  en " aquí " para aprender!

Supongo que te gusta

Origin juejin.im/post/7082851460324524040
Recomendado
Clasificación