APP下载

蔡学镛:别再用物件导向,纯云架构最好改用函数式设计,5大架构秘诀公开

消息来源:baojiabao.com 作者: 发布时间:2024-04-23

报价宝综合消息蔡学镛:别再用物件导向,纯云架构最好改用函数式设计,5大架构秘诀公开
图片来源: 

何维涓_摄影

“你说的云,是哪一种云?”许多企业都认为将系统和资料上云端有很多好处,不但可以节省成本又可以弹性调用资源,那为什么不搬上云端呢?曾在大陆担任阿里巴巴支付宝、中国银联、创新工场、中国平安保险集团等公司的架构师,拥有多年云端架构师经验的北京全栈科技联合创始人蔡学镛表示,企业设计软件时,是否考虑到云端平台的特性是相当重要的课题,他也指出,目前大家对云端的定义都不大相同。

他认为,目前比较流行的是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的方式,利用调用和被调用的资料都有各自专属属性的特性,来做精细的比对。

2018-11-08 04:34:00

相关文章