您当前的位置是:  首页 > 新闻 > 专家观点 >
 首页 > 新闻 > 专家观点 >

蔡学镛:纯云架构最好改用函数式设计、5大架构秘诀公开

2017-06-26 14:37:39   作者:   来源:CTI论坛   评论:0  点击:


  「你说的云,是哪一种云?」拥有多年云端架构师经验的北京全栈科技联合创始人蔡学镛表示,目前大家对云的定义都不大一样,企业要用要先厘清是哪一种云,再加上传统的程式设计方法不适合云端平台,他建议,程式设计师要结合架构师,找出新的程式设计方法。
\
  「你说的云,是哪一种云?」许多企业都认为将系统和资料上云端有很多好处,不但可以节省成本又可以弹性调用资源,那为什麽不搬上云端呢?曾在大陆担任阿里巴巴支付宝、中国银联、创新工场、中国平安保险集团等公司的架构师,拥有多年云端架构师经验的北京全栈科技联合创始人蔡学镛表示,企业设计软体时,是否考虑到云端平台的特性是相当重要的课题,他也指出,目前大家对云端的定义都不大相同。
  他认为,目前比较流行的是FaaS(Function as a Service)和BaaS(Backend as a Service),FaaS就是将程式拆成各自独立的功能,各个程式之间互相没有关联,BaaS则是用Open API来用开发服务,像是用户的身份认证,这两种云端设计方式可以让程式更加自动化,减少程式运作维护的工作量,也让程式设计师可以不用考量系统流量瞬间爆量的问题。
  而现今有许多企业会在PaaS层上设计服务,但他提醒,若不是像用Spring Boot框架开发,很容易还是将程式和资料库绑在一起,若将两者绑在一起,则不适合云端的平台。
  蔡学镛将云端程式设计分成Who、What和How,设计程式时分为两种工程师,一种是程式设计师,负责设计与业务领域相关的功能,设计的方式则可用领域导向的方式(Domain Driven Design, DDD)的方式,他表示,DDD的设计方式一直都不太流行,但是最近因为流行微服务,而DDD又开始兴起。
  第二种工程师则是架构师,他说明,这个词大约2000年才诞生,与网路的兴起密不可分,架构师主要从事的不是功能的设计,而是以系统运作为导向的设计,包括系统的负载量、安全性等,他建议可用的设计方式是Patterns of Enterprise Application Architecture(PEAA)。
  「我也开始在转型!」蔡学镛表示,由於云端平台的兴起,将许多架构师的工作都可以方便快速地完成,且许多云端架构的问题都有规则可循,架构师的价值也越来越式微,他也在思考自己要如何转型,他认为,程式设计师要结合架构师的角色,找到新的程式设计方法。
  由於现在系统需求快速且多变,蔡学镛认为,过去传统的程式设计方法已经不管用,主要是因为传统的物件导向程式设计的结构有些问题,他指出,以前的程式设计都将业务和资料紧紧地绑在一起,但是绑在一起的作法并不适合云端平台,物件导向的观念在敏捷开发也完全不适合。
  他点出传统物件导向设计的众多问题,举例来说,蔡学镛以前在保险公司担任架构师时,保险的规则非常繁杂,高达1,000万条,也有许多幽灵规则,平时都没有执行,但是没有人敢调整,深怕一调整系统会当掉。
  另外,法规和业务调整的变动也会影响着前端的服务模组、API,以及後端调用资料库和串连外部系统的设计,还有FaaS的设计强调没有状态(State),但是物件导向的物件都是有状态,他建议,企业若要使用云端,则要使用函数式的程式设计。
  蔡学镛归纳出五个函数式程式设计的原则,首先,设计业务功能的模组要分开,且分的越细越好,第二要采用非同步的调用方式,让程式无需等待被调用函数的返回值,就让程式继续执行,第三是他认为最关键的,就是只要资料最终一致化就好,不需要每笔资料都变成即时交易,第四则是尽量将功能都API化,甚至他建议可以先从外围的Interface开始设计,最後物件必须是无状态,这样系统面对较高的流量,就能同时开启多个Instance。
  除了上述的五大原则之外,蔡学镛也认为,在设计云端架构的系统时,必须对资料非常了解,有些是需要和业务人员一同合作来了解,像是资料的重要性、保密性、调用资料的费用和业务一致性,举例来说,金钱和地址的资料遗失重要程度就不同,且也要依照不同的资料类型,将资料放在适合的资料库,并用不同的方式存取。
  有些资料的厘清,工程师则是可以透过技术或是统计的方式来理解,像是调用资料的频率、资料笔数、资料老化现象等,他认为,只要是透过技术可以了解的,就能将规则用成通用的方式放在云端平台,他举例,由於火车时刻表属於不容易变动的资料,就不需要频繁地调用资料,避免浪费调用的成本。
  最後,资料的互相调用也是重要的议题之一,他表示,调用资料时除了可以用密码的方式确保安全性之外,其实还可以用Attribute-Based Access Control的方式,利用调用和被调用的资料都有各自专属属性的特性,来做精细的比对。

相关阅读:

专题