Compreendendo os benefícios de incorporar a modernização em uma estratégia de migração de aplicativos

Não existe uma resposta única que descreva a importância de se modernizar a tecnologia enquanto negócio, da mesma forma quando se trata de modernizar sistemas legado. Existem, entretanto, diversas razões que trazem sentido a essa prática.

Este artigo aborda diversas razões pelas quais as empresas devem, enquanto pensam em migrar seus sistemas, entender os benefícios de modernizar e evoluir suas aplicações para tecnologias mais modernas.

Modernização não é apenas um novo termo que está na moda. Trata-se de uma estratégia para assegurar que os negócios estão ocorrendo com alta performance e no topo do seu nicho de mercado, permitindo acompanhar mudanças de tendência e demandas dos clientes de forma rápida. Se considerarmos por exemplo, uma empresa como a Cazoo, é possível constatar que ela mudou completamente o mercado de carros usados no Reino Unido. Sim, grande parte disso foi gerado pelo serviço oferecido. O fator decisivo foi, entretanto, ter em seu núcleo uma estratégia que abraça práticas e tecnologias de engenharia moderna. Tudo isso ajudou a catapultar a empresa ao status de unicórnio em tempo recorde no Reino Unido. As empresas concorrentes, que já participavam do mercado a muito tempo, se viram em posição de desvantagem e com necessidade de recuperar o tempo perdido. Mas afinal, como é possível que as empresas já consolidadas consigam acompanhar o ritmo da tecnologia moderna?

Tradicionalmente, a tecnologia da informação, ou ‘TI’, era vista apenas como um centro de custos. No entanto, com a tecnologia tão permeada e onipresente em todos os aspectos do negócio nos dias de hoje, é preciso enxergá-la como o principal núcleo facilitador.

Existem vários indicadores que as empresas podem utilizar como guia enquanto avaliam se devem ou não começar uma jornada de modernização de software. Um indicador chave ocorre quando os sistemas ficam cada vez mais difíceis de se modificar e a tecnologia apresenta-se incapaz de acompanhar o ritmo dos negócios. Com o tempo isso se traduz em aumento nos tempos de resposta, o que significa que as soluções demoram cada vez mais a chegar nas mãos dos clientes finais. Como resultado, isso normalmente leva uma empresa a se tornar incapaz de acompanhar seus concorrentes e perder participação de mercado.

Como sabemos, a tecnologia evolui muito rapidamente e hoje é capaz de promover soluções que há 10 anos atrás simplesmente não eram possíveis. Por exemplo: os sistemas financeiros, em que a maioria da base instalada foi escrita 15 ou mais anos atrás. Naquela época os navegadores de internet não eram nem de perto tão poderosos e nem contavam com tantos recursos como hoje, resultando em várias aplicações desenvolvidas para desktop. Reforça-se o fato de que a computação em nuvem ainda não havia realmente decolado.

As aplicações desktop trouxeram alguns desafios com o tempo, como instalação, atualização e atendimento a muitas localizações geográficas.

Se avançarmos para os dias de hoje, os navegadores de internet estão muito mais maduros e servem de plataforma para construir aplicações poderosas, ricas em recursos e com elevada performance, algo impossível 15 anos atrás.

Objetivos de negócio da modernização

Para os negócios avançarem estrategicamente, é vital ser proativo ao invés de reativo quando se trata de tecnologia. Os sistemas devem receber constante cuidado e atenção, sendo capazes de evoluir constantemente para se manterem em linha com as demandas.

O acesso a novas tecnologias deve ser aproveitado. Isso significa que é importante revisar tudo que já foi feito, mesmo as aplicações que rodem razoavelmente bem, por que podem haver maneiras melhores de se fazer as coisas e libertar maior potencial. A resultante disso pode ser equacionada por uma maior velocidade de entrega ou melhores condições de operabilidade, que, por sua vez, aumentam seu custo-benefício, confiabilidade, segurança, performance e sustentabilidade.

No entanto, modernizar a tecnologia não é apenas adotar as melhores e mais recentes tecnologias. É vital entender primeiro as necessidades do negócio e depois avaliar quais tecnologias podem atendê-las melhor. A primeira etapa para qualquer projeto de modernização bem-sucedido é entender os objetivos e motivadores de negócios, por exemplo, os motivos para migrar para a nuvem durante a modernização da tecnologia. Tudo está relacionado a esses objetivos de negócios e ao que a empresa espera alcançar. O alinhamento do negócio é vital nesta fase, não apenas algo para esperar que aconteça, mas algo que seja estratégico para o negócio e alcance dos benefícios.

