技术创新只有起点没有终点,继容器技术之后,新的技术又推成出新;最近了解到一种新的技术方案Serverless,写篇日志记录下自己的感想。目前市面上提供Serverless云函数的解决方案的有Google Cloud Functions,Azure Funcions,IBM OpenWhisk,阿里云函数计算,腾讯云服务器云函数,在初步接触之后,带来了认知上的巨大震撼。
一个人的认知决定了他的思维模式,决定了一个人所能达到的高度;比如在马车时代,人们追求的是如何拥有千里马,汽车时代,人们追求的是超跑;冷兵器时代,侠客们为了一把屠龙刀搅得江湖血雨腥风,热兵器时代,人们追求的更加强大的机关枪;那么当飞机,大炮,原子弹的时代到来的时候,小米加步枪显得那么的弱小,时代在进步,新的认知决定了新的高度,只有不停的提高对世界的认识,才能在激烈的竞争中取得一线先机;那么在软件领域也同样如此,使用先进的思想,能够最大程度的提升效率,帮助企业创造更多的利润。
软件开发领域,一个古老又年轻的行业,在这里充满了各式各样的奇思妙想;目前大部分公司主要还是使用微服务架构,使用SpringCloud技术栈来解决互联网各式各样的业务问题,支撑了一家又一家互联网公司的蓬勃发展。
那么细想一下,微服务架构到底解决了什么问题,又带来了什么问题?
SpringCloud是标准的微服务架构解决方案,通过业务拆分将一个庞大系统分解为一个个高内聚低耦合的小型业务系统,减少业务间变动带来的整体系统的风险和影响,众所周知,软件公司以业务需求变更频繁而出名,互联网公司更是出类拔萃,频繁的业务改动,不断迭代演化的需求,要求技术架构必须灵活又稳定,以往SOA是针对于企业级业务中拆分的优秀解决方案,微服务架构更是业界翘楚,拥有众多拥趸;然而Serverles架构最大化做到这一点,API级别的拆分力度,是解决业务拆分的利器,并且带来了认知上面的全面升级,让人不禁感叹,原来架构设计还能这样玩。
同时也因为无止境的系统拆分,带给了系统运维上面的巨大挑战,因此在微服务架构中运维是十分重要的一环。为了解决这个问题产生了很多的方法论,例如自动化运维,DevOps,AiOps等等,这些方案的核心在于尽量通过自动化或者Paas的方式给企业提供整体的运维解决方案。
虚拟化一个问题是虚拟化Hypervisor管理软件本身的资源消耗与磁盘IO性能降低,另一个是虚拟机仍然还是一个独立的操作系统,对很多类型的业务应用来说都显得太重了,导致我们在处理虚拟机的扩缩容与配置管理工作时效率低下。
然后k8s出现了,Kubernetes:Google 开源的容器管理系统,起源于内部历史悠久的 Borg 系统。因为其丰富的功能被多家公司使用,其发展路线注重规范的标准化和厂商“中立”,支持底层不同的容器运行时和引擎(比如 Rkt),逐渐解除对 Docker 的依赖。Kubernetes的核心是如何解决自动部署,扩展和管理容器化(containerized)应用程序。
至此微服务架构辅以容器化技术,把这个浪潮推到高峰,微服务架构如火如荼。那么,有没有更好的办法能够一劳永逸?
答案是必然的,在这里,Serverless带来一种新的运维模式,在这种模式下用户需要管理的只有Code,一定程度上可以认为Serverless就等同于NoOps。
无服务器云函数(Serverless Cloud Function)是腾讯云提供的无服务器(serverless)执行环境,帮助用户在没有购买和管理服务器时仍能运行代码。用户只需要使用云平台支持的语言编写核心代码及设置代码运行的条件,代码即可在腾讯云基础设施上弹性、安全地运行,并可完全管理底层计算资源,包括服务器CPU、内存、网络、代码部署、弹性伸缩、负载均衡等服务。
Serverless可以让用户无需关心服务器的部署运营,只需开发最核心的业务逻辑,即可实现上线运营;具备分布容灾能力,可依据负载自动扩缩容,按照实际调用次数与时长计费。
加快用户服务上线时间,用户只需实现业务算法及流程,上线时间缩短为分钟级;减少用户的运营负担,用户无须承担服务扩容,故障恢复运维工作;消除用户的资源成本,用户无需承担资源闲置费用,只为实际调用消耗付费。一切都是那么的美好!
当一个新鲜事物来临时,你可以怀疑,但不要盲目的拒绝,拥抱改变,或许能够得到更多。