A primeira fase desta abordagem ágil é o diagnóstico de aplicações legadas e seus processos de negócios, finalizando com o planejamento da transformação. Nessa etapa, verificamos alguns aspectos das aplicações, como a arquitetura, stack atual de tecnologia, as interdependências, o nível de automação e/ou aderência ao processo e o nível de maturidade da empresa para adoção da nuvem (perspectiva de pessoas, operação, segurança, governança, etc). Para sabermos o nível de aderência do processo de negócio atual frente as novas iniciativas e necessidades estratégicas (derivado do contexto de negócio), precisamos resgatar as regras de negócio existes no código legado e verificar se as mesmas podem ser reaproveitadas durante a transformação digital, economizando assim parte do investimento feito no passado com essas aplicações. Este processo é muitas vezes apoiado por ferramentas e algoritmos de Inteligência artificial [8], permitindo acelerar o processo de descoberta não só das regras de negócio, mas também do fluxo do processo a ser transformado. Por fim, o objetivo principal desta fase de diagnóstico é avaliar qual é a estratégia de transformação correta associada a cada aplicação e processo de negócio e também se estas estratégias fazem sentido financeiramente (business case). Alguns exemplos dessas estratégias são:
- re-hosting: move a aplicação para nuvem sem mudanças significativas no código fonte ou plataforma. Geralmente utilizado como primeira etapa da transformação, quando um dos objetivos é desligar o datacenter rapidamente (ex: migrar a aplicação de um servidor físico para uma instância EC2 Linux).
- re-architect: transforma a aplicação para uma nova arquitetura e adiciona/remove requisitos funcionais (ex: transforma de uma arquitetura cliente/servidor Visual Basic para uma arquitetura Web/Microserviços/Node.js).
- refactoring: simples modificações no código da aplicação para resolver um problema específico (ex: otimização para fins de melhoria de desempenho).
- replace: troca a aplicação legada por um novo pacote de mercado (ex: substituir uma aplicação desenvolvida internamente por um módulo do ERP SAP).
- retire: desliga aplicação (ex: outra aplicação existente tem as mesmas características funcionais).
- replatform: modifica a plataforma da aplicação, incluindo sistema operacional, servidor de aplicação ou banco de dados (ex: substitui a camada de banco de dados da aplicação de Oracle RAC por RDS ou Aurora).
A segunda fase do processo de transformação ágil trata da execução da transformação. É nesta fase onde ocorrem as sprints de transformação das aplicações e dos processos de negócio, aplicando as receitas e estratégias de transformação definidas na fase de planejamento. A transformação ocorre através dos diferentes métodos de desenvolvimento ágil já citados anteriormente e algumas práticas associadas a DevOps. Esses processos de desenvolvimento ágil são muitas vezes suportados por tecnologias habilitadoras, como por exemplo as plataformas de alta produtividade [10]. As tecnologias habilitadoras são necessárias e importantes, pois permitem mudar o paradigma de desenvolvimento e arquitetura e também o ciclo de vida das aplicações na nuvem.
Na última fase do processo de transformação ágil ocorre o monitoramento e a governança das aplicações. A partir desse monitoramento é possível medir e garantir que as aplicações e os processos de negócios atendam adequadamente as necessidades do negócio após o processo de transformação. É importante observar na Figura 6 que todo o processo de transformação, incluindo a governança e monitoramento, está dentro do escopo do framework de adoção de nuvem da AWS (CAF), sendo este o responsável pela gestão da mudança e governança de todo o processo de adoção e transformação para nuvem. Esta fase será discutida em mais detalhes ao final deste artigo.
Os principais benefícios dessa transformação ágil para nuvem são:
- Transformação incremental (pense grande, comece pequeno)
- Recuperar parte do investimento passado e reutilizá-lo na transformação
- Ser independente da tecnologia (abordagem orientada por modelo e plataforma de alta produtividade)
Tecnologias habilitadoras
A transformação de aplicações para a nuvem precisa de um paradigma técnico flexível e melhorado para o desenvolvimento, arquitetura e gerenciamento de ciclo de vida de aplicações (ALM). Como dito anteriormente, esse paradigma é impulsionado por objetivos e iniciativas estratégicas que suportarão o novo negócio digital. Algumas tecnologias habilitadoras podem facilitar a transformação para a nuvem, apoiando a flexibilidade exigida por este modelo digital. Essa flexibilidade é obtida criando aplicações de forma rápida e simples e através de um processo de experimentação e teste de hipóteses, características frequentemente presentes em um modelo de maturidade de arquitetura de modularização de negócios (ver estágio 4 da Figura 4) e também presentes no Modo 2 da TI Bimodal [5]. Essas soluções são inseridas no processo de transformação ágil apresentado na Figura 6, mais especificamente na fase de engenharia (fase 2), através da modelagem e construção de requisitos e testes, suportando os métodos ágeis SCRUM, BDD, MDD.
As plataformas de desenvolvimento de aplicações de alta produtividade [7] são exemplos de soluções que possuem as características citadas acima. Em alguns casos, é possível criar aplicações com pouco conhecimento técnico (low-code platforms) e em pouco tempo. Alguns exemplos deste tipo de plataformas são: Mendix [2], Outsystems [3] e SalesForce One [4]. Essas plataformas permitem o rápido desenvolvimento de processos e canais de negócios digitais, já suportando os modelos de arquitetura de nuvem da AWS (ver Figura 7) e embarcando soluções de governança de aplicações e DevOps. De forma complementar, a solução da AWS permite não apenas fornecer toda infraestrutura para executar essas aplicações, mas também todos os demais componentes e facilitadores importantes para suportar um negócio digital, como segurança, aprendizado de máquina, big data, serveless e Internet das Coisas (IoT). Assim, podemos criar soluções e processos de negócios inteligentes, melhorando a experiência do cliente com os produtos e serviços do negócio.