【serverless】
理解serverless,https://jimmysong.io/posts/what-is-serverless/
SOA: Service-Oriented Architecture面向服务的架构
而在serverless架构中,我们不再需要在服务器端代码中存储任何会话状态,而是直接将它们存储在NoSQL(“非关联型的”,强调键-值存储和面向文档数据库. MongoDB,Apache Cassandra和Redis, ElasticSearch)中,这样将使应用程序无状态,有助于弹性扩展。前端可以直接利用BaaS(例如AWS的RDS代替mysql)而减少后端的编码需求,这样架构的本质上是减少了应用程序开发的人力成本,降低了自己维护基础设施的风险,而且利用云的能力更便于扩展和快速迭代。
https://jimmysong.io/posts/what-is-serverless/
遵守12因素守则,https://12factor.net/zh_cn/
且serverlss对应用程序的体系结构来说就是一次颠覆了,通常我们需要考虑事件驱动模型,更加细化的不熟形式,以及在FaaS组件之外保持状态的需求
在serverless架构中,我们不再需要在服务器端代码中存储任何会话状态,而是直接将它们存储在NoSQL中,这样将使应用程序无状态,有助于弹性扩展。前端可以直接利用BaaS而减少后端的编码需求,这样架构的本质上是减少了应用程序开发的人力成本,降低了自己维护基础设施的风险,而且利用云的能力更便于扩展和快速迭代。
- 状态管理:要想实现自由的缩放,无状态是必须的,而对于有状态的服务,使用serverless这就丧失了灵活性,有状态服务需要与存储交互就不可避免的增加了延迟和复杂性。
- 延迟:应用程序中不同组件的访问延迟是一个大问题,我们可以通过使用专有的网络协议、RPC调用、数据格式来优化,或者是将实例放在同一个机架内或同一个主机实例上来优化以减少延迟。而serverless应用程序是高度分布式、低耦合的,这就意味着延迟将始终是一个问题,单纯使用serverless的应用程序是不太现实的。
- 本地测试:Serverless应用的本地测试困难是一个很棘手的问题。虽然可以在测试环境下使用各种数据库和消息队列来模拟生产环境,但是对于无服务应用的集成或者端到端测试尤其困难,很难在本地模拟应用程序的各种连接,并与性能和缩放的特性结合起来测试,并且serverless应用本身也是分布式的,简单的将无数的FaaS和BaaS组件粘合起来也是有挑战性的。
【Faas】
- IaaS:基础设施服务,Infrastructure-as-a-service
- PaaS:平台服务,Platform-as-a-service
- SaaS:软件服务,Software-as-a-service
Iaas、Paas、Saas区别
http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html