软件的dfx诸可性
今天跟大家聊一聊软件的dfx,也就是诸可性的这样一个话题。那么什么是诸可性呢,就是软件除了功能可用之外的,其他的一些特性,比如说可服务性,可靠性,安全性,可兼容性,可移植性,可体验性,可扩展性等你系列特性,那么这些特性在软件中呢,实际上是非常关键的。他实际上。占了软件代码的。百分之八九十。其实一个软件的成功能性代码占的数量并不是很多。
那么在华为来讲这些原来是一直在做,但没有这么规范,这么全面,也出过一些网上的问题,那么后来呢,也包括公司做海外销售的时候,海外的运营商提出来很多要求。这样公司就建立了一个。诸可性这样的一个部门。那这个部门就把各产品线,整个公司就把这个dfx这些能力,构建起来了。那么接待我给他介绍一下主要的这个dfx特性。
第1个方面就是可服务性。可服务性,就是软件开发完了,要上网运行了,那就要提供这个对外服务的一些维护能力,方便运维人员可以很好的维护整个软件系统。那么它的包括哪些内容呢?
1)首先是可安装性,就说你在系统要有安装工具,通过安装工具,很好的安装这个系统。
2)还有可监控性,你系统是好的是坏的,要通过这个监控内容能能判断出来,最好提供自动恢复功能,通过具体的就是监控告警平台,通过高警,日志,这些能力实现。
3)可配置性,要用配置服务器,通过配置服务器运维人员可以配置系统,可以动态刷新配置数据。
4)巡检,系统好坏要能自检,运维可以运用这个工具检查系统好坏。比如在节假日之前,可以通过巡检功能来判断一下,及时修复漏洞。
5)在线升级,打热补丁,可以升级新版本,运维人员可以进行维护系统升级。
诸可性第2个方面就是可靠性,对于电信系统来讲的的要求五个九的,那么对于户互联网系统呢,要求是两个9到3个九的或者是995的,那这个要求呢,你要实现呢,也就说就不能宕机,即使宕机能快速的恢复,这样来讲的,也需要一些能力。
1)比如说双机。就是系统没有单点故障,也就说他是主备一组,一主机一备机,主机宕机了备机可以接管,双机系统的包括冷双机。热双机和温双机这样三种。冷双机就是系统呢,一主一备,主的跑备的不启动。热双机就是主备跑一样的进程,主的宕机,备立即接管,系统损失很小,但实现难度很大。温双机就是备机启动但不跑业务,这个跟冷双机就好在备机启动了。
2)分布式系统,在负债均衡下,服务进程有很多个。如果一个宕机了没什么影响,其他的服务持续,由系统的监控的拉起一些新服务啊现在分布式系统才用的多一些。
3)备份和恢复,系统有很多数据,有很多文件,它不能丢失,那就是备份和恢复。
4)过负荷控制,因为在节假日,或者网络攻击的时候,会有一些超过系统处理能力的接入进来,如果没有的过负荷控制,可能系统就崩溃了,这个也很重要。
诸可性第3个方面就是安全性,安全在中国早期被忽略的比较多,近几年也是逐渐提高了,在国外要求就很高,所以我们的产品呢,一直重视安全性,举几个例子,
1)一个就是存储敏感数据要存储密文,就是加密存储。比如一个人的身份证,一个人的手机号。都应该在数据库存储密文。近几年中国出现那种脱库的情况,数据库被劫持了的情况,发里面都是明文,这样的话就会出现名字,身份证,手机号加被泄露了,这就很严重,首先是个所有的系统的密码账号或者系统数据里面的用户名,身份证,手机号等敏感信息都应该密文存储。
2)就是防篡改,要有认证,避免被篡改。
3)防木马,防SQL注入,这些都很重要。
4)防病毒,系统要在线杀病毒,新病毒要及时查杀。
5)防火墙 ,可信区等硬件安全手段。
诸可性第4个方面可移植性 软件系统的话不能只发在一个平台上。希望windows的客户,希望unix的的客户,希望linux的,那么如果那个系统可移植性没那么好的语言,比如C++语言,那这样的话要实现中间适配封装,做跨平台的封装,开发的时候用这些封装的函数,那么底层的适配不同的C++语言差别,不同的操作系统的差别,这样来讲的就可以实现那个跨平台的移植。因为现在呢,来讲的这个系统啊,通过容器呀,JAVA,python语言的跨平台能力比较强,所以这个可移植性没有以前那么重要了。
诸可性第5个方面就是兼容性啊,这个系统前后版本的兼容,我们也看到windows,实际上他出版本很困难的一个事情,兼容性就是这个新系统怎么兼容老系统,这是你原来的功能还支不支持,你原来的接口还支不支持 原来开发的应用或者业务能不能接着跑在新系统上,我原来跟你对接过的系统还能不能继续跑,这就是兼容性,这个就是非常难的,你系统在功能的兼容,接口的兼容,运维的兼容,都是比较难的,一般的做法,一种是两套接口,然后呢,接口有版本号或者那接口,或者通过这些xml这样的方式来适配接口,也可以通过这个变长,不等长的接口,接口的内容呢可以编码,那这样来讲呢,就根据你不同的内容,我都不同的编码来区分,这个方法还是挺多的。
诸可性第6个方面可扩展性,就是你的系统未来能不能支持更大的容量,能不能支持更多的功能,那你就扩展是怎么考虑的,那么这部分呢,也是很重要的。
诸可性第7个方面就是可体验性,你这个系统用户体验怎么样啊?有没有经过这个可体验性的验证啊,这个也是那个很重要的。
诸可姓从表面上,跟产品功能没关,但是没有这些内容,可能你的功能都用不了了,宕机了,维护不了了,这样的话你三天两头宕机,宕机以后说明你系统是不可用了。