微服务开发:从单体架构到微服务的转变
一、微服务概述
在过去几年里,微服务成为了一个日益流行的话题。然而,作为一种新的架构概念,人们对它存在不少误解,就连“微服务”这个术语也容易让人困惑。新手常常不确定微服务的合适规模(提示:这实际上与代码库的大小无关),并且在如何开始采用这种架构风格上感到迷茫。
服务导向架构并不是新鲜事物。在20世纪90年代,各大公司就开始推广Web服务,将其作为解决大型、僵化代码库的方案。当时的承诺是,Web服务将提供可重用的功能,能够被代码库轻松使用。像SOAP和WSDL这样的技术开始得到应用,但似乎始终未能实现易用性的承诺。与此同时,PHP、Ruby和Python等开源语言以及Symfony、Rails和Django等框架,让开发以Web为中心的单体代码库变得更加容易。
几十年后,我们对服务的兴趣再次兴起。那么,发生了哪些变化呢?一方面,随着丰富的Web和移动应用的出现,每个系统现在都是分布式系统。由于云计算的发展,计算和存储资源比以往任何时候都更加便宜。容器正在改变我们对服务部署和运营的看法。许多消费服务已经超出了其单体代码库的承载能力,团队发现难以对其进行扩展。微服务可以帮助解决许多这样的挑战。
二、微服务的先决条件
微服务并非万能药。虽然它们有很多好处(我们稍后会讨论),但也带来了一些特定的挑战。在决定转向微服务之前,拥有一定的基础设施和工具是很重要的。Martin Fowler和Phil Calcado都曾写过关于微服务先决条件的文章。简单来说,在开始开发微服务之前,拥有一定程度的自动化和监控是值得的。团队应该能够舒适地分担值班职责,并且应该有一个管理警报和升级的系统,比如PagerDuty。
超级会员免费看
订阅专栏 解锁全文
10万+

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



