对产品架构的思考

从哪些方面去思考产品架构

1. 针对App

  • 如何让业务开发工程师方便安全地调用网络API?然后尽可能保证用户在各种网络环境下都能有良好的体验?
  • 页面如何组织,才能尽可能降低业务方代码的耦合度?尽可能降低业务方开发界面的复杂度,提高他们的效率?
  • 当数据有在本地存取的需求的时候,如何能够保证数据在本地的合理安排?如何尽可能地减小性能消耗?
  • iOS应用有审核周期,如何能够通过不发版本的方式展示新的内容给用户?如何修复紧急bug?

2.针对团队:

  • 收集用户数据,给产品和运营提供参考
  • 合理地组织各业务方开发的业务模块,以及相关基础模块
  • 每日app的自动打包,提供给QA工程师的测试工具

架构设计的方法

  • 第一步:搞清楚要解决哪些问题,并找到解决这些问题的充要条件:清楚你要做什么,业务方希望要什么。而不是为了架构而架构,也不是为了体验新技术而改架构方案

  • 第二步:问题分类,分模块

  • 第三步:搞清楚各问题之间的依赖关系,建立好模块交流规范并设计模块

  • 第四步:推演预测一下未来可能的走向,必要时添加新的模块,记录更多的基础数据以备未来之需

  • 第五步:先解决依赖关系中最基础的问题,实现基础模块,然后再用基础模块堆叠出整个架构

  • 第六步:打点,跑单元测试,跑性能测试,根据数据去优化对应的地方
    总而言之就是要遵循这些原则:自顶向下设计(1,2,3,4步),自底向上实现(5),先测量,后优化(6)。

什么样的架构是好架构?

  • 代码整齐,分类明确,没有common,没有core
  • 不用文档,或很少文档,就能让业务方上手
  • 思路和方法要统一,尽量不要多元(先确定解决思路,再开搞)
  • 没有横向依赖,万不得已不出现跨层访问
  • 对业务方该限制的地方有限制,该灵活的地方要给业务方创造灵活实现的条件
  • 易测试,易拓展
  • 保持一定量的超前性
  • 接口少,接口参数少
  • 高性能

关于架构分层

原则:自顶向下的设计方式

  • 先确定所有要解决的问题
  • 确定都有哪些模块
  • 这些模块再往下细化设计
  • 把这些列出来的问题和模块做好分类。
  • 分类之后不出意外大多数都是三层。如果发现某一层特别庞大,那就可以再拆开来变成四层,变成五层。

热评文章