Ir para o conteúdo principal

Modernização de aplicação legada no Azure com AKS e serviços gerenciados

·897 palavras·5 minutos

Participei de um novo projeto que tinha um objetivo relativamente comum em empresas que cresceram rápido:

modernizar uma aplicação que já não acompanhava mais a necessidade operacional.

O cenário original era simples.

Toda a aplicação estava concentrada em um único servidor:

  • front-end
  • back-end
  • banco de dados
  • servidor de arquivos
  • transferência de arquivos

Tudo coexistindo na mesma máquina.

Durante muito tempo isso funcionou.

O problema é que esse tipo de arquitetura normalmente cresce sem separação clara de responsabilidades.

Com o aumento da demanda, começam os problemas:

  • dificuldade de escalabilidade
  • dependência excessiva de uma única VM
  • risco operacional elevado
  • manutenção complexa
  • baixa flexibilidade para evolução
  • dificuldade de padronização entre ambientes

O pedido era claro:

criar uma nova arquitetura em Azure utilizando serviços homologados internamente e alinhados às boas práticas da empresa.


O cenário original
#

Além do risco técnico, qualquer atualização da aplicação exigia maior cuidado operacional porque todos os componentes dependiam da mesma estrutura.

Uma única estrutura centralizava toda a operação.

Isso criava alguns problemas importantes:

  • qualquer indisponibilidade afetava o ambiente inteiro
  • atualização da aplicação exigia maior janela de manutenção
  • crescimento horizontal praticamente inexistente
  • componentes fortemente acoplados
  • dificuldade de segregação entre desenvolvimento, homologação e produção

Além disso, existia um ponto importante:

a aplicação precisava continuar suportando arquivos estáticos, upload de conteúdo e persistência de dados sem alterar completamente o funcionamento esperado pelos usuários.

Ou seja:

não era apenas uma migração.

Era uma modernização controlada, sem interromper completamente a operação existente.


O objetivo da nova arquitetura
#

A proposta da nova solução precisava atender alguns pilares:

  • separação clara de responsabilidades
  • ambientes independentes
  • escalabilidade
  • maior segurança
  • serviços gerenciados
  • redução de dependência operacional
  • padronização de deployment

Além disso, a arquitetura precisava seguir padrões internos de rede, segurança e conectividade corporativa.


Arquitetura proposta
#

A solução foi desenhada utilizando serviços nativos do Azure com foco em desacoplamento da aplicação.

Os ambientes passaram a ser separados em:

  • desenvolvimento
  • homologação
  • produção

Cada ambiente possuindo sua própria segmentação lógica.

Ambiente de desenvolvimento
#

Ambiente de desenvolvimento

Ambiente de homologação
#

Ambiente de homologação

Ambiente de produção
#

Ambiente de produção


Componentes principais da solução
#

Azure Kubernetes Service (AKS)
#

O AKS foi utilizado como base principal para execução da aplicação.

O AKS também permitiu criar uma estrutura mais preparada para crescimento futuro da aplicação, mantendo padronização entre ambientes e melhor controle operacional.

A escolha aconteceu por alguns motivos importantes:

  • padronização de deployment
  • escalabilidade horizontal
  • separação por namespaces
  • melhor gerenciamento de workloads
  • aderência às práticas modernas de aplicação

A aplicação foi segmentada dentro do cluster utilizando namespaces dedicados.

Isso permitiu isolar componentes e organizar melhor os deployments.


Blob Storage para conteúdo estático
#

Parte do front-end e arquivos estáticos foram movidos para Azure Blob Storage.

Separar arquivos estáticos da aplicação principal reduziu acoplamento entre os componentes e simplificou futuras atualizações da plataforma.

Isso resolveu alguns problemas importantes:

  • redução de dependência da aplicação principal
  • distribuição simplificada de arquivos
  • menor consumo do ambiente computacional
  • armazenamento desacoplado

Além disso, o uso de Static Website Hosting facilitou a publicação dos arquivos HTML, CSS e mídia.


Azure Database for PostgreSQL
#

O banco de dados deixou de existir dentro da mesma VM da aplicação.

A utilização do PostgreSQL gerenciado trouxe vantagens importantes:

  • backups automatizados
  • maior resiliência
  • redução de administração operacional
  • gerenciamento simplificado
  • integração nativa com serviços Azure

Esse é um dos pontos que normalmente gera maior ganho operacional em modernizações.


Azure Key Vault
#

Credenciais e segredos passaram a ser armazenados de forma centralizada.

Isso eliminou o uso de informações sensíveis diretamente na aplicação ou em arquivos locais.

Na prática:

  • melhora segurança
  • reduz exposição de credenciais
  • facilita rotação de segredos
  • melhora governança

File Share
#

O ambiente também precisava manter compatibilidade com compartilhamento de arquivos.

Para isso foi utilizado Azure File Share.

Esse ponto foi importante porque permitiu modernizar a aplicação sem exigir mudança completa do comportamento operacional existente.


Segurança e conectividade
#

A nova arquitetura também criou uma base mais preparada para integração futura com monitoramento centralizado, observabilidade e análise operacional da aplicação.

O ambiente de produção foi desenhado considerando:

  • VPN corporativa
  • acesso privado
  • Azure Firewall
  • segmentação de rede
  • controle de tráfego interno

Além disso, os ambientes foram organizados em VNets e subnets específicas.

Isso permitiu maior controle de comunicação entre os componentes.


O ganho real da modernização
#

O principal ganho não foi apenas tecnológico.

Foi operacional.

Antes da modernização:

  • existia alta dependência de servidor único
  • baixa flexibilidade de crescimento
  • manutenção mais complexa
  • maior risco operacional

Depois da modernização:

  • workloads desacoplados
  • serviços gerenciados
  • melhor organização dos ambientes
  • maior capacidade de escalabilidade
  • segurança centralizada
  • arquitetura preparada para evolução

O que foi anonimizado
#

As imagens utilizadas neste artigo foram adaptadas para preservar informações internas.

Foram removidos ou alterados:

  • nomes de aplicações
  • nomenclaturas internas
  • nomes de subscriptions
  • padrões corporativos de identificação
  • informações específicas de infraestrutura

O objetivo foi manter o contexto técnico da solução sem expor dados internos da empresa.


Conclusão
#

Modernização de aplicação não significa apenas mover workloads para cloud.

Na prática, o desafio está em:

  • separar responsabilidades
  • reduzir acoplamento
  • melhorar operação
  • criar capacidade de evolução
  • aumentar resiliência

Em muitos cenários, o maior problema não é a tecnologia.

É a arquitetura que cresceu sem planejamento ao longo do tempo.

Quando a modernização é feita da forma correta, o ambiente deixa de ser apenas funcional.

Ele passa a ser sustentável.

Em muitos cenários, modernizar uma aplicação não significa reconstruir tudo do zero.

O principal objetivo normalmente é reduzir dependências, separar responsabilidades e preparar o ambiente para evolução contínua.

Egly Corintima
Autor
Egly Corintima
Arquiteto de Soluções especializado em infraestrutura e cloud híbrida (Microsoft Azure e Oracle Cloud, certificações AZ-900 e OCI Foundations).