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 命令来创建一个对象存储的存储桶资源。

组合更高维度的 Components

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

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

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

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

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

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

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

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

组合 Components 构建整个应用

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

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

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

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

准备好体验 Serverless Components 了吗?

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

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

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

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

Serverless Components 的下一步规划

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

Serverless Component 介绍和使用指南的更多相关文章

  1. 基于 Serverless Component 全栈解决方案

    什么是 Serverless Component Serverless Component 是 Serverless Framework 的,支持多个云资源编排和组织的场景化解决方案. Serverl ...

  2. 基于 Serverless Component 全栈解决方案 Ⅱ

    虽然之前的文章 基于 Serverless Component 的全栈解决方案 介绍了如何借助 Serverless Component 快速搭建 Restful API 后端服务 和 Vue.js ...

  3. 如何开发自己的第一个 Serverless Component

    前言 上一篇 基于 Serverless Component 的全栈解决方案 介绍 Serverless Component 是什么和如何使用 Serverless Component 开发一个全栈应 ...

  4. .NET Standard 2.0 特性介绍和使用指南

    .NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...

  5. .Net大局观(2).NET Core 2.0 特性介绍和使用指南

    .NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,系统地介绍了.NET Core 2.0及生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路径.提纲来用. ...

  6. .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南

    ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...

  7. .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南

    前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...

  8. .Net Core 2.0 生态(2).NET Core 2.0 特性介绍和使用指南

    .NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,介绍了.NET Core 2.0新特性.工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路 ...

  9. .Net Core 2.0 生态(1).NET Standard 2.0 特性介绍和使用指南

    .NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...

随机推荐

  1. Maven: 把聚合工程下的项目导入 Ecplise

    1.右键点击import 2.Import Existing Maven Projects 3.选择要导入的工程 4.完成

  2. 小米重新上锁[BL]

    解锁一时爽,bug火葬场.废话不多说,直接上教程. 首先安装 线刷工具:http://bigota.d.miui.com/tools/MiFlash2018-5-28-0.zip 解锁工具:http: ...

  3. 迭代器中set的使用

    今天对迭代器中的set方法进行了一下简单的使用,由于之前使用过list方法,所以将他与list进行了一下对比. list中加入对象时不会进行查重,也就是只要是一个符合的对象就可以加到list中,而对于 ...

  4. List<E> 、Set<E>和Map<K,E>的简单应用

    题目一: 创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集. 代码: List_Test.ja ...

  5. [redis读书笔记] 第一部分 数据结构与对象 对象特性

    一 类型检查和多态    类型检查,即有的命令是只针对特定类型的,如果类型不对,就会报错,此处的类型,是指的键类型,即robj.type.下面为有类型检查的命令: 对于某一种类型,redis下底层的实 ...

  6. javascript json语句 与 js语句的互转

    //var data = "weihexin" //var data = ["weihexin", 1] var data = {name:"weih ...

  7. javascript获取一个字符串的长度(包含中文)

    /* getStrLen(str):获取一个字符串的长度(包含中文) */ function getStrLen(str){ let len = 0, i, c; for (i = 0; i < ...

  8. stm32f407使用Keil uV5建立工程日志

    目录结构 Common           ——包括延时函数等公用函数 STM32F4_FWLIB     ——固件库 Project             ——UV5工程相关文件 Main     ...

  9. 获取出口IP地址

    curl https://www.ipaddress.com/ |grep "My IPv4 Address" # 推荐 curl icanhazip.com curl www.t ...

  10. 软件bug描述(android)

    1.bug主题:主要操作+bug主题 主题要简单明了,即开发一看主题就知道该问题. 2.描述: 作用:便于开发重现和定位缺陷的 2.1前置条件 2.2操作步骤 2.3预期结果 2.4实际结果 2.5备 ...