Microsserviços e estrutura organizacional. Que tipos de equipes garantirão o sucesso?

Quando falamos sobre arquitetura de microsserviços, diante de nossos olhos existe um conjunto de componentes autônomos, quase independentes um do outro. O isolamento é a pedra angular de qualquer sistema de microsserviço. Mas, mesmo que estejamos confiantes em nossa capacidade de criar microsserviços, surge a pergunta - quão pronta está a estrutura da organização para essa tarefa? Somos capazes de capitalizar as oportunidades e limitações trazidas pelos microsserviços? Como adaptar as equipes para trabalhar com sucesso com essa arquitetura? Neste artigo, tentaremos discutir o aspecto organizacional do desenvolvimento de um sistema de microsserviço.

Abordagem tradicional


As grandes empresas de negócios historicamente foram organizadas como um conjunto de unidades funcionais: financeira, marketing, operacional, RH e assim por diante. A necessidade de automação digital dos processos de negócios levou a empresa a formar outra unidade funcional - o departamento de TI. Por sua vez, o departamento de TI foi posteriormente dividido em equipes funcionais de programadores, testadores, administradores de sistemas - pelo princípio de combinar grupos de especialistas com um determinado conjunto de conhecimentos e funções. O padrão do pensamento organizacional é visto com bastante clareza. E sua estabilidade está associada não tanto à relutância em fazer esforços para analisar a eficácia da gestão, mas à grande inércia dos processos e à ausência de desafios óbvios que colocariam em risco o sucesso da organização.

No entanto, a separação do pessoal de acordo com suas funções cria inevitavelmente uma distância entre as equipes. Quando os testes de software são realizados por uma equipe separada de testadores, os desenvolvedores se concentram apenas na escrita do código e se preocupam pouco com a testabilidade. Como resultado, o produto de software apresenta inúmeros desvios nas especificações e, pior ainda, as equipes estão gradualmente se transformando em separações.

Nota: Uma mentalidade de silo é uma relutância em compartilhar.
informações com funcionários de outras unidades da mesma organização. Tais
comportamento muitas vezes leva a uma diminuição da eficácia organizacional e, na pior das hipóteses,
caso leva à destruição da cultura corporativa.

Além disso, em unidades estritamente funcionais, o processo de tomada de decisão diminui inevitavelmente. Os custos de coordenação dos horários de trabalho da equipe estão aumentando. As qualificações e a experiência dos mesmos testadores, por exemplo, precisam de um equilíbrio constante, levando em consideração as especificidades exigidas pelas equipes de desenvolvimento. Sim, e um alto limiar de entrada e a necessidade de transferência de conhecimento atrasam o processo: especialistas externos exigem alternância constante do contexto da tarefa para atender solicitações de várias equipes.
Assim, quando as empresas com uma estrutura organizacional tradicional foram confrontadas com a necessidade de uma resposta quase instantânea aos desafios continuamente advindos dos negócios, seus departamentos de TI não conseguiram garantir a eficácia das soluções. A rápida evolução da tecnologia apenas exacerbou esse atraso e complicou a tarefa de manter o nível exigido de motivação e profissionalismo em equipes dedicadas ao desenvolvimento. E como a principal tarefa da TI era e é o fornecimento eficaz de todo o ciclo de vida de produtos independentes (incluindo microsserviços), tornou-se óbvia a necessidade de reorganizar equipes de equipes funcionais orientadas horizontalmente em equipes autônomas e orientadas verticalmente.

Comandos funcionais cruzados


Segundo a Wikipedia, uma equipe multifuncional é um grupo de pessoas com várias tarefas funcionais e trabalhando em direção a um objetivo comum. Nos negócios de hoje, a inovação é uma vantagem competitiva líder. As equipes multifuncionais promovem a inovação por meio da colaboração criativa - tanto dentro da equipe quanto com outras equipes da organização.


Figura 1. Equipes funcionais e multifuncionais.

A equipe multifuncional de desenvolvimento de microsserviços consiste em desenvolvedores, engenheiros de banco de dados, testadores, engenheiros de infraestrutura e outros especialistas. Essas equipes fazem modificações mais rapidamente que as funcionais, porque podem tomar suas próprias decisões e trabalhar independentemente de outras equipes. Ao se concentrarem em melhorar o tempo do ciclo de desenvolvimento e implementar a implantação contínua, essas equipes são capazes de resolver problemas quase instantaneamente.

