Close

微服务:了解微服务的含义及其优势

大约在 2013 年之前,公司在构建企业软件时通常将应用构建为具有大型代码库的单一单元,即单体式架构。随着软件日趋复杂,并且云计算逐渐成为主流,这种方法的实用性明显减弱。

软件即服务产品(云交付应用)的出现使公司能够与 Amazon Web Services 等提供商合作,快速创建新的服务器并增加冗余。这确保了服务在升级期间始终保持在线,还开创了一个速度和敏捷性共存的新时代。用户开始希望实现快速升级和改进,这促使公司改变开发流程。

公司开始将应用分解为规模较小的独立服务或微服务。例如,他们可能不会将消息收件箱用作单体式电子商务平台的一部分,而是为该功能创建单独的微服务。

与此同时,开发人员开始分成规模更小、更专业的小组,并在不影响整个应用的情况下修改和改进个别服务。这些小组通常还负责代码的运行,这种模式被称为 DevOps。为给这些变化提供便利,项目经理开始开发新方法,例如敏捷开发,利用该方法,可将项目划分为更小、更频繁的版本。

请继续阅读,详细了解有关基于微服务的应用的剖析。此外,还可了解 Atlassian 的 Compass 如何降低复杂性,同时让开发人员从这种架构模式中受益。

微服务是用于持续交付和部署大型复杂应用的小型单元的集合。

Compass 徽标。

免费试用 Compass

改善您的开发人员体验、为所有服务编制目录,并改善软件运行状况。

什么是微服务?


微服务是一种负责单个逻辑片段的函数(领域微服务除外,详见下文)。若将多项微服务结合起来,可以创建分布式应用,例如 Jira Software

微服务插图

微服务有三种类型:

  1. 领域微服务可将服务与相关功能松散耦合在一起。
  2. 集成微服务可促进不相关应用之间的交互。
  3. 工作单元微服务可处理单一函数。

微服务之间通过应用编程接口 (API) 进行交互。与单体式架构相比,微服务还具有另一个优势,即开发单项服务的开发人员可以学习其他微服务的内部运作原理。

基于微服务的架构提供了许多好处,但也增加了复杂性。正因如此,Atlassian 开发了 Compass,旨在帮助公司在扩展过程中降低复杂性。借助此开发人员体验平台,可将有关工程产出及团队协作的所有信息整合到一个集中且可搜索的位置。

微服务的关键原则


基于微服务的架构有几个显著特征。开发人员可以使用适合其组件的语言和技术独立开发和部署服务。

微服务之间的通信基于 API,无需修改即可访问来自各种来源的数据。单项服务可根据需求进行扩展,从而节省成本并确保可用性。

这些属性使基于微服务的分布式应用变得灵活且易于维护。

在微服务架构中,每个组件都可以独立开发、部署、运营、变更和重新部署,而不影响其他服务的功能或应用的完整性。

微服务的优势


微服务具有许多优势。它们可简化开发和项目管理。有时,它们可能不需要单独的运营团队,因为开发人员可以独自处理他们所构建的微服务的运营事宜。

微服务的另外一些优势包括:

天平插图

弹性和故障隔离

在单体式架构中,一个错误就会影响整个应用。但是,微服务是彼此独立的。一次故障不会影响应用的其他部分。

敏捷开发示意图

灵活

将应用分成较小的区块可加快开发速度。这样做使团队能够更快地构建、测试和部署软件。

工具箱插图

技术多样性

借助微服务,开发人员可以为特定作业选择适合的工具和技术,从而提高效率和生产力。

堆叠块插图

维护得到改进

利用测试单个组件的功能,可以更加轻松地查找和修复缺陷,而无需使整个应用离线。

微服务的挑战


基于微服务的架构有许多优势,但也伴随着一些挑战。

微服务面临的一项挑战是各项独立服务会生成自己的日志,而无法像单体式架构的集中式日志一样为开发人员和运营团队提供单一数据源,这是微服务的一个缺点。由于存在许多活动部分,因此监控和基础设施管理也更加复杂。与单体式架构不同,由于微服务不存在集成开发环境 (IDE),因此在测试和调试方面也面临挑战。

Atlassian 的 Compass 可以帮助应对所有这些挑战。Compass 可促进协作,并使公司能够在扩展过程中管理复杂的分布式架构。它将互不关联的信息存放到一个可搜索的中心位置来实现这一点。

开发蔓延

从单体式架构向微服务迁移意味着复杂性加剧。多个团队会在更多的地方创建更多的服务。确定不同组件之间的关系、特定组件的负责人,以及如何避免对依赖组件造成负面影响,这些都可能变得非常棘手。这种开发蔓延若得不到管理,就会导致开发速度减慢和运营绩效降低。随着系统不断发展,必须要有一支经验丰富的运营团队来管理不断的重新部署和架构中的频繁变更。

