Close

负速度:如何提升复杂性极限


工程组织最常见的目标之一:快速交付高质量的软件。

查看您的首席信息官或首席技术官的愿景陈述,聆听他们的意见。很有可能他们正在追求这个目标的某种排列方式。虽然这是一个共同的目标,但实现这一必杀技的团队与陷入软件交付困扰的团队之间存在着广泛的差异。一些团队不断将新代码投入生产,几乎没有发生任何事件或对客户产生负面影响,而另一些团队还在为季度发布苦苦挣扎。

工程组织最常见的目标之一:快速交付高质量的软件。

查看您的首席信息官或首席技术官的愿景陈述,聆听他们的意见。很有可能他们正在追求这个目标的某种排列方式。虽然这是一个共同的目标,但实现这一必杀技的团队与陷入软件交付困扰的团队之间存在着广泛的差异。一些团队不断将新代码投入生产,几乎没有发生任何事件或对客户产生负面影响,而另一些团队还在为季度发布苦苦挣扎。

是什么原因导致了这种性能差异?


软件交付的复杂性是交付高质量软件、快速交付和…不交付软件之间的区别。这就是在每周成功发布后敲响胜利的钟声,与一个无所事事的软件交付团队之间的区别,该团队在因数月辛勤工作后发布的最新版本中有六个新错误并导致一次回滚而感到沮丧。

将初创公司推出新产品和功能的速度和质量与成熟的大型组织进行比较。例如,在金融行业,金融科技初创公司在过去十年中削减了大型老牌银行的市场份额。大型银行通常列举金融科技初创公司的不公平优势,这些初创公司的监管监督较少,没有传统、单一的应用资产可供维护。较小的团队规模可以提高灵活性,并能够根据客户需求进行调整。从本质上讲,金融科技公司不像老牌银行那样复杂,这使他们能够以更低的风险更快地行动。虽然它会减慢软件团队的速度,但复杂性并不总是一件坏事。

全球网络
相关资料

防止软件杂乱无章

三环图标
查看解决方案

使用 Compass 来管理组件

软件交付的复杂性


复杂性可能是一件好事:解决棘手的问题是非常有意义的。它激励团队迎接挑战,解决棘手的问题,并扭转行业的局面。相反,在某种程度上,复杂性不再是解决难题,而是会对软件团队产生负面影响。

组织复杂性在降低软件团队效率方面起着关键作用。柯林斯词典将复杂性定义为“许多不同部分以复杂的方式相互连接或关联的状态”。实际上,组织复杂性是指信息、依赖关系、变更、其他团队、工具和请求的汇总,软件团队在与组织其他部门互动时需要了解这些内容。

更高的组织复杂性自然会使快速交付高质量软件变得更具挑战性,因为团队在组织中导航花费的时间比解决棘手的问题要多。成长中的组织很快了解到软件团队已达到复杂性极限——团队在影响工作满意度以及软件制作的质量和速度之前能够应对的复杂性。因此,降低组织复杂性使团队能够专注于解决棘手的问题,更快地交付软件并提高质量,这似乎是合乎逻辑的。我们来探讨一下为什么情况不一定如此。

如何判断您是否接近复杂性极限


达到复杂性极限可能让人感到不可避免,但有一些迹象表明团队已接近极限。首先我要说的是,没有绝对的指标可以告诉您离复杂性极限有多近,但是这些指标可以帮助您确定自己有多接近极限。

团队已达到复杂性极限最明显的指标是,他们花在应对组织复杂性上的时间多于解决本应关注的棘手问题。DORA 变更准备提前期(速度)和变更失败率(质量)指标的趋势显示团队是随着时间的推移减慢还是加速。尽管还有其他因素会影响这些指标,但它们是衡量团队效率的好指标。

开发人员满意度是衡量软件团队组织复杂程度的另一个指标。开发人员比任何其他角色都更喜欢花时间解决棘手的问题,同时也讨厌那些妨碍工作的不必要任务。开发人员满意度低很好地表明组织复杂性是软件团队面临的问题。

