Serverless Component 介绍和使用指南

Stella981
• 阅读 701

Serverless Component 是什么,我怎样使用它?

Serverless Component 介绍和使用指南

Serverless Components 的目标是什么?

我们希望通过 Serverless Components 让广大开发者更加便捷,平滑的联动云厂商提供的种种服务。

当前,构建一个应用意味着你可以挑选种种 SaaS 服务并且管理他们(例如 serverless 服务),之后将其整合为一个适用的解决方案。这很棒,因为这样做更快并且开销更小。

但这样的做法也会十分复杂。为了将这些服务整合在一起,你需要大量的手工配置,并且当前没有很多工具可以帮你来构建和管理自己的应用架构。

初识 Serverless Components

Serverless Components 目标就是改变当前开发者面对的这一切。

针对各个云厂商/SaaS 厂商的基础服务,Components 提供了编排这些资源和业务代码的统一标准。就像乐高积木一样,你可以使用多个 Components 非常轻松的搭建你的应用。

Serverless Components 还提供了完善的,由社区贡献驱动的开发者生态。你可以很方便的浏览和优化这些 Components。最终的结果就是你可以极大的节省开发时间,不需要从头开始构建你的 Full Stack 应用,取而代之的是可以利用已有的组件快速构建并按自己的需求调整。

Serverless Components 运行机制

接下来让我们来看一下,怎样使用 Serverless Components 来快速构建一个完整的 Serverless 应用。

统一的体验

所有的云服务都可以被封装为一个 Serverless Component。

每个 Component 都支持对相应云服务的创建,回滚和移除操作,这些都可以通过 Serverless Components CLI 实现。

开发者只需要配置 Components 提供该服务所需的最少配置,其余的都会采用默认配置的方式提供。这样可以更方便的创建对应的资源。引用一个 Component 的时候,只需要在 serverless.yml 文件中增加 “components” 属性,并且引用这个 Component,如图所示。

Serverless Component 介绍和使用指南

如上所示,可以通过运行 serverless 命令来创建一个对象存储的存储桶资源。

组合更高维度的 Components

假设你希望在腾讯云部署一个基于 Serverless 架构的 Express.js 框架。为了完成这个框架的搭建,你需要在 API 网关服务中创建新的 API ,并且用这个 API 来调用云函数服务;为了完成基本的数据操作,还需要创建、连接并且调用数据库服务(假设为 PostgreSQL )进行增删改查。

我们当前支持了该框架所需的所有 Components 。每个组件都可以通过十分简单参数进行配置,你可以根据这些配置编排底层对应的云资源,并且快速、方便的进行服务的部署。

所有的 Serverless Components 都可以结合在一起,并且构成一个更大、功能更丰富的 Component。

我们把这三个基础的 Components (PostgreSQL、API Gateway、SCF)组合起来构造一个 Express.js 的框架,并且他们将组成一个新的、更高维度的 Express Component。如图所示,这些配置也都会在 serverless.yml 文件中体现。

Serverless Component 介绍和使用指南

根据这张图可以看出 Components 的价值。当你构建一个 Express 框架的时候,你需要做很多准备工作,需要开通、配置很多产品,比如创建函数,配置 REST API,配置和连接 DB等。

但事实上你可以通过抽象这些基础 Components 来节省很多类似的配置工作,并且 Express.js 这些框架组件可以使用很多默认配置进行部署,并且只暴露最简单的,面向业务的配置项。

Serverless Component 介绍和使用指南

此外,你还可以在其他项目中复用这个 Express Component。或者其他的开发者也可以在自己的项目中使用它,并且只需要根据自己的业务简单调整下配置。例如,他们可能会修改 REST API 的路径或者支持的协议等。

Serverless Component 介绍和使用指南

最终,这些更高维度的 Components 变成来各种常用场景,可以被开发者快速使用并且复用、整合。

组合 Components 构建整个应用

现在让我们从更加宏观的角度来看这个 Express 框架。当你希望部署整个应用的时候,需求会变得更加复杂和全面。例如你需要对动态资源和静态资源做隔离,优化页面的访问速度,提供更丰富的 API 等。

别担心,你依然可以利用 Serverless Components 进一步扩展和完善你的应用。只需要把这个高维度的 Component 和更多其他 Components 组合,就可以构建更加完整的应用。如下图所示,一个完整的 Full-Stack 应用可以通过持续组合 Serverless Components 实现。

Serverless Component 介绍和使用指南

像所有其他的 Components 一样,其他开发者也可以轻松的复用这个 Full-Stack 组件,并且只需要暴露出最简单的配置信息。

我们认为 Serverless 是围绕场景的,无需对基础资源做过多对配置和管理。我们希望 Components 可以让基础设施对开发者更加透明,开发者可以专注于业务逻辑和场景,并且通过开源社区的方式,让这些场景可共享、可复用,同时进一步促进开发者生态。

准备好体验 Serverless Components 了吗?

刚刚我们演示了一个全栈应用的部署方式,如果你希望进一步了解 Components, 欢迎访问 Serverless Components 的 Github 主页,并且查看当前支持的场景模板

我们当前提供了几种基础 Components,你可以灵活组合他们,并且创建自己所需的高维度的应用场景。我们十分欢迎对 Serverless Components 仓库 的开源贡献,也非常期待开发者的建议和反馈!

如果你对 Serverless Components 感兴趣,这里有一些实践文章可以进一步参考:

当前 Serverless Component 也支持多语言开发框架的快速部署,可以移步组件页面进一步查看:

Serverless Component 介绍和使用指南

Serverless Components 的下一步规划

我们相信 Components 可以带来非常理想的 Serverless 开发体验,并且我们计划将该能力和当前的 Serverless Framework 整合在一起。此外,我们计划提供公共的 Components 注册中心,通过该能力,开发者可以更加迅速的进行部署,并且也更方便进行版本管理和团队协作。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这