Benefícios como qualidade, tempo e custo podem ser alcançados, mas estão relacionados à qualidade das entregas. Se o tempo não for gasto focado em estabelecer metas boas e alcançáveis, há uma boa chance de fracasso. Na verdade, quase três quartos das organizações (74%) iniciaram um projeto de modernização do sistema legado, mas não conseguiram concluí-lo. Mas, se o seu software não for capaz de acompanhar o ritmo dos negócios, é um impedimento. Se a tecnologia está atrasando sua organização, isso pode significar que você não é capaz de escalar em termos de ofertas de serviços ou mesmo em novos mercados. É vital virar o jogo e remover a tecnologia como um bloqueador de qualquer crescimento organizacional. Muitas vezes, o único caminho a seguir é embarcar em um esforço de modernização de software.

Impacto da modernização nos negócios existentes

Ao embarcar em um esforço de modernização de software, as empresas também devem se precaver para não estrangular suas operações atuais. É preciso manter um nível mínimo de ‘luzes acesas’ - a tecnologia é aquilo que torna os negócios viáveis enquanto gera renda. A forma de abordagem e níveis de modernização devem ser objetos de muita atenção, propiciando que os negócios continuem a ocorrer enquanto são incrementalmente modernizados. Isso pode ser atingido ao destacar diferentes áreas nos sistemas, que terão abordagens específicas e individuais, onde gradualmente o trabalho poderá ser feito até que cada parte do sistema seja modernizada.

O impacto da Modernização nas pessoas e habilidades

Como parte de um esforço de modernização, deve-se levar em consideração a lei de Conway. No passado, em 1967, Melvin Conway introduziu a ideia de que os sistemas de uma organização deveriam tentar refletir uma estrutura similar à sua própria estrutura de comunicação. Esse aspecto possibilita sistemas pouco acoplados. Também há muita pesquisa acerca de composições de times, que sugerem que aqueles com maior índice de sucesso são constituídos por equipes multi-disciplinares, ou seja, com maior diversidade de habilidades e disciplinas. Idealmente, cada time deveria possuir todas as habilidades de que necessita, permitindo-o ser totalmente independente e desacoplado dos outros, tornando possível a atuação com maior autonomia e, finalmente, com maior velocidade.

Se imaginarmos uma empresa que deseja começar um esforço de modernização de software, envolvendo migrar para arquitetura de micro serviços, então, para que ela seja verdadeiramente bem sucedida, a organização deverá preparar equipes muito experientes e com grande conhecimento geral do sistema, para que estas estabeleçam propriedade sobre cada novo micro serviço criado. Para algumas organizações isso pode demonstrar o contraste sobre como seus times são constituídos atualmente. Novamente, um outro exemplo, se há um administrador de banco de dados (DBA) na organização, que dê suporte às bases instaladas em infraestrutura local, esse papel provavelmente precisará evoluir após uma migração para serviços de dados externos ou plataformas em nuvem. Rotinas de backup e otimizações passariam teoricamente a ser desempenhadas pelos provedores de serviço. Muitas organizações evoluíram papéis como o de DBA para atividades mais relacionadas a ciência de dados após essas migrações.

Portanto, como parte do esforço de modernização de software, é importante levar em consideração a topologia das equipes e o impacto nas definições atuais de cada papel.

Além disso, entender como o software será entregue ajudará a determinar funções e responsabilidades. A modernização envolve não apenas a adoção de novas tecnologias, mas também a avaliação e melhoria dos processos. Por exemplo, para muitas organizações, grande parte do esforço de modernização de software envolve a incorporação de mais automação e a adoção de padrões de engenharia maduros, como integração contínua e entrega contínua, para garantir um processo de implantação robusto e repetível para seu software. Isso pode, por exemplo, envolver a substituição de um conjunto de casos de teste executados manualmente por testes automatizados. Nesse caso, o papel desses testadores manuais pode evoluir.

