作者 | Shekhar Gulati
策划 | Tina
微服务“很香”,它有许多优势,比如更快的开发、更好的可扩展性、更小的独立团队等等。但是,很多团队却在微服务上举步维艰,没有很好利用其优势。原因到底是什么?这是本文作者试图回答的。
过去几年,我对推进数字化转型的多家产品团队进行了架构审查。我发现:大多数团队都是遵循微服务架构来构建产品。更快的开发、更好的可扩展性、更小的独立团队、独立部署和使用正确的技术来完成工作等等,这些优势让他们有充足的理由采用微服务架构。
但是,我经常发现:很多团队在微服务上举步维艰。他们并未充分利用微服务的优势。为什么许多团队在微服务之路上“举步维艰”?这是我试图回答的。
如果你是微服务新手,我推荐你阅读 Martin Fowler 关于微服务的文章。
https://martinfowler.com/articles/microservices.html
这篇文章阐释了何为微服务架构:
微服务架构的风格是一种将单个应用程序开发成一套小型服务的方法,每个应用程序都在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)进行通信。这些服务是围绕业务功能而构建的,并且可以由完全自动化的部署机制来独立部署。这些服务只有最低限度的集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。
1 管理层低估开发微服务的复杂性
我曾与许多非常看好微服务的客户一起合作过。对他们来说,微服务就是解决他们所有问题的“灵丹妙药”。
当讨论逐渐深入,我发现:大多数团队及其管理层都低估了微服务开发的复杂性。
要开发微服务,开发人员需要一个高效的本地环境设置。
随着系统中服务数量开始增加,在一台机器上运行应用程序的子集变得越来越困难。特别是当你使用消耗较多内存的语言(如 Java)构建应用程序时,更是如此。
下面是与本地开发设置相关的要点:
1.本地开发的第一个重要方面是要有一个好的开发机器。
我发现,大多数组织想要使用所有最新的、最先进的技术,但却不想替换掉糟糕的 Windows 开发机器。开发人员受限于他们的开发机器。我曾见过开发人员使用 VDI 映像或配置交叉的机器来构建基于微服务的系统。这不仅降低了他们的工作效率,而且让他们无法完全投入工作。使用糟糕的开发机器带来的副作用就是,开发人员无法得到快速反馈。如果知道了必须等数分钟才能运行集成测试套件,那么你就不会编写更多的集成测试套件,免得让你更痛苦。糟糕的开发机器将会导致糟糕的开发实践。