【CSDN 编者按】本文作者从工程师、技术领导者和开发人员角度,在发现自己身陷应用程序“管道”复杂性的困境之中,如何巧妙解决困境!
原文链接:https://yrashk.medium.com/repeating-yourself-thrice-doesnt-turn-you-into-a-3x-developer-a778495229c0
作者 | Yurii Rashkovskii译者| 弯月
责编 | 夏萌
出品 | CSDN(ID:CSDNnews)
3是一个神奇的数字。我们可在脑海中集中精力思考的事情不能超过3个。因此,从逻辑上讲,三层软件架构(数据库、后端和前端)是一个很好的模型。
既然如此,为什么构建一个功能需要花费这么多时间呢?
作为工程师、技术领导者和开发人员,我们经常发现自己身陷应用程序“管道”复杂性的困境之中。
三层模型给开发人员带来了一系列耗时的琐事。三层之间无数字节被打乱、重复定义三遍数据结构,我们苦苦挣扎于解决不同代码库之间的同步,同时还要努力优化性能、管理数据库模式变化,并保持数据的一致性。
因此,我们十分渴望能拥有更多的时间来创新,并为用户构建酷炫的新功能。
我们忘记了即使在清晰的三层架构中,需要考虑的事情也不止三个。作为一个单独的开发者小团队,我们必须留出一部分空间思考非技术问题,例如用户、他们的需求和沟通。即使在技术领域,三层架构中每一层之间的完全分离也迫使我们必须考虑另外两件事:相邻层之间的通信和同步。
三层架构以及每一层的集成让我们疲于忙碌。假设你有一个小型博客应用程序,你想为每篇博客文章添加一个“类别”。听起来是一件很简单的事情。但是,如果遵循现代 Web 开发的所有良好实践,则需要完成下列所有操作:
最终,在用户看来,不过是博客文章顶部多了一小行文本。但对于开发人员来说,这是一项艰巨的任务,需要数十小时的工作才能实现。
这种低效也会影响到最终用户。在各层之间移动字节是有代价的:网络延迟、数据的序列化以及反序列化等。我们很难让用户相信加载一篇有用信息不超过几个字节的帖子实际上需要通过 3G 网络传输几十秒的时间。我们很难向用户解释为什么看似一件很简单的功能,我们却无法实现,因为会占用太多资源。
我们如何走到了这一步?
三层架构是一个巧妙的构造,凝结了寻求优化劳动分工的数字工匠的聪明才智。
三层结构的出现不是为了成为 Web 开发人员的桎梏,而是为了应对 Web 应用程序日益加剧的复杂性。人类摆脱原始社会的狩猎与采集,文明高度发展正是依托于劳动的专业化。三层模型能够让各个专业职能追求卓越。虽然这种模型可以很好地服务于拥有专业团队的大型组织,但严格应用到小企业则会适得其反。另外,同步和通信的开销,专业化与分工会导致交付周期加长,这个问题也不容忽视。你见过多少这样的团队能够快速交付成果?
如果你的工作是流水线式的,也就是说,你只需提供稳定的、可预测的输入和输出,而且时间安排是固定的,那么专业化能够大放异彩。然而,小型组织和个人开发者没有这样奢侈的环境。相反,更快地反应和适应更适合他们。也就是说,交付周期越短越好。
前进之路
值得庆幸的是,除了我们之外,还有很多人都意识到了这些挑战。新一代工具正在出现,以弥合差距,并实现快速开发应用程序的目标。
如何解决这个问题
开发人员采用了多种解决方法来缓解三层模型的问题,其中包括:
上述所有解决方案都是朝着正确方向迈出的一步,但我们仍然不满意快速开发应用程序工具的现状。我们相信,在不久的将来,构建一个可投入生产的应用程序所需工作量将比现在少十倍。我们不只是默默等待新工具的到来,而是正在编写这些工具,努力将这一愿景变为现实。虽然我们还没有找到方法来消除三重工作,但如今我们的项目从一个想法到可运行的 Web 应用程序所需的时间已大幅削减,而且无需牺牲协作开发的便利性和部署的速度。
避免下一个项目承担三重工作
三层模型有其缺点,特别是对于独立开发人员和小型团队来说,它会导致开发人员在重复性的任务上花费过多时间,影响应用程序的性能和开发速度。