Close

Velocidade negativa: como elevar o limite de complexidade


Um dos objetivos mais comuns de uma empresa de engenharia é entregar software de alta qualidade com rapidez.

Dê uma olhada na declaração de visão do CIO ou CTO e escute o que ele tem a dizer. É provável que eles estejam buscando alguma permutação desse objetivo. Embora seja um objetivo comum, há um amplo espectro entre equipes que atingem esse nirvana e equipes presas no purgatório de entrega de software. Algumas equipes estão sempre colocando novos códigos em produção com poucos incidentes ou impacto negativo no cliente, enquanto outras enfrentam dificuldades com lançamentos trimestrais.

Um dos objetivos mais comuns de uma empresa de engenharia é entregar software de alta qualidade com rapidez.

Dê uma olhada na declaração de visão do CIO ou CTO e escute o que ele tem a dizer. É provável que eles estejam buscando alguma permutação desse objetivo. Embora seja um objetivo comum, há um amplo espectro entre equipes que atingem esse nirvana e equipes presas no purgatório de entrega de software. Algumas equipes estão sempre colocando novos códigos em produção com poucos incidentes ou impacto negativo no cliente, enquanto outras enfrentam dificuldades com lançamentos trimestrais.

O que causa essa discrepância de desempenho?


A complexidade na entrega de software é a diferença entre fornecer software de alta qualidade com rapidez ou… não. É a diferença entre tocar o sino da vitória após um lançamento bem-sucedido toda semana e uma equipe de entrega de software desengajada, frustrada porque meses de trabalho na versão mais recente resultaram em seis novos bugs e um rollback.

Compare a velocidade e a qualidade com que as startups lançam novos produtos e recursos com as de uma grande empresa estabelecida. Por exemplo, no setor financeiro, as startups de fintech reduziram a participação de mercado de bancos grandes e estabelecidos na última década. Os grandes bancos costumam citar as vantagens injustas das startups de fintech, que operam com menos supervisão regulatória e sem propriedades de aplicações monolíticas legadas para manter. O tamanho menor da equipe permite maior agilidade e a capacidade de se adaptar com base nas necessidades do cliente. Em essência, as fintechs não têm a complexidade dos bancos estabelecidos, o que lhes permite agir mais rápido e com menos riscos. Embora isso possa desacelerar as equipes de software, a complexidade nem sempre é uma coisa ruim.

Rede global
Material relacionado

Domine a dispersão de software

ícone de três anéis
VER SOLUÇÃO

Gerencie componentes com o Compass

Complexidade na entrega de software


A complexidade pode ser uma coisa boa: é muito gratificante resolver problemas complicados. Isso motiva as equipes a enfrentar desafios, lidar com problemas difíceis e revolucionar todo um setor. Por outro lado, há um ponto em que a complexidade não é mais a solução de um problema difícil e tem impactos negativos nas equipes de software.

A complexidade organizacional desempenha um papel fundamental na redução da eficácia das equipes de software. O dicionário Collins define complexidade como “o estado de ter muitas partes diferentes conectadas ou relacionadas entre si de uma forma complicada”. Em termos práticos, a complexidade organizacional é o conjunto de informações, dependências, mudanças, outras equipes, ferramentas e solicitações que as equipes de software precisam navegar ao interagir com o resto da empresa.

Níveis mais altos de complexidade organizacional sem dúvida tornam mais difícil fornecer software de alta qualidade com rapidez, porque as equipes passam mais tempo navegando pela empresa do que resolvendo problemas complicados. As empresas em crescimento logo descobrem que as equipes de software atingem um limite de complexidade: o nível de complexidade com o qual as equipes conseguem lidar antes que isso afete a satisfação no trabalho e a qualidade e a velocidade do software produzido. Pode parecer lógico, então, que a redução da complexidade organizacional permita que as equipes se concentrem na solução de problemas complicados, entregando software mais rápido e com maior qualidade. Vamos explorar por que esse nem sempre é o caso.

Como saber se você está se aproximando do limite de complexidade


Atingir o limite de complexidade pode parecer inevitável, mas há alguns indicadores de que as equipes estão se aproximando do limite. Vou começar dizendo que não há uma métrica absoluta que diga se você está perto ou não do limite de complexidade, mas esses indicadores podem ajudar você a ter uma noção.

O indicador mais claro de que uma equipe atingiu o limite de complexidade é quando ela passa mais tempo lidando com a complexidade organizacional do que resolvendo os problemas nos quais deveria se concentrar. Analisar as tendências do DORA de tempo de espera para mudanças (velocidade) e da taxa de falha para mudanças (qualidade) mostra se as equipes aumentam ou diminuem a velocidade com o tempo. Embora existam outros fatores que influenciam essas métricas, elas são um bom indicador da eficácia da equipe.