Best for managing microservices: Compass

Compass hero screen.

Compass is an ideal server management tool. It simplifies handling microservices architectures by putting disconnected data about engineering work and teamwork together in one central, searchable location. 

Compass' features include: 

  • Get full visibility into service details with relevant APIs, libraries, documentation, key health metrics, latest deployment activities, on-call schedules, and more.
  • Document and track upstream and downstream dependencies and understand performance impact across teams and services.
  • View all incidents, deployments, and other critical activities for a service and its dependencies in one place.

Best for CI/CD: Bitbucket Pipelines

Bitbucket pipeline screenshot.

CI/CD is an acronym for continuous integration and continuous deployment

Bitbucket Pipelines is a CI tool that automates processes. It works right out of the box with Bitbucket, an Atlassian cloud-based version control system. It can use code to manage pipelines, letting users commit pipeline definitions and start builds fast. Bitbucket Pipelines also has CD features that allow you to deploy projects to live infrastructure.

Part of the CI/CD development process is to build microservices. Bitbucket Pipelines fosters efficiency by simplifying workflows and integrating with Bitbucket's cloud version control system.

Best for ITSM: Jira Service Management

Jira Service Management is an add-on for Jira Software, a microservices-based application that lets you control IT services, such as incident, problem, and change management. Jira Service Management’s ITSM features allow IT teams to provide excellent service. There are several reasons why that is the case: 

  • Flexibility: JSM's collaborative approach can help streamline service delivery processes.
  • Automation: The automation suite can help automate recurring tasks.
  • Integration: JSM integrates seamlessly with other Atlassian tools.
  • Security: It encrypts all data in transit using TLS 1.2+.
  • Scalability: JSM is an agile ITSM product that can scale up to the enterprise level.

Best for documentation: Confluence

Confluence is a collaborative documentation tool. It’s ideal for creating and sharing documentation, critical in microservices architectures. Confluence offers a wide range of Confluence templates for various setups, including those using Kubernetes and Docker, a microservices tool that helps developers build, deploy, and run containers. 

Confluence templates include multiple features and apps to help you capture, distribute, and update your technical documentation. Also, with Confluence, you can centralize all your documentation in one place and grant access to users only to what they need.

Best for bug tracking: Jira Software

JSW issues screenshot.

Jira Software excels at bug tracking and project management. It provides a platform to track, prioritize, and resolve bugs effectively through an easily navigable interface. Jira Software's bug-tracking features contribute significantly to successful microservices management. They also address the potential for software sprawl.

With Jira Service Management, Jira's capabilities extend to streamline IT service management, including incident, problem, and change management within microservices and monolithic architecture.

Best for monitoring and logging: Prometheus

Prometheus is an open-source tool developers use to manage microservices. It collects extensive metrics, including counters, gauges, histograms, and summaries, that comprehensively view the application's performance. Prometheus also assists in real-time troubleshooting by providing a comprehensive monitoring and alerting system that enables developers and IT teams to identify and resolve issues promptly.

Best for testing microservices APIs: Postman

The distributed nature of microservices architectures significantly hamper traditional testing methodologies. Testing the entire system becomes complex and time-consuming because each microservice is an independent component. This is where a specific microservices testing tool like Postman comes in handy.

Postman simplifies the process of testing microservices APIs. Developers love that it can automate testing, enabling faster and more accurate results.

Some of the ways Postman simplifies the process of testing microservices APIs include: 

  • Visual request builder: Postman's visual request builder makes it easy to construct HTTP requests without writing code. 
  • Request collections: Postman allows you to organize your API requests into collections, making it easy to group related requests and share them with other team members.
  • Predefined tests: Postman provides a library of predefined tests that you can use to validate the responses from your API requests. 
  • Test scripts: Postman allows you to write test scripts using JavaScript, giving you more control over your tests and enabling you to automate complex testing scenarios.

