研发面临的挑战

横向伸缩要求

由于互联网流量的突发性,在某些模块上,流量的变化很大。

能不能通过增加应用副本抗住流量的增加?应用的副本数能不能随着流量大小进行自适应调节?

这些是在写代码时,就应该考虑的。

交付频率加快

每次迭代至少需要进行一次完整交付。

项目越大、代码越多,新增一个新功能需要的时间就越长,需要进行的测试就越多。

如何加快交付,能不能选择一批用户先试用?再逐步放量,降低交付的风险?

可靠性要求高

一行代码写出 Bug,带崩整个系统的事情经常发生。

如何减少 Bug 的爆炸半径,将破坏系统的行为约束在一个较小的范围。在故障发生时,如何快速地发现、恢复?

任何一个微小的错误,在大流量的放大下,都会非常的致命。互联网下的应用,对系统的容错性、稳定性、自愈能力都提出了新的要求。

技术栈多样化

新的技术不断涌现,同一个系统中,使用不同的技术栈可能更具优势。

典型的,前后端分离,前端用 TypeScript,后端用 Python。实际上,在后端部分,我们可能还会继续拆分,使用 Rust 实现核心,使用 Go 实现云原生的对接,使用 Python 提供 API。

选择多语言多框架技术栈的原因可能有很多,可能和团队技能有关,也可能和具体场景下对性能的要求有关,也有可能和依赖的某些特性相关。

技术栈一旦多样化,管理这些服务的成本就会急剧上升。

results matching ""

    No results matching ""