作者:Anchor
我们在开发后端服务过程中,有很多重复的逻辑与功能。有时候通用逻辑占用的时间和精力,会接近甚至超过业务逻辑。
这些通用的逻辑在很多项目之中都是高度相似的,比如登录注册,实时通信,权限管理等。
如果将这些通用功能透明化,以组合的方式去使用,那么我们开发时只需要聚焦业务逻辑,从而加速我们的迭代。而这就是我们Function Store想要实现的目标。
要实现如此之秀的功能背后要靠什么支撑呢?我们需要了解几个前置的知识。
1.前置知识
函数即服务(FaaS: Function as a Service)
FaaS是一种事件驱动的由消息触发的服务,FaaS供应商一般会集成各种同步和异步的事件源,通过订阅这些事件源,可以突发或者定期的触发函数运行。
我们知道现在流行的微服务(MicroService)是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,而还有一种更加碎片化的软件架构范式,即通过粒度更细的函数去组合应用。所谓的“函数”(Function)提供的是相比微服务更加细小的程序单元。我们可以通过微服务为项目执行CRUD操作所需的代码,而FaaS中的“函数”可以代表项目所要执行的每个操作:创建、读取、更新以及删除。
后端即服务(BaaS: Backend as a Service)
后端即服务,比如对象存储,数据库应用,缓存服务,在使用时不需要关注它的服务器部署在哪里、是什么样子的,而是开通服务就可以使用,后面的运维工作都交给了云,无需感知它最底层的服务器。
无服务器架构 / 轻服务 (ServerLess)
云函数,就是FaaS模式的具体实现。同样,对象存储、数据库应用、缓存服务等,是BaaS模式的具体实现。而他们两个组合而成,即为ServerLess。
Serverless架构最早可追溯的第一个商业化的平台是2006年的Zimki,他们第一个提出”按照实际调用付费”,那时还没有Serverless这个名词。因为硬件与网络条件以及开发理念的限制,这种想法也始终没有出现在主流视野中。随着2011年的Parse,2012年的Firebase| IronWorker,直到2014年AWS Lambda出现定义了FaaS,这种模式才正式闯入大众的视野之中。而后其他大型公共云提供商开始着手建立自己的FaaS平台,随着2016年Google Cloud Function & Microsoft Azure Cloud Functions的大力推广,落地使用的项目越来越多。国内随着阿里云、华为云、腾讯云的推广,也在很多项目中落地,特别是微信小程序、小游戏的兴起,让更多开发者对云函数的开发已经轻车熟路。
2. 我们的特点
好了,前置知识了解完毕,该来正菜了。我们第一版ImmuxCompute就是以上述提到的ServerLess的形式,为用户提供服务。具体来说,我们提供全套的包含云函数执行、数据库存储、运维监控。开发者只需要开通服务,编写JavaScript函数组合形成业务逻辑,上传到平台即可生成后端服务。我们的云平台接口简单,在网页上即可完成代码部署。
我们有下面几个特点:
第一,支持http、websocket协议,无论是需要REST风格的网络接口还是实时对战、即时通讯我们都可满足。
第二,降低启动开发成本,只需编写函数即可完成后端服务。
第三,无需要学习新的语法,简洁明了没有心智负担。用函数的组合去实现应用,像书写普通函数一样,用起来更自然。
第四,数据是企业最重要的财富,对于数据库而言我们是专业的。我们自研区块链型数据库,自动保存所有数据变动历史,无需备份,无需担心删库或黑客侵扰,而我们的计算平台与数据库是紧密结合的,确保数据安全并可追溯。
第五,我们的代码开源,可以私有化部署,可满足您的安全需要。
第六,我们提供函数的交易市场,让开发者分享、出租各种重复的业务逻辑与函数,收获您代码的价值。
第七,随着越来越多的开发者上传函数,丰富生态,项目可获得更加丰富的功能。
诚然,ServerLess这种形式也不是银弹,对于已有项目或者其他项目,可以部分业务采用我们的方式,无缝集成。
3. 未来的展望
未来我们会支持更多的编程语言运行于计算平台之上,也会与数据库结合的更加紧密,充分发挥我们数据库的特点,让您的数据安全并可追溯。
我们会推出一些可信赖经过验证的官方通用函数模块,覆盖各种类型的Demo以便快速组建应用。
同时也非常欢迎各位开发大佬贡献自己的函数模块,让那些曾经绞尽脑汁写出的精彩函数被更多人使用,同时获取收益,共建良好的生态。
对我们有兴趣的话,产品方面欢迎来我们网站:https://immux.cn/zh/
我们的博客:https://immux.cn/zh/blog/
我们的GitHub:https://github.com/immux/immux
我们的软件是开源的。