Shamim Mohammad, diretor de TI da CarMax, diz: “Em um mundo em rápida evolução, é importante criar equipes de produtos flexíveis e multifuncionais que possam rapidamente resolver as soluções para um problema. Eles são dotados de todos os poderes necessários e a gerência nunca diz a eles como resolver o problema, mas apenas no que consiste e quais são os principais indicadores de desempenho com os quais trabalhar. Essa abordagem permite melhorar o feedback, acelerar significativamente o processo de desenvolvimento, usar tentativa e erro para finalmente encontrar a melhor solução para clientes e parceiros. Também descobrimos que as equipes estão mais razoavelmente em risco e criativas para alcançar seus objetivos. Se você não possui equipes totalmente integradas, dê uma olhada e pense: você está pronto para uma transformação digital bem-sucedida? ”

De acordo com pesquisas do Instituto de Tecnologia de Massachusetts e da Deloitte Global Human Capital Trend, empresas com alto nível de digitalização de processos no desenvolvimento de suas inovações são extremamente dependentes da presença de equipes multifuncionais. 83% das empresas maduras admitem que usam equipes multifuncionais. Apesar da maior complexidade operacional (custos adicionais de até 16%), as empresas receberam melhorias significativas nos indicadores operacionais (até 53%), melhor acesso a recursos e ativos (até 37%), maior flexibilidade (até 12%) e uma diminuição no nível de burocracia excessiva devido à redução da hierarquia da estrutura organizacional (até 11%).


Figura 2. Benefícios da adaptação de equipes multifuncionais. Estatística.

Uma transição suave e gradual de equipes funcionais para multifuncionais é bem possível. As primeiras equipes multifuncionais são formadas em torno das oportunidades de negócios mais valiosas que exigem atenção constante e resposta rápida da TI. Os membros das equipes funcionais passam para equipes multifuncionais, enquanto aprofundam sua experiência e geralmente melhoram a autonomia da equipe e o processo de tomada de decisão. Em algum momento, os comandos funcionais são completamente transformados em um conjunto de comandos multifuncionais.


Figura 3. Transição para uma equipe multifuncional.

O surgimento de equipes de plataforma


No entanto, a mera presença de equipes multifuncionais não significa que fornecemos as melhores condições para a criação de microsserviços e atendamos de maneira mais eficaz aos requisitos dos negócios. Ainda existem várias tarefas relacionadas ao desenvolvimento, suporte e manutenção, das quais as mais significativas são:

  • Sincronização (consistência) de dados;
  • Obsolescência de dados
  • Segurança;
  • Comunicação entre serviços;
  • Descoberta de serviço;
  • Registro e monitoramento distribuídos;
  • Dependências cíclicas entre serviços e depuração;
  • Teste;
  • Confiabilidade e tolerância a falhas;
  • Performance.

A maioria deles não são tarefas locais de nenhum microsserviço específico. Essas são tarefas do nível do sistema como um todo e mais relacionadas à infraestrutura do sistema de microsserviço. Muitas organizações chamam essa infraestrutura de "plataforma", a base sobre a qual os microsserviços são criados e desenvolvidos.

De fato, com o crescimento da organização, aumenta sua dependência das tecnologias utilizadas. Várias áreas de inconsistência surgem cada vez mais, o que leva a organização a perder sua capacidade de avançar rapidamente no mercado, avaliar oportunidades emergentes e inovar. Uma possível saída dessa situação é a transição para o uso de uma "plataforma digital" que consiste em "blocos de oportunidades" nas áreas mais importantes da atividade da organização (como a infraestrutura para fornecer soluções ou interagir com o cliente). As plataformas digitais minimizam a diferença entre conceitos e investimentos; melhorar a estabilidade do sistema e, mais importante, melhorar o microclima dentro da organização.

Muitas organizações de TI estão se perguntando: quantas equipes precisam ser alocadas para trabalhar diretamente no "produto" e quais trabalham na "plataforma"? Um dos argumentos mais importantes para o benefício dessa separação de pessoal é o seguinte: uma plataforma digital precisa de proprietários dedicados a garantir a conformidade com os princípios declarados pela plataforma, com ampla experiência e alto nível de conhecimento no desenvolvimento, implementação e manutenção de plataformas.

