TikLab是一款国产开源免费的DevOps工具套件,在技术架构设计的过程当中有一些心得体会,似乎有很多哈,那么我们最为关切的是什么呢?将模块化/组件化进行到底!那么我们是基于什么原因,又是如何去做呢?
做系统架构设计的核心工作,主要就是“拆分”与“聚合”,拆分是为了将系统变"小',简洁,可控,复用;聚合呢?是为了将诸多“小”的模块或子系统进行整合,以构建复杂或较大体系的系统。
1、将系统拆"小",保证系统的"小"而美
Tiklab虽然提供的是一站式解决方案,产品范围覆盖敏捷研发、开发测试、监控运维多个领域,涉及一套工具链。但为了用户体验,为了系统的可维护性,我们杜绝大而全的设计方案,采用了"小"而美的设计方案,将工具链拆分为多个"小"而美的工具,各个工具完整独立,工单间能够互相深度集成,比如通过统一的帐号与门户中心、开放OpenApi,确保系统间交互融合、数据共享、流程衔接。
TikLab产品矩阵
soular帐号与门户中心
TikLab系统架构图
2、将组件化进行到底,保证系统的一致性及最大化复用
为什么如此关切组件化呢?原因有几点:
2.1 保证各产品线的一致性,提升用户体验
我们将工具套件拆分成多个小而聚合的工具的同时,便面临着一个非常重要的问题,各个子系统大量公共的技术组件(如存储类、通讯类等技术组件)或业务模块(如用户、认证、权限、消息等业务组件)如何应对?如果各个子系统单独研发,将会导致各子系统交互体验的不一致性,数据/流程贯通的不一致,必然有损用户体验。
2.2 为做到一键安装
有些开发者可能会有些疑问,做到一键安装有什么困难吗?说真的,如果单单是docker环境做到一键安装没什么特别大的困难,如果是linux、windows等环境,要做到一键安装必然不是一件容易的事!因为我们依赖的JDK、Postgresql/Mysql、文件存储、搜索引擎等等,如果使用传统独立安装的方式,那么一键安装将是一件非常困难的事儿。过去网上也有一些网友评论道,如jira、gitlab、nexus等等可以一键安装,那说明这些产品在技术架构上是做了相应的工作的。
基于此,我们将JDK、Postgresq进行组件化封装,自主研发了一些必须的技术组件如RPC、gateway、文件存储、搜索引擎等,同时也提取了相应的业务组件如用户、认证、权限、消息等组件。
2.3 最大程度复用组件,提升开发效率,降低研发成本
如果各个子系统单独研发相关基础模块,将会大大增加研发成本。基于此,我们将大量的技术组件、业务组件提取到平台层面进行统一研发,以保证系统的一致性、数据流程的衔接贯通,同时最大程度降低研发成本。
其实论工作量,这就是所谓的平台或中台的范畴(个人不太喜欢这些高大上的词汇,在我的印象里就是模块与组件),当然不是为了造轮子而造轮子,一切为了用户体验、为了效能!
有兴趣的开发者朋友可以去Tiklab官网体验演示DEMO或下载安装使用,使用过程当中有什么好的建议或意见也欢迎加入社区-技术交流群反馈:)