zoukankan      html  css  js  c++  java
  • 开发编码前的自我拷问

    当我们接到产品的需求的时候,别着急马上投入开发,先要了解需求的来龙去脉,多思考,尽可能将里面潜在的坑挖出来,这样上线后才会更好的满足需求,代码的扩展性、代码生命周期才会更长。

    下面简单列了一些应该思考的问题:

    • 新功能会不会对历史业务产生影响?如果会的话,要把影响的范围尽可能全的罗列出来,产品和技术共同探讨老业务的兼容问题
    • 如果涉及底层老的数据库表重构,要考虑新、老数据如何平稳迁移,不影响线上用户的正常访问
    • 是否存在并发,如何保证数据质量?要采用什么锁机制?
    • 做好概要设计方案、详情设计方案,并组织所有相关人员参加评审,如果涉及数据库变动,最好叫上DBA。做方案尽量多想一想,如果担心老业务吃不透,可以叫上一些老员工,先整体再细节再整体,做到有点有面,一定要以全局性视野对待项目,否则很容易陷入误区。
    • 容量规划。新功能上线后,数据量有多大?后续每日预估新增多少数据?采用什么形式的存储?是关系型数据库(如mysql)? 要不要分库分表?还是采用Nosql存储?
    • 数据是否存在冷数据、热数据之分(例如微博),是否要分开存储?
    • 尽可能采用服务化形式,但是抽象到何种程度,要视具体的业务而定,尽量朝着高内聚、低耦合设计原则。
    • 如果有多处地方代码用到同样的模型数据,最好能过上下文的方式传递,避免每次用到都走接口查询
    • 模块化、组件化,具备乐高积木的特性
    • 多使用一些设计模式,提升系统的可扩展性
    • 尽量往平台方向思考,但要注意控制成本,即便一期做不到大而全,但一定要留好扩展,便于后续的不断迭代。
    • 如果是新应用,另起炉灶,要做好技术选型,最好选一些主流技术框架,切勿凭个人喜好,最后搞成百花齐放,后面的维护成本极高
    • 统一、标准化是一个亘古不变的话题,这一点非常重要
    • 对于很多技术改造,可能会配置开关,做好开关两面的测试工作,必要时可以紧急切换开关降低影响
    • 接口响应时间。是否需要引入缓存,缓存的数据如何维护?数据预热、数据有效期,空间不足、缓存的命中率怎么样?
    • 接口的最大并发量,需要做性能压测,了解系统能支撑的上限,便于大促活动时机器扩容
    • 接口的容错性,如果出现意外情况时,尽量保住核心业务,不受边缘业务或非核心接口的影响
    • 有条件的话,做好接口的流量控制,配置阈值,超过预设值能自我保护,并有对应的业务提示。
    • 做好单元测试、项目代码 code review
    • 发布时,要提前准备发布计划,以及回滚计划
  • 相关阅读:
    监控里的主码流和子码流是什么意思
    监控硬盘容量计算
    一个能让你了解所有函数调用顺序的Android库
    电工选线
    oracle linux dtrace
    list all of the Oracle 12c hidden undocumented parameters
    Oracle Extended Tracing
    window 驱动开发
    win7 x64 dtrace
    How to Use Dtrace Tracing Ruby Executing
  • 原文地址:https://www.cnblogs.com/yinghu/p/11980970.html
Copyright © 2011-2022 走看看