其他
导致微服务失败的 11 个原因
Shekhar Gulati
读完需要
10分钟速读仅需 3 分钟
作者 | Shekhar Gulati@Medium
译者 | Sambodhi策划 | Tina@infoq
本地开发的第一个重要方面是要有一个好的开发机器。我发现,大多数组织想要使用所有最新的、最先进的技术,但却不想替换掉糟糕的 Windows 开发机器。开发人员受限于他们的开发机器。我曾见过开发人员使用 VDI 映像或配置交叉的机器来构建基于微服务的系统。这降低了他们的工作效率,使他们无法完全投入工作。使用糟糕的开发机器带来的副作用就是,开发人员无法得到快速的反馈。如果你知道必须等待数分钟才能运行集成测试套件,那么你就不会编写更多的集成测试套件,免得给你带来痛苦。糟糕的开发机器将会导致糟糕的开发实践。 一旦你为开发人员配备了合适的开发机器,那么下一步就是确保所有服务都使用构建工具。你应该能够在一台新机器上构建整个应用程序,而不需要进行太多配置。根据我在微服务方面的经验,使用能够构建整个应用程序的根构建脚本也会有所帮助。 下一个要点就是要让开发人员能够轻松地在他们的系统上运行应用程序的各个部分。在配置了所有端口和卷的情况下,你应该使用多个 docker-compose
文件来提供不同的服务。接下来,如果你使用的是类似于 Kubernetes 的容器编排工具,那么你应该投资类似于 Telepresence 这样的工具,以便轻松调试 Kubernetes 集群中的应用程序。
团队成员必须建立一个工作的社会契约,以避免最后写入者胜出(Last write wins,LWW)问题。一个开发人员可以删除其他开发人员为他们的工作编写的数据。这种工作方式既痛苦又容易失败,迟早会影响整个团队。 开发人员害怕实验,因为他们的工作会影响其他团队成员。我们都知道,更好的学习方法是实验和快速反馈。有了共享数据库,就可以进行实验了。我们需要进行实验,以提出数据库模式,并执行任务,如性能调优之类。 另一个副作用就是,很难单独测试更改。你的集成测试将变得不可靠,从而进一步降低了开发速度。 共享数据库必须像宠物一样对待,因为你不希望它出现不一致和不可预测的状态。你可能会遇到这样一种场景,开发人员希望在表是空的时候测试边缘情况,但其他开发人员需要一个表来记录。 只有共享数据库拥有系统工作所需的所有数据。随着时间的推移,团队成员失去了更改的可追溯性,因此没有人知道,他们该如何在他们的机器上复制相同的设置。唯一的方法是获取完整的数据库转储并使用它。 如果未连接到网络,就很难开展工作。这种情况通常发生在你通勤时间过长或乘飞机的时候。
我个人更喜欢 mono repos,因为我发现他们真的很方便。我遇到的大多数开发人员都认为它是一种反模式。我同意 Dan Lua 的观点,他提到了 mono repo 的以下好处:
简化的组织 简化的依赖关系 工具 跨项目变更
Note.js 比 Java 性能更好。 如果你的工作负载是基于 I/O 的,Node.js 通常会表现的更好。但在任何计算密集型的工作负载上,Java 都胜过 Node.js。通过响应式范式(reactive paradigm),你可以使用 Java 为 I/O 工作负载提供更好的性能。在 I/O 工作负载方面,Spring Boot Reactor 的性能相当于 Node.js。 Node.js 比 Java 消耗更少的内存。 这在一定程度上是正确的说法。Java Spring Boot 应用程序并不像大多数想象的那么糟糕。我在一个 Spring Boot Java 微服务上运行了负载测试,内存消耗仍然没超过 1 GB。你可以通过 OpenJ9 JVN,限制对类路径的依赖,并通过调优默认的 JVM 参数来优化 Java 内存利用率。此外,在 Java 中还有 Spring Boot 的新替代品,如 Micronaut 和 Quarkus,它们消耗的内存相当于 Node.js。 Node.js 比 Java 效率更高。 这取决于编写代码的开发人员。使用静态类型和静态分析工具的 Java 可以帮助在开发生命周期的早期发现问题。
找到成熟的企业软件开发人员有多容易? 重新培训开发人员掌握新技术有多容易?我们发现 Java 开发人员可以相对容易地学习 Golang。 初始团队之外的开发人员贡献、转移和维护其他人编写的代码有多容易? 就工具和库的方面而言,生态系统有多成熟?
设计文档。 C4 模型中的上下文和容器图。 以架构决策记录的形式跟踪关键架构决策。 开发人员入门指南。
如果你是一家资源有限的初创公司,我的建议是,你要重新考虑微服务战略。了解你所面临的问题是什么。
想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信
申请备注(姓名+公司+技术方向)才能通过哦!
END
#接力技术,链接价值#
精彩推荐
漫画推荐