进化式架构:挑战、实践与组织考量
1. 增量变更与架构选择
在软件开发中,增量变更面临诸多挑战。过去几十年,软件开发的目标多围绕成本降低、资源共享等外部约束,而非敏捷性,这导致许多组织缺乏支持进化式架构的基础。
1.1 不恰当的治理模式
软件架构受设计环境影响。过去,操作系统、数据库服务器等基础设施昂贵,架构师为最大化共享资源设计架构,如SOA模式盛行,形成了以资源共享为目的的治理模式。然而,这种模式会导致组件间的意外耦合,即使隔离措施有效,资源争用问题仍会出现。
如今,开发人员可构建高隔离性的架构,如微服务架构,避免共享环境带来的耦合。但许多公司仍坚持旧的治理模式,强调共享资源和统一环境,这在DevOps等改进措施下已不合时宜。
统一采用单一技术栈是不恰当的治理方式,会导致过度复杂化问题。例如,大型企业常统一使用单一供应商的关系型数据库,虽有一致性和人员可替代性等优点,但多数项目会因过度工程化而受影响。小项目可能只需简单的持久化功能,却要承担企业级数据库的全部复杂性。
微服务架构中,各服务无技术或数据架构耦合,不同团队可根据需求选择合适的复杂度和技术栈,以实现简化目标,使服务栈复杂度与技术需求相匹配。
1.2 强制解耦
微服务架构的目标之一是实现技术架构的高度解耦,使服务可无副作用替换。若开发人员共享代码库或平台,需一定的开发纪律和保障措施来避免耦合。使用不同技术栈构建服务是实现解耦的一种方式,虽有公司担心影响员工跨项目调动,但也有像Chad Fowler这样的架构师坚持采用不同技术栈以避免意外耦合。
大型组织可采用“适度”治理模式,选择简单、中级和复
超级会员免费看
订阅专栏 解锁全文
25

被折叠的 条评论
为什么被折叠?



