最近认真思考了下移动端的基建,本质上是要回答两个问题:
- 基建解决什么问题
- 移动端的基建应该是什么样
基建其实解决的是开发应用太难的问题:
在计算机刚出现时,用戶是通过指令来操作计算机的,所以那时候用戶对计算机的掌控是非常深度的,后来有了软件的繁荣,用戶使用计算机的方式已经完全不一样了,计算机所发挥的作用也要比从前大的多了,但是现在就连开发应用的开发者都对应用被创建、执行的平台一无所知,我想根本的原因在于计算机、操作系统以及浏览器这些最底层的组件是被设计为给用戶去使用而不是给开发者去开发软件的,在计算机行业发展的过程中不断的往更易于用戶使用的方向去发展,而只有少部分人在为开发者考虑,所以开发应用要比使用应用难太多了。
from 小帅
我们看看那些应用开发中的痛点:
- 环境搭建 - 每次进入一个新的环境,搭建开发环境无疑是很痛苦的,你完全预料不到要踩过多少坑才能写下第一行代码
- 开发过程 - 写代码就轻松了吗???你确定已经了解了团队规范和命名约定吗?你知道有哪些组件是可复用的吗?
- 集成阶段 - 前后端联调、打包很繁琐,还因为容易出错导致团队疲惫不堪
- 测试验收 - 除非你不写代码,否则你无法避免产生错误,如何提高验收过程的效率是永远值得投入的方向
- 软件部署 - 功能越来越多,团队越来越大,发布软件的过程也越来越要小心谨慎,稍不注意就会产生冲突、卡点,影响发布效率
- 沟通协作 - 团队协作也是痛苦,项目/团队越大,要找的人就越多,如何跨过山和大海找到正确的人?
- 产品监控 - 应用热修复的门槛很高,也无法做到想更新就更新,如何在程序运行阶段有效的捕捉问题?
看到这些问题你就知道了,所谓的基建要解决的就是从开发到生产的效率问题,形成一套「开发 → 测试 → 发布 → 监控」可复用的流程,让应用开发变得更加简单高效,让各业务项目组只关心业务逻辑,无需关注技术细节,这是基建的终极目标。
这不是说业务开发不用关心基建,实际上基础设施是一个团队技术能力的沉淀,在业务开发中不断沉淀最佳实践到基建中,才是基建最好的建设方式,哪怕没有独立的基建团队,也不应该影响基础建设的历史进程,大家只是在分工协作上的侧重点不同而已,没有边界上的限制。
从开发角度看,一个 Feature 的生命周期大概是这样的:
为了支撑完整的开发阶段,我们要:
- 建立一系列团队规范
- 建立集成构建平台
- 建立移动端物料库
- 建立三方库管理平台
- 保持系统架构的迭代升级
- …
一切都是围绕提高业务研发效率这个目标。
可能短期内我们无法做到面面俱到,但这不妨碍我们描绘心目中的蓝图:
在业务开发、产品迭代的过程中按图索骥做好能力建设,做到心中有数即可。