对于我而言,缺乏大量的后台架构实践经验,也需要大量的 DevOps。
开发者无需考虑服务器细节,只需要负责编写发生某些事件后所需执行的代码。
事件驱动
JavaScript 机制。
并不一定使用这些云服务,如 AWS,才能称为 Serverless。诸如我的同事 《Serverless 实战:打造个人阅读追踪系统》,采用的是
IFTTT + WebTask + GitHub Webhook + GitHub
意味着,你所有的服务中的一部分运行在 xxx 上,
对于,初创公司来说,他们没有基础设施,也没有财力,也可能没有能力去建设基础设施。采用云服务往往是最好的选择,可以节省大量的资金。与此同时,诸如 AWS 这样庞大的系统,对于创业公司的程序员来说,也不能容易消化掉的一个系统。
而如果一家创业公司采用的是 Serverless,而不是使用云服务器。那么,他就会拥有更多的时间去开发,不需要担心维护。只需要为运行时的软件付钱。
按需计算就意味着,在请求到来的时候,才运行函数。没有请求的时候,是不算钱的。
内存 (MB) | 每个月的免费套餐秒数 | 每 100ms 的价格 (USD) |
---|---|---|
128 | 3,200,000 | 0.000000208 |
1024 | 400,000 | 0.000001667 |
Serverless 的背后是 诸如 AWS Lambda 这样的 FaaS(Function as a Services)。
对于传统应用来说,要应对更多的请求的方式,就是部署更多的实例。然而,这个时候往往已经来不及了。而对于 FaaS 来说,我们并不需要这么做,FaaS 会自动的扩展。它可以在需要时尽可能多地启动实例副本,而不会发生冗长的部署和配置延迟。
每一个服务尽可能的小,不一定拥有数据库,也可以共用。
Auth0 例子、GitHub Hook 示例
- 事件驱动的数据编程
- Web 应用
- 移动应用
- 物联网应用
- 事件流
- 应用生态
事件触发,对实时性的要求相对没有那么高~~
Serverless 特别适合于,轻量级快速变化地 API。
其实,我一直想举一个 Featrue Toggle 的例子,尽管有一些不合适。但是,可能是最有价值的部分。
统计本身只需要很少的计算量,但是生成图表,则可以定期生成。
低频高内存计算
如 IoT。
当我们谈及物联网的时候,我们会讨论事件触发、传输协议、海量数据(数据存储、数据分析)。
对接不同的硬件,本身就是一种挑战。
定时爬虫机器人
快速验证一个想法 MVP。
Dropbox 创业历史的示例。
AWS 提供一系列的工具:
- Cognito 用于用户授权
- Dynamo 存储数据
- Lambda 计算
- API Gateway 进行 API
- blabla
聊天机器人,也是一个相当好的应用场景。
Message,
But,由于国内的条件限制(信息监管),这并不是一件容易的事。因此,从渠道(如微信、blabla)上,都在尽可能地降低这方面的可能性。
过去的几年里,我一直在尝试将我的博客迁移到云服务上,而不是某个主机。
与微服务的关系 —--
微服务并不能替换大量的单体应用
优势:编写单一用途的无状态函数。
这一点与微服务是相当类似。
相似的,它们是相辅相成的。
更少的代码,意味着更少的 bug
是的,
在这种情况下,只能将不重要的 API 放在 Serverless 上。
当你已经有大量的基础设施的时候,Serverless 对于你来说,并不是一个好东西。
你需要一遍又一遍地上传代码,每次上传的时候,你就好像是在部署服务器。然后 Fuck the。
当我使用 Serverless Framework 的时候,遇到了这样的问题。后来,我发现了 serverless-offline,问题有一些改善。
然而,对于日志系统来说,这仍然是一个艰巨的挑战。
早先,在知道 AWS Lambda 之后,我本来想进行一些尝试。但是 CloudForamtion 让我觉得太难了,它的配置是如此的复杂,并且难以编写。
我使用的是 Serverless,考虑到 CloudForamtion 的复杂度。
使用多少内存、CPU 限制等等
Express 应用示例