关于 Serverless 的个人理解
最近关于 Serverless 的讨论越来越多,在此分享个人对 Serverless 的一些见解.
开发模式的演进
本人从事程序开发不久,从 16 年到现在也才不过 5 个年头,从刚开始的基于模板渲染到后面的基于 ajax 的前后端分离,进化到如今流行的 nodejs 工程化,每一步都是一个开发模式的变革.
首先回顾一下开发模式的演进,我认为有 3 个阶段:
1.基于模板渲染
2.基于 ajax 的前后端分离
3.nodejs 工程化
在早起的互联网时代,我们的网页很简单,就是一些静态或动态的页面,主要目的是用来做信息的展示和传播。这个时候开发一个网页也很 easy,主要就是通过 JSP、PHP 等技术写一些动态模板,然后通过 Web Server(nginx,apache) 将模板解析成 HTML 代码返回,浏览器只负责渲染这些 HTML 文件。这个阶段还没有前后端的分工,通常是后端工程师顺便写了前端页面。
后面 ajax 出现之后,开发模式慢慢变为前端负责页面渲染,后端负责业务逻辑的处理,前后端通过 ajax 接口来进行数据交互.在这个阶段,大多数框架和语言还停留在使用后端模板解析 HTML,如 php 的 smarty,只有少数需要交互的数据传输使用 ajax 来进行.不过已经向着前后分离的模式又近了一步
随着前后端分离的模式演进更近一步,React.js/Angular/Vue.js 相继发布,前端可以完全不用考虑后端的逻辑,后端也完全不用考虑前端的渲染,使用跨域 api 的方式进行开发,达到了前后端完全分离的状态.
首先先来说说微服务架构
.
微服务架构是一种架构理念,是指将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。把一个大型的单体应用程序和服务拆分为数个或数十个的微小型服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
我的理解是:前后端分离之后,那么后端语言也不用保持一致,有一部分业务代码可以使用 php 进行开发,一部分使用 java 也未尝不可,将一个大型应用分解为多个小的应用,应用和应用之间也可以进行更细小的拆分和组合.
如果某一项业务需求是 IO 密集型应用,则可以使用 nodejs 来提供这一服务,如果某一项业务需求是计算密集型应用,则可以使用 java 来提供.流量不大,业务不复杂的用 PHP 来开发更加快速方便.这样可以充分应用每个语言的优势和特点进行更个性化的开发.
时间不多,先 mark 下