显然,一图胜千言万语:
途中蓝色部分是你在自行配置一个软件时需要搭建的,红色的是在相应的云服务情况下已经帮你搭建的。
让我们先来理清一个现代软件产品(非单机产品)所应具有开发内容:
1. IaaS
先说""架构即服务"",我们熟悉的阿里云的弹性计算(ESC)和国内外各种云服务商对外出售的云服务器都属于这个范畴。
以阿里云为例子,阿里在全国各地都设置了机房,有磁盘阵列、有运算单元,并把各种算力做了虚拟化对外出售。同时阿里云还拥有大量IP资源,并完成复杂的组网过程。阿里云还提供了"阿里云控制台",复杂监控服务器的各种数据,画出详细的统计图表。所以,在理论上,一个IaaS服务商把软件开发过程中的6~9都完成了,你只需要关注上层实现即可。
2. PaaS
我建议先跳过PaaS去看SaaS,再回来看PaaS会有更深的体会。
如果说IaaS对于开发者而来过于硬核,因为很多事都要亲历亲为;SaaS对开发者的局限性过大,因为它的封装性过高,那么PaaS则是一种折中方案。
在PaaS模式中,你只需要关心业务逻辑和你的数据交互;程序跑在什么地方、兼容性如何、网络条件怎么控制等等问题你都不需要了解。
举一个简单的例子,Algolia提供了云搜索服务,你在搭建自己的网站时不再需要关心如何做站内搜索、关键字怎么定数据库怎么写,你只需要调用该公司给定API即可。
同样,在腾讯小程序的云开发中,你不需要关心如何去控制IOS的相机和安卓的相机,不需要知道IOS和安卓的本地存储结构、不再需要搭建自己的云服务器和数据库及中间件,你所需要的只有氪金购买PaaS和调用PaaS所提供的API。
3. SaaS
"软件即服务"主要时面向用户的。
例如,假设你是一个商贩,想要批发点什么东西,你会选择打开淘宝网。你不用关心数据、网络、图形接口和业务逻辑,你只需要购买物品,就可以为你的用户提供"零售商品"。
作为一个程序员,你可以选择使用纯文本编辑器编程也可以使用强大的IDE,你不用操心背后的各种汇编和编译优化,IDE提供商给你提供的就是SaaS服务;把这个概念放到云环境中来,你可以使用“腾讯问卷”来进行统计调查然后编写爬虫爬取你的问卷数据做二次开发,“腾讯问卷”所提供的其实就是SaaS。
再比如百度网盘、印象笔记等等,都是此类产品。