免费试用 Compass
Improve your developer experience, catalog all services, and increase software health.
直至 2013 年左右,企业开发企业级软件时,通常会将应用构建为包含大型代码库的单一单元,即单体架构。随着软件日趋复杂以及云计算的日益普及,这种开发方式的实用性逐渐下降。
软件即服务类产品(云端交付的应用)的问世,使企业能够借助 Amazon Web Services 等提供商,快速创建新服务器并增加冗余配置。这不仅保障了服务在升级期间的持续在线,更开启了高速敏捷的全新时代。用户开始期待快速的升级与优化,这也促使企业不得不对自身的开发流程做出调整。
企业开始将应用拆解为多个小型独立的服务,即微服务。例如,企业不再将消息收件箱功能嵌入单体电商平台中,而是会为该功能单独开发一项微服务。
与此同时,开发人员开始组建规模更小、专业性更强的群组,负责对单项服务进行修改与优化,且不会为整个应用带来风险。这些群组通常还会负责其代码的运维工作—这种模式被称为 DevOps。为了推动这些变革,项目经理开始引入全新的方法,例如敏捷,该方法将项目拆解为多个更小、更频繁的版本发布。
继续阅读,了解更多基于微服务的应用构成,同时探索 Atlassian 的 Compass 如何帮助开发人员降低复杂性,充分发挥该架构模式的优势。
什么是微服务?
微服务是负责单一逻辑单元的功能(领域微服务除外,下文将对此进行说明)。多个微服务相组合,即可构建出分布式应用,例如 Jira Software。

微服务有三种类型:
- 1
Domain microservices loosely couple services with related functionality.
- 2
集成微服务可促成互不关联的应用之间的交互。
- 3
工作单元微服务负责处理单一功能。
微服务之间通过应用编程接口 (API) 实现交互。负责开发单项服务的开发人员能够了解其他微服务的内部工作机制,这也是微服务架构相比单体架构的另一项优势。
基于微服务的架构虽具备诸多优势,但也会增加复杂性。正因如此,Atlassian 开发了 Compass,以助力企业在业务拓展的同时简化架构。这款开发人员体验平台可将工程产出与团队协作的所有相关信息整合至一个集中且可检索的位置。
微服务的关键原则
Microservices-based architecture has several distinguishing features. Developers can develop and deploy their services independently using the languages and technologies that suit their components.
Communication between microservices is API-based, allowing access to data from various sources without modification. Individual services can scale based on demand, saving costs and ensuring availability.
These attributes make microservices-based distributed applications flexible and easy to maintain.
微服务的优势
Microservices provide many advantages. They simplify development and project management. Sometimes, they may eliminate the need for separate operations teams since developers can handle operations for the microservices they build.
Some other benefits of microservices include:

弹性和故障隔离
在单体架构中,一处错误会影响整个应用。而微服务具备独立性,单个微服务发生故障不会影响应用的其他部分。

灵活
将应用拆解为更小的模块可加快开发进度,使团队能够更快速地构建、测试和部署软件。

技术多样性
微服务允许开发人员为工作选用适配的工具与技术,从而提升工作效率与生产力。

维护得到改进
能够对单个组件进行测试,让开发人员可以更便捷地发现并修复缺陷,且无需让整个应用离线。

弹性和故障隔离
在单体架构中,一处错误会影响整个应用。而微服务具备独立性,单个微服务发生故障不会影响应用的其他部分。

灵活
将应用拆解为更小的模块可加快开发进度,使团队能够更快速地构建、测试和部署软件。

技术多样性
微服务允许开发人员为工作选用适配的工具与技术,从而提升工作效率与生产力。

维护得到改进
能够对单个组件进行测试,让开发人员可以更便捷地发现并修复缺陷,且无需让整个应用离线。
微服务的挑战
Microservices-based architecture has many benefits, but it also comes with challenges.
One challenge of microservices is that the independent services generate their logs. This is a disadvantage compared to monoliths' centralized logs, which provide a single source of truth for developers and operations teams. Monitoring and infrastructure management are also more complicated since many moving pieces exist. Testing and debugging are challenging because, unlike monoliths, no integrated development environment (IDE) exists.
Atlassian's Compass can help with all these challenges. Compass facilitates collaboration and allows companies to manage the complexities of distributed architectures as they scale. It does this by bringing the disconnected information together in a central, searchable location.
微服务架构有哪些用途?
大型消费类网站通常会采用数百乃至数千项微服务。微服务在以下用例及行业中尤为实用:
- 电商网站,例如 eBay,其购物车、移动应用及消息功能均采用独立的微服务实现。
- 金融机构,例如美国银行,通过微服务与外部服务进行通信,同时还处理用户授权、交易展示等功能。
- 社交媒体平台,例如 Instagram 和 Facebook,借助微服务显示用户的消息源、消息收发、通知提醒及好友关系网络等功能。
微服务管理最佳实践
多年来,开发人员创建了数十条微服务开发的核心最佳实践,以下仅列举其中几项:
- 单一职责原则 (SRP) 规定每个模块或微服务应仅承担一项功能。SRP 持续集成 (CI) 是一种源代码控制方法,会在代码合并至项目前自动执行代码质量检测,无需单独开展 QA 流程,从而提升开发速度。这种 DevOps 最佳实践有助于加快开发速度。CI 先于持续交付 (CD) 执行,后者会运行自动化构建工具,确保软件始终处于可部署状态。
- API 网关可简化微服务之间的通信,管理身份验证与授权流程,提升安全性。
- 异步通信可保障微服务的自主性,减少可能导致应用功能响应迟缓的依赖关系。
- 微服务版本控制至关重要。这一实践能够平稳实现过渡,最大限度降低服务中断的可能性。
由 Jira Software 提供技术支持的 Atlassian Open DevOps,可帮助团队轻松实现 Atlassian 及合作伙伴工具的自动集成,让团队能够专注于软件的构建与运维工作。
使用 Compass 更好地管理微服务架构
Atlassian 的 Compass 是一款开发人员体验平台,可将分布式软件架构与协作团队整合至同一平台。它能为团队提供所负责的所有组件与服务的便捷概览,同时内置软件组件目录,帮助开发人员轻松查找所需资源。

Compass 支持便捷的组件管理、责任归属跟踪与关联监控,同时还能实时追踪变更情况。
将 Compass 集成到开发环境十分简便,因为它具有可自定义的用户界面,并与内部和第三方工具兼容。了解如何使用 Compass 管理微服务架构,以及 Compass 如何将互不关联的信息整合到一个统一的中心位置。
微服务:常见问题
What tools do people commonly use in microservices?
企业通常会使用 Kubernetes 和 Docker 等容器化工具。同时,在微服务与其客户端之间,也常使用 API 网关。此类网关可执行各类 API 流量相关功能,例如身份验证、访问控制以及负载均衡。
微服务与单体式架构有何不同?
单体应用是作为单一系统运行的大型代码库,进行更新和调试时需要使系统停机。而微服务架构是由多个小型、独立的功能模块构成的分布式应用,开发人员无需让整个应用离线,即可对这些模块进行升级、优化和调试。这种架构简化了系统扩展流程,同时有助于提升开发速度。
微服务如何影响 DevOps?
了解 DevOps 的人都清楚,持续集成与持续交付(DevOps CI/CD 管道)是 DevOps 方法论的核心支柱。微服务的模块化特性与这种方法完美契合,使开发人员能够快速实现小型、高频的版本创建、测试与部署。
欢迎加入 Atlassian 社区,获取更多微服务相关文章与讨论内容。