kubernetes-handbook/usecases/understanding-serverless.md

45 lines
4.1 KiB
Markdown
Raw Normal View History

2017-11-23 13:04:30 +08:00
# 理解Serverless
No silver bullet. - The Mythical Man-Month
许多年前我们开发的软件还是C/S客户端/服务器和MVC模型-试图-控制器的形式再后来有了SOA最近几年又出现了微服务架构更新一点的有Cloud Native云原生应用企业应用从单体架构到服务化再到更细粒度的微服务化应用开发之初就是为了应对互联网的特有的高并发、不间断的特性需要很高的性能和可扩展性人们对软件开发的追求孜孜不倦希望力求在软件开发的复杂度和效率之间达到一个平衡。但可惜的是NO SILVER BULLET几十年前1975年Fred Brooks就在The Mythical Man-Month中就写到了这句话。那么Serverlss会是那颗银弹吗
云改变了我们对操作系统的认知,原来一个系统的计算资源、存储和网络是可以分离配置的,而且还可以弹性扩展,但是长久以来,我们在开发应用时始终没有摆脱的服务器的束缚(或者说认知),应用必须运行在不论是实体还是虚拟的服务器上,必须经过部署、配置、初始化才可以运行,还需要对服务器和应用进行监控和管理,还需要保证数据的安全性,这些云能够帮我们简化吗?**让我们只要关注自己代码的逻辑就好了,其它的东西让云帮我实现就好了。**
## Serverless介绍
Serverless架构是云的自然延伸为了理解serverless我们有必要回顾一下云计算的发展。
### IaaS
2006年AWS推出EC2Elastic Compute Cloud作为第一代IaaSInfrastructure as a Service用户可以通过AWS快速的申请到计算资源并在上面部署自己的互联网服务。IaaS从本质上讲是服务器租赁并提供基础设施外包服务。就比如我们用的水和电一样我们不会自己去引入自来水和发电而是直接从自来水公司和电网公司购入并根据实际使用付费。
EC2真正对IT的改变是硬件的虚拟化更细粒度的虚拟化而EC2给用户带来了以下五个好处
- 降低劳动力成本减少了企业本身雇佣IT人员的成本
- 降低风险不用再像自己运维物理机那样担心各种意外风险EC2有主机损坏再申请一个就好了。
- 降低基础设施成本可以按小时、周、月或者年为周期租用EC2。
- 扩展性:不必过早的预期基础设施采购,因为通过云厂商可以很快的获取。
- 节约时间成本:快速的获取资源开展业务实验。
以上说了是IaaS或者说基础设施外包的好处当然其中也有弊端我们将在后面讨论。
以上是AWS为代表的公有云IaaS还有使用[OpenStack](https://www.openstack.org/)构建的私有云也能够提供IaaS能力。
### PaaS
PaaSPlatform as a Service是构建在IaaS之上的一种平台服务提供操作系统安装、监控和服务发现等功能用户只需要部署自己的应用即可最早的一代是Heroku。Heroko是商业的PaaS还有一个开源的PaaS——[Cloud Foundry](https://www.cloudfoundry.org/)用户可以基于它来构建私有PaaS如果同时使用公有云和私有云如果能在两者之间构建一个统一的PaaS那就是“混合云”了。
在PaaS上最广泛使用的技术就要数[docker](https://www.docker.com/)了因为使用容器可以很清晰的描述应用程序并保证环境一致性。管理云上的容器可以称为是CaaSContainer as a Service如[GCEGoogle Container Engine](https://cloud.google.com/container-engine/)。也可以基于[Kubernetes](https://kubernetes.io)、[Mesos](http://mesos.apache.org/)这类开源软件构件自己的CaaS不论是直接在IaaS构建还是基于PaaS。
PaaS是对软件的一个更高的抽象层次已经接触到应用程序的运行环境本身可以由开发者自定义而不必接触更底层的操作系统。
## Serverless的定义
Serverless不如IaaS和PaaS那么好理解因为它通常包含了两个领域BaaSBackend as a Service和FaaSFunction as a Service
### BaaS
### FaaS