A satisfação do desenvolvedor é outro indicador da complexidade organizacional que as equipes de software estão enfrentando. Mais do que qualquer outro perfil de função, os desenvolvedores adoram gastar tempo resolvendo problemas complicados e detestam tarefas desnecessárias que atrapalham o trabalho. A baixa satisfação do desenvolvedor é uma boa indicação de que a complexidade organizacional é um problema para a equipe de software.

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.

Como saber se você está se aproximando do limite de complexidade


Atingir o limite de complexidade pode parecer inevitável, mas há alguns indicadores de que as equipes estão se aproximando do limite. Vou começar dizendo que não há uma métrica absoluta que diga se você está perto ou não do limite de complexidade, mas esses indicadores podem ajudar você a ter uma noção.

O indicador mais claro de que uma equipe atingiu o limite de complexidade é quando ela passa mais tempo lidando com a complexidade organizacional do que resolvendo os problemas nos quais deveria se concentrar. Analisar as tendências do DORA de tempo de espera para mudanças (velocidade) e da taxa de falha para mudanças (qualidade) mostra se as equipes aumentam ou diminuem a velocidade com o tempo. Embora existam outros fatores que influenciam essas métricas, elas são um bom indicador da eficácia da equipe.

A satisfação do desenvolvedor é outro indicador da complexidade organizacional que as equipes de software estão enfrentando. Mais do que qualquer outro perfil de função, os desenvolvedores adoram gastar tempo resolvendo problemas complicados e detestam tarefas desnecessárias que atrapalham o trabalho. A baixa satisfação do desenvolvedor é uma boa indicação de que a complexidade organizacional é um problema para a equipe de software.

Elevação do limite de complexidade


Why is monitoring and testing important in microservices architecture?

Para retornar à eficácia da equipe de software, as empresas precisam aumentar o limite de complexidade. Elevar o limite de complexidade significa em essência aumentar a complexidade organizacional que cada equipe pode enfrentar antes que isso afete a satisfação no trabalho e a qualidade e a velocidade com que a equipe lança o software.

A engenharia de plataforma é um conceito importante ao tentar elevar o limite de complexidade de uma empresa. Equipes fortes de engenharia de plataforma se concentram em reduzir a carga cognitiva das equipes de software, abstraindo a complexidade da empresa do trabalho diário. Quando implementada como deveria, a engenharia da plataforma permite que as equipes reequilibrem a maior parte do esforço para resolver problemas complicados, com menos tempo gasto na complexidade organizacional.

What are some common challenges in monitoring microservices?

A Atlassian criou o Compass, uma plataforma de experiência para desenvolvedores por esse motivo. O Compass ajuda a elevar o limite de complexidade, facilitando que as equipes de software naveguem pela complexidade organizacional por meio do catálogo de componente, métricas e tabelas de pontuação e se concentrem na criação de uma cultura de engenharia saudável. A principal ressalva aqui é que a complexidade organizacional não diminuiu na Atlassian; na verdade, ela continuou a crescer à medida que cada vez mais pessoas da empresa migraram para uma arquitetura de microsserviços. A gente reduziu o tempo gasto pelas equipes de software para lidar com essa complexidade, que é a diferença entre um projeto de simplificação e o aumento do limite de complexidade.

A Atlassian tem mais de 10.000 funcionários e mais de 17.000 componentes de software, mas as equipes de software operam em grande parte com a liberdade de uma startup, lançando software de alta qualidade com rapidez. A chave para o sucesso? Elevar o limite de complexidade para melhorar a eficácia da equipe de software.

Aqui estão duas ações para começar a aumentar o limite de complexidade:

  • Acompanhe e avalie as métricas DORA. Como estão as métricas DORA da equipe? Se você ainda não estiver rastreando essas métricas, elas são disponibilizadas prontas para uso com o Compass.
  • Entenda e avalie a satisfação do desenvolvedor. Como os desenvolvedores estão se sentindo nas equipes de software? A maioria das empresas realiza pesquisas de satisfação dos funcionários. Solicite os resultados, detalhados por área funcional, para obter informações sobre a satisfação do desenvolvedor. As principais perguntas incluem avaliar as seguintes afirmações:
    • Tenho orgulho do que estou lançando
    • A quantidade de estresse no trabalho é controlável
    • Eu entendo como o trabalho que faço contribui para as metas da empresa

Como alternativa, o Compass captura essas informações durante o ritual CheckOps, em que as equipes compartilham como se sentiram na última semana, além de informações sobre o que poderia ter sido melhor.

Elevar o limite de complexidade requer uma combinação de ferramentas, processos e rituais. Uma plataforma de experiência para desenvolvedores como o Compass pode ajudar você a entender a integridade do sistema, mapear dependências e criar rituais contínuos, ajudando a elevar o limite de complexidade e liberando o potencial das equipes de entrega de software da empresa.

Experimente o Compass de graça hoje mesmo.

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.


Compartilhe este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Ilustração DevOps

Comunidade do Compass

ilustração de superação de obstáculos

Tutorial: criar novo componente

Ilustração do mapa

Comece a usar o Compass de graça

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up