无论我们的项目简单还是复杂,是后台管理应用还是海量用户的高并发应用。我们都在时时刻刻与技术架构为伍,在不同的路上精进。
科学与艺术
计算机本质上是一门科学,工程师不断地利用这门科学创造现代化的世界,也在创造新的价值。我们以码农自居,却无时无刻不在打磨我们的代码,成为一个匠人。我们在代码中套用各种框架,使用多种设计模式,又一直在演进项目架构。有时候,我们可以自豪地表示,尽管它称之为计算机科学,但它通常是一门艺术。
单体与微服务
在很长一段时间,我们的应用一直都属于单体应用。因为它足够简单,不需要关注代码以外的事情。用户量级不足以让应用向更高规格扩展,巨石应用足以应对当前场景时,我们也没有动力去深入演进架构。
模型-视图-控制器 (MVC) 结构是大多数流行的 Web 框架提供的标准软件开发方法,显然是一种分层架构。数据库正上方是模型层,它通常包含有关数据库中数据类型的业务逻辑。顶部是视图层,通常是带有动态嵌入代码的 CSS、JavaScript 和 HTML。在中间,你有控制器,它有各种规则和方法在视图和模型之间传输数据。
这种模式在微服务概念没有出现以前,没有人觉得它是有问题的,无论是 SSH、SSM、SpringMVC 都在此基础上一步步改进。直到有一天,SpringBoot 为首的微服务治理框架出现,彻底对单体应用进行了颠覆式的革命。
微服务将应用分割的足够小,此时,我们除了关注代码本身的逻辑,还需要了解服务之间的通信,服务的故障排查难度加大,数十个甚至上百个服务的部署与监控难度陡然升高。
现在提出的 Serverless 无服务模式又可能是一场新的革命,总之,在需求不断变化,用户体量规模化的今天,架构师们一直在探索下一种可能,也许只是一次尝试,也许就成了下一种架构。
总结
近期,看了周老师 的 凤凰架构,启发良多。如今,作者出了同名书 《凤凰架构》. 之前拜读过作者的 《深入理解 Java 虚拟机3》这本书,周老师的确对知识点的整体把控和细节的处理非常到位。相信这本《凤凰架构》依旧能让大家对架构有更多更深入的认知。