缺少明确的责任

微服务架构增添了由谁负责什么的困惑。DevOps 团队可以运行 API、组件库、监控工具和 Docker 镜像的组合,以便用户部署应用。深入了解组件的相关信息非常重要,其中包括组件的负责人、资源以及与其他组件之间不断演变的关系。众多团队之间需要精准沟通和协调,以便参与其中的每个人都能轻松找到了解某个产品所需的知识。

基础架构成本呈指数级增长

添加至生产部署中的每项新微服务都有自己的成本,例如在测试套件、部署手册、托管基础架构和监控工具等方面。

组织开销增加

需要更高层面的沟通和协作来协调微服务架构团队之间的更新和对接。

调试

调试包含多个微服务(各自都有自己的日志集)的应用可能具有挑战性。单个业务流程可能会在不同的时间跨多台计算机运行,从而进一步加大调试难度。

事件响应

掌握微服务事件响应情报非常重要,包括诸如谁在使用微服务、微服务被部署到何处、微服务的部署方式,以及在出现问题时与谁联系等信息。

微服务架构有哪些用途?


大型消费者网站通常会使用数百或数千项微服务。微服务尤其适用于以下用例和行业:

  • 电子商务网站(如 eBay)使用单独的微服务来处理购物车、移动应用和消息传递。
  • 金融机构(如美国银行)使用微服务与外部服务进行通信。这些机构还使用微服务来处理用户授权和显示交易等功能。
  • 社交媒体平台(如 Instagram 和 Facebook)使用微服务来显示用户的新闻提要、消息、通知和好友网络。

微服务管理最佳实践


多年来,开发人员为微服务开发创建了数十种基本的最佳实践。下面仅举几个例子:

  • 单一功能原则 (SRP) 规定,每个模块或微服务应只有一项功能。SRP 持续集成 (CI) 是一种源代码控制方法,可在合并到项目之前自动进行代码质量检查,无需单独的质量保证流程,从而提高了速度。此 DevOps 最佳实践有助于提高速度。CI 先于持续交付 (CD),后者会运行自动构建工具,使软件随时可以部署。
  • API 网关可简化微服务之间的通信,管理身份验证和授权,并提高安全性。
  • 微服务之间的异步通信可保留自主性,减少可能减慢应用功能的依赖关系。
  • 当开发人员实施重大变更(例如移除整个操作)时,微服务版本控制至关重要。此实践可以实现平稳过渡,最大限度地减少服务中断的可能性。

Atlassian 的 Open DevOps 由 Jira Software 提供支持,使团队可以轻松地自动集成 Atlassian 和合作伙伴的工具,从而专注于软件的构建和运营。

使用 Compass 更好地管理微服务架构


Atlassian 的 Compass 是一个开发人员体验平台,将分布式软件架构和团队协作整合到了一个位置。它可以为团队处理的所有组件和服务提供便捷的概述。它还包括一个软件组件目录,可帮助开发人员轻松找到所需的内容。

微服务插图

Compass 可帮助轻松进行组件管理、所有权跟踪和关系监控。它还可以实时跟踪变更。

将 Compass 集成到开发环境简单易行,因为它具有可自定义的用户界面,并与内部和第三方工具兼容。了解如何使用 Compass 管理微服务架构,以及 Compass 如何将互不关联的信息整合到一个统一的中心位置。

微服务:常见问题


在微服务中,人们通常使用哪些工具?

企业经常使用容器化工具,例如 Kubernetes 和Docker,还经常在微服务与其客户之间使用 API 网关。这些网关可执行 API 流量功能,如身份验证、访问控制和负载平衡。

微服务与单体式架构有何不同?

单体式架构是作为一个系统运行的大型代码库。它们需要系统停机才能进行更新和调试。微服务架构是分布式应用,具有较小的独立功能区块。开发人员无需使整个应用离线,即可升级、改进和调试这些模块。这就简化了扩展工作,并提高了开发速度。

微服务如何影响 DevOps?

了解 DevOps 的人皆知,持续集成和持续交付(DevOps CI/CD 管道)是 DevOps 方法的支柱。微服务的模块化特性与这种方法完美契合。微服务使开发人员能够快速创建、测试和部署小型、频繁的版本。

加入 Atlassian 社区,查看更多微服务文章和讨论。

借助 Compass 浏览微服务

使用微服务架构时,Atlassian Compass 可管理扩展的分布式架构的复杂性。它是一个可扩展的开发人员体验平台,可将有关工程产出及团队协作的分散信息整合到一个集中且可搜索的位置。除通过组件目录帮助您控制微服务蔓延之外,Compass 还可帮助您制定最佳实践并使用记分卡来衡量软件的运行状况。此外,您也可借助在 Atlassian Forge 平台上构建的扩展功能,获得整个 DevOps 工具链的数据和洞察信息。

Compass 微服务插图