Funcionários que trabalham para manter infraestruturas locais irão, provavelmente, precisar ser treinados novamente para adotar tecnologias de nuvem, que possivelmente envolverá atualização de habilidades, mudanças na estrutura organizacional, procedimentos de manutenção e responsabilidades futuras. Provedores de serviços de nuvem geralmente oferecem ajuda nesse processo, por exemplo, a AWS tem um modelo de responsabilidade. Isso ajuda a detalhar em que nível o negócio é responsável por governar e gerenciar o novo sistema de nuvem.

As empresas também precisam se preparar para mudanças no recrutamento e retenção. Existem comunidades diferentes para cada tecnologia. A maturidade de cada tecnologia vai determinar o tamanho de sua comunidade. Se é madura, ou evoluiu de forma rápida, haverá grande popularidade ao seu redor. Haverão muitas pessoas com as habilidades e vontade de trabalhar com essa tecnologia. No entanto, se a empresa trabalha com tecnologias ultrapassadas, haverá uma comunidade menor de pessoas dispostas a trabalhar com elas, dificultando a tarefa de recrutamento.

Mover para a nuvem e modernizar não se trata apenas de tecnologia. O conjunto de tarefas que as empresas precisam executar vão ser diferentes na nuvem, a automação e outros serviços irão alterar os processos adotados.

Quando é o momento certo para modernizar?

Como mencionado no início, não existe uma medida universal em se tratando de modernização de tecnologia. A resposta para essa pergunta depende do contexto e do apetite por riscos por parte da empresa, sendo que se a organização não for capaz de detalhar as diretivas de negócio, visão técnica e um mapa de objetivos, pode ser que ainda não seja o momento certo de começar. Nesse estágio, se a necessidade de empresa for de migrar rapidamente para a nuvem, uma estratégia comum seria focar apenas em ‘rehosting’ (mudar de servidor), ou ‘lift and shift’ - que permite iniciar a migração para a nuvem enquanto prepara-se para assumir mais riscos numa modernização completa. Essas estratégias mais completas estão detalhadas em Estratégias de migração de aplicativos - Os 3 R's.

Em um cenário ideal, os negócios evoluem gradualmente, ao invés de ter que modernizar - uma sutil mudança de direção ao invés de reversão total de sentido. Entretanto, ao negligenciar a visão técnica enquanto uma tecnologia funciona corretamente por 10/15 anos e não ter atenção ao tempo certo de modernizar ou evoluir, podem fazer sentir os efeitos de não o fazer. Esses efeitos podem ser, por exemplo, contratempos em produção, ou tempos extensos de entrega, indicando a decomposição arquitetural com o tempo. Se esses são os indicadores presentes na necessidade atual de modernização, o tempo ideal para isso já passou e a empresa já passa por desafios que afetam os negócios.

Os benefícios da modernização versus os desafios de não o fazer

O perigo de não se modernizar pode ser refletido na participação de mercado de uma empresa, e também na habilidade de reagir às demandas dos consumidores. Além disso, aumento de tempo de entrega, infelicidade das equipes e ocorrência de problemas nas atualizações - que compromete proporcionalmente a capacidade de entrega.

Isso leva de volta a maneira como os sistemas são suportados, e a habilidade de responder rapidamente às mudanças de mercado. Se a vantagem competitiva está diminuindo de velocidade, ou os sistemas deixaram de receber suporte pela comunidade, isso pode gerar problemas de segurança e perda da habilidade de atender às demandas dos clientes. Outro desafio é conter a infelicidade dos empregados, o ambiente de trabalho se torna desafiador.

Esses desafios podem ser invertidos para entender os benefícios da modernização. As empresas podem responder às mudanças rapidamente, permitindo que cresçam e evoluam junto com os negócios, à medida que se adaptam em diferentes direções para acompanhar as demandas dos consumidores.

As empresas podem então contar com maior disponibilidade de talento, facilidade de retenção e melhorias de performance, segurança e confiabilidade.

O potencial dos negócios pode ser libertado, e ao invés de gastar tempo com preocupações relacionadas a tecnologia, o tempo pode ser utilizado para adicionar valor ao negócio. Vamos pegar como exemplo empresas mais novas, como a Cazoo, mencionada acima. Problemas e oportunidades de negócios são respondidos mais rapidamente, pois a empresa pode se concentrar inteiramente em seus negócios, em vez de se preocupar com dívidas técnicas.