如何判断您是否接近复杂性极限


达到复杂性极限可能让人感到不可避免,但有一些迹象表明团队已接近极限。首先我要说的是,没有绝对的指标可以告诉您离复杂性极限有多近,但是这些指标可以帮助您确定自己有多接近极限。

团队已达到复杂性极限最明显的指标是,他们花在应对组织复杂性上的时间多于解决本应关注的棘手问题。DORA 变更准备提前期(速度)和变更失败率(质量)指标的趋势显示团队是随着时间的推移减慢还是加速。尽管还有其他因素会影响这些指标,但它们是衡量团队效率的好指标。

开发人员满意度是衡量软件团队组织复杂程度的另一个指标。开发人员比任何其他角色都更喜欢花时间解决棘手的问题,同时也讨厌那些妨碍工作的不必要任务。开发人员满意度低很好地表明组织复杂性是软件团队面临的问题。

提升复杂性极限


Why is monitoring and testing important in microservices architecture?

为了恢复软件团队的效率,组织需要提高复杂性极限。提高复杂性极限本质上意味着增加每个团队在影响工作满意度以及团队交付软件的质量和速度之前可以应对的组织复杂性。

平台工程是寻求提升组织复杂性极限的重要概念。强大的平台工程团队专注于通过将组织复杂性从日常工作中抽象出来,以减少软件团队的认知负荷。如果实施得当,平台工程可以使团队重新平衡大部分精力以解决棘手的问题,减少花在应对组织复杂性上的时间。

What are some common challenges in monitoring microservices?

正是出于这个原因,Atlassian 创建了开发人员体验平台 Compass。Compass 让软件团队可以轻松地通过组件目录、指标和记分卡来应对组织的复杂性,并专注于创建健康的工程文化,从而帮助提升复杂性极限。这里的关键点是,Atlassian 内部的组织复杂性并没有降低,事实上,随着越来越多的组织成员转向微服务架构,组织复杂性还在持续增长。我们减少了软件团队应对这种复杂性所花费的时间,这是简化项目和提升复杂性极限的区别。

Atlassian 拥有 10000 多名员工和超过 17000 个软件组件,但我们的软件团队在很大程度上可以像初创公司一样自由地运营,快速交付高质量的软件。我们成功的关键?提升复杂性极限以提高软件团队的效率。

以下是开始提升复杂性极限的两个操作:

  • 跟踪和评估您的 DORA 指标。您的团队的 DORA 指标如何?如果您还没有跟踪这些指标,那么 Compass 会提供开箱即用的 DORA 指标。
  • 了解和评估开发人员满意度。开发人员在您的软件团队中感觉如何?大多数组织都会进行员工满意度调查。询问按职能领域细分的结果,以深入了解开发人员的满意度。关键问题包括对以下陈述进行评级:
    • 我很自豪能交付
    • 我的工作压力是可以管理的
    • 我明白我的工作对公司目标有何贡献

或者,Compass 会在 CheckOps 例行程序中捕捉这些信息,各团队在例行程序中分享他们上周的感受,以及本来可以做得更好的细节。

提升复杂性极限需要将工具、流程和例行程序结合起来。像 Compass 这样的开发人员体验平台可以帮助您了解系统运行状况、绘制依赖关系并创建持续的例行程序,帮助提升复杂性极限并释放组织中软件交付团队的潜力。

立即免费试用 Compass

What are some best practices for monitoring and testing microservices?

To test and monitor microservices effectively, use monitoring data, set the proper alert levels, automate tests, set up continuous integration and delivery pipelines, and regularly test their performance and security. These methods ensure that your platforms work reliably. 

Join the Atlassian Community for more Microservices articles and discussions.


分享此文章
下一主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

Compass 社区

克服障碍插图

教程:创建组件

地图插图

免费试用 Compass

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up