在我们开发的诸多系统,基本都可以视为“数据密集型系统”,数据是一切物质的载体,我们依靠数据做存储记录,通过数据进行信息传递交换,最终还要数据来呈现和展示等,从一定视角而言,系统中最核心、最底层、最密集的是数据,时刻都在围绕数据构建服务运转并驱动业务。
我们先来思考几个比较本宗的问题 ——— 我们为何要开发一个系统?怎么体现一个系统的好坏?系统在为谁服务?
为何要开发一个系统?
在当前这个信息化、互联网的时代,软件系统已经根入到生活生产、衣食住行的每一个环节,无论是ToC或ToB业务,无论是天上飞的还是地上跑的,都有软件系统存在的身影。从最朴素的视角出发,我们是在用软件工程、技术手段来构造一个组合要件,完成功能满足需求,让它的形式看起来像一个整体,来服务一定范围的业务或者人群,并且会存在一定生命周期的持续性技术集合,在服役期间要尽最大能力达成业务诉求,要做到运转稳定、数据准确、体验良好等,最终收益是通过技术投入来助力业务运作的高效收益。
怎么体现一个系统的好坏?
随着承载业务的发展,系统也在随之变化,大部分时间是从0.0.1到0.0.2的逐层迭代,也会有1.x到2.x的改造升级甚至重构。小改动是量变,可以是功能优化,也可以是问题修复,投入可控,挑战不大,大改动是质变,非常考量团队及个人的能力水平,是对系统前期搭建可塑性、扩展性的考验和回溯,成功的质变带来的是无穷无尽的能量,它能紧跟业务的迭代进行适配推动其蓬勃发展,而糟糕的劣变会让系统埋下雷区,让团队成员疲惫不堪,从而与业务节奏脱节。
因此,一个大部分人眼里好的系统不应仅仅是让上游业务使用者感觉”厉害“,还要让参与系统开发、维护的参与者们感觉”舒适“,既要外表光鲜,也要自得其所。能够同时满足以上两点在诸多的项目实践过程中的确很难,但是如果能做到的确很棒,这就是一个”好系统“的标准。
系统在为谁服务?
| 角色 | 服务内容 |
|---|---|
| 系统使用者 | 提供系统功能,提高作业效率,完善作业流程,基于信息化实现最高收益 |
| 系统建设者 | 反哺式反馈,决定方案和实施细节,又时刻获取正负面系统构建效果 |
基于上述,我们可以从系统使用者、系统建设者两个方面进行划分:
SLA (Service Level Agreement),即服务级别协议,是指提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约。
运动场上的健儿们追求的目标是奋力夺冠,技术角逐中研发小伙儿们的目标是打造"三高"。