Para ilustrar a necessidade da introdução de plataformas digitais como um produto independente, passamos a um dos princípios fundamentais dos microsserviços: o uso de filtros inteligentes e canais simples.

Por mais simples que seja o canal, ele ainda exige um proprietário. E se existem muitas equipes, cada uma das quais “possui seu próprio microsserviço”, quem é responsável por sua interação? Para a descoberta de serviços, para segurança, o monitoramento no nível de todo o sistema (ou mesmo no nível da organização, se for no nível intersistema)? Quem será responsável por testes abrangentes? Se começarmos a atribuir essas responsabilidades a equipes específicas de desenvolvimento de microsserviços, quais serão nossos critérios de estratégia e seleção? E, finalmente, essas equipes (desenvolvimento, eu lembro) permanecerão flexíveis e autônomas em seus produtos? Parece que chegou a hora em que a equipe de desenvolvimento da plataforma deve aparecer no palco!

A equipe de desenvolvimento da plataforma (abreviada como equipe da plataforma) é uma equipe multifuncional especializada que gerencia a plataforma digital - a base para a formação de APIs, ferramentas e serviços, cujo conhecimento e suporte são organizados em um produto interno independente.

A estratégia da plataforma digital está focada em fornecer valor aos negócios. Para eliminar inconsistências na construção de um ecossistema de microsserviços, a estratégia se concentra em cinco áreas principais de entrega de soluções tecnológicas:

  • Infraestrutura de entrega;
  • Arquitetura e correção de API;
  • Dados de Autoatendimento;
  • Infraestrutura experimental e telemetria;
  • Interação com o cliente.


Figura 4: Estratégia da plataforma digital

Equipes de microsserviço independentes têm a oportunidade de usar a plataforma para acelerar o suporte às funções de seus produtos e, ao mesmo tempo, reduzir o grau de coordenação entre equipes necessária.

Sem dúvida, o conceito de equipes especializadas de plataforma tem vantagens e desvantagens:

Os benefícios incluem:

  • unificação e sequência de canais de comunicação;
  • fornecendo controle e mantendo a flexibilidade de equipes de desenvolvimento individuais.

As desvantagens incluem:

  • custos de tempo para adaptar a estratégia na organização;
  • a necessidade de recursos adicionais - a equipe da plataforma precisa estudar as especificidades das várias equipes de microsserviços, bem como formar requisitos para a criação de uma plataforma unificada;
  • se a plataforma não for implementada corretamente, ela se tornará um gargalo nos processos da organização.

Portanto, devemos levar em consideração possíveis problemas e riscos ao planejar as atividades da equipe e entre equipes da organização.

Sinergia de interação


Então, como pode ocorrer a interação com a equipe da plataforma? Existem várias abordagens possíveis, entre as quais duas podem ser distinguidas:

  • Usando a plataforma como um produto. A equipe da plataforma atualiza regularmente as versões da plataforma e a fornece às equipes de microsserviço como uma API do produto. Pode ser uma imagem de uma máquina virtual ou um contêiner com recursos aprimorados (em comparação com a versão anterior) ou uma estrutura extensível.
  • Penetração nas equipes de microsserviço quando um representante da equipe de plataforma está presente na equipe de microsserviço (ou um dos membros da equipe de microsserviço é alocado para comunicação com a equipe de plataforma). Ao usar essa abordagem, as equipes de microsserviço têm a oportunidade de obter um feedback mais rápido com a equipe da plataforma e podem iniciar o processo de introdução de alterações na plataforma.


Figura 5: Interação com a equipe de desenvolvimento da plataforma: à esquerda, a plataforma como produto, à direita, a penetração nas equipes.

Conclusão


Concluindo, gostaria de enfatizar mais uma vez que a estrutura organizacional deve permitir o uso efetivo das vantagens da escolha arquitetônica e tecnológica. A lei de Conway afirma que uma organização procura criar projetos que são cópias da estrutura organizacional. Mas também estou inclinado a acreditar que o oposto é verdadeiro: a estrutura do sistema diz à organização a estrutura que melhor se adequa à sua implementação.

Para garantir a qualidade necessária da resposta às solicitações de negócios, o setor de TI moderno deve ter o mais alto nível de flexibilidade organizacional. E, para não perder a eficácia do sistema que estamos nos esforçando para criar, devemos considerar a necessidade e a possibilidade de transformações organizacionais.

Source: https://habr.com/ru/post/pt477634/


All Articles