背景知识
一款优秀的软件需要具备的特点
软件的实用性
所谓有的放矢,软件的诞生是为了解决特定的问题,比如现在流行的MVC 框架,早期的没有MVC 开发的时候,耦合度很大,后期维护更新成本高,难度大,这样MVC 框架就孕育而生;比如陌陌这种社交软件,是为了解决陌生人之间交流的问题;比如疼醒这种软件是为了解决人们远程沟通的问题;比如OA系统为了解决公司协同流程、项目管理、知识管理等问题……所以一款优秀的软件必须能够解决一个领域内的问题。
软件的稳定性
软件的实用性问题解决之后,急需要解决的问题就是软件的稳定性。一般线上系统都会承载企业的某项业务,系统的稳定性直接影响了业务是否能够正常运营。很多创业公司在前期只注重业务的发展,不太在意系统的稳定性,一旦用户两比较大的之后,就会出现很多性能的问题。这种情况就好比,你找了一个妹子,并准备深入交往后结婚,却发现这个妹子总是有很多异性朋友在联系……
代码的规范性
铁打的营盘流水的兵,一款优秀的软件不仅仅是功能的实现。整体架构、功能模块、代码注释、扩展性等问题也也需要考虑,毕竟在一个软件的生命周期过程中,参与的人实在是太多了,主创人员也可能随时流式。所以代码的规范性就难能可贵了。
升级保持向前兼容性
如果一个软件平常使用挺好的,但是升级却越来越费劲,或者升级后稳定性大打折扣,也难以称得上一个好的软件。
基本的使用手册
文档、文档、文档、一个简单有效的使用手册,才是程序的王道,知其然才能知其所以然。能让用户一目了然,功能、架构、设计思路、代码等等。
需求分析
随着公司业务发展,支撑公司业务的各种系统越来越多,为了保证公司的业务正常发展,急需要对这些线上系统的运行进行监控,做到问题的及时发现和处理,最大程度减少对业务的影响。
目前系统分类有:
- 有基于Tomcat的web应用
- 有独立的Java Application应用
- 有运行在linux上的脚本程序
- 有大规模的集群框架(zookeeper、Hadoop、Storm、SRP……)
- 有操作系统的运行日志
主要功能需求分为:
- 监控系统日志中的内容,按照一定规则进行过滤
- 发现问题之后通过短信和邮件进行告警