Logo

dev-resources.site

for different kinds of informations.

Do Local ao Global: A Migração para Azure que Aumentou Nossa Eficiência e Segurança

Published at
1/10/2025
Categories
azure
architecture
javascript
programming
Author
sertaoseracloud
Author
15 person written this
sertaoseracloud
open
Do Local ao Global: A Migração para Azure que Aumentou Nossa Eficiência e Segurança

Contexto: A Visão Geral do Sistema Original

Em um dos meus trabalhos atuei em um sistema de gerenciamento robusto, desenvolvido em Java, integrado ao RabbitMQ e PostgreSQL, com a missão de controlar pagamentos, fretes e estoques de uma plataforma de e-commerce de grande porte. O sistema original, que operava localmente em um data center on-premise, já não estava mais atendendo às crescentes demandas de escalabilidade e confiabilidade. Esse sistema estava enfrentando desafios como alta latência em transações críticas, dificuldades de manutenção e um aumento nos custos operacionais com o crescimento das cargas de trabalho.

O objetivo dessa migração era não apenas mover o sistema para a nuvem, mas também melhorar a arquitetura para torná-la mais escalável, resiliente e eficiente. A escolha da Azure como plataforma de nuvem foi motivada pela sua capacidade de atender às necessidades específicas de uma arquitetura moderna e robusta, ao mesmo tempo, em que oferece suporte às melhores práticas de segurança, governança e otimização de custos, conforme descrito no Azure Well-Architected Framework.

Contexto do Sistema: O Novo Modelo na Azure

Visão Geral

O novo sistema foi concebido para ser altamente escalável, resiliente e fácil de gerenciar, utilizando os princípios do Azure Well-Architected Framework. A arquitetura foi projetada para lidar com o aumento do tráfego, garantir alta disponibilidade e reduzir custos operacionais. A migração para a Azure não significava apenas mover os componentes existentes, mas também revisar e modernizar a arquitetura para garantir que o sistema fosse ágil, seguro e eficiente.

A arquitetura foi planejada em quatro níveis do C4 Model, com ênfase em uma visão clara do contexto, dos contêineres, dos componentes e do código. Isso garantiria que todos os stakeholders – de engenheiros a gestores – estivessem alinhados em relação aos objetivos de escalabilidade e confiabilidade do novo sistema.

Contexto (Context Diagram)

O diagrama de contexto ilustra o sistema de gerenciamento de pagamentos, fretes e estoques como um todo. O sistema interage com vários componentes externos, como clientes, sistemas de pagamento e plataformas de transporte. Este diagrama foca em como os usuários e sistemas externos interagem com o sistema.

Contexto

O novo sistema foi dividido em três áreas principais de negócios:

  1. Gestão de Pagamentos: Processa transações financeiras utilizando uma integração com gateways de pagamento e outros serviços financeiros externos.
  2. Gestão de Frete: Interage com provedores de logística para calcular e monitorar o status de entrega de pedidos.
  3. Gestão de Estoques: Monitora os níveis de estoque e gera alertas automáticos quando os itens estão próximos da escassez.

Cada uma dessas áreas foi tratada como um microserviço separado, facilitando a escalabilidade independente e o gerenciamento simplificado. O diagrama de contexto se concentra nas interações entre esses serviços e as plataformas externas, como os sistemas de pagamento, de frete e os serviços do usuário.

Contêineres (Container Diagram)

O diagrama de contêiner foca nos principais contêineres de software dentro da arquitetura. Cada serviço foi transformado em um contêiner de aplicação separado, aproveitando os recursos de containerização do Kubernetes na Azure. O RabbitMQ foi substituído por um Azure Service Bus para melhorar a comunicação assíncrona, enquanto o PostgreSQL foi migrado para Azure Database for PostgreSQL, com otimizações para garantir maior disponibilidade e escalabilidade.

Contêineres

Os principais contêineres incluem:

  1. Frontend Web (App): Uma aplicação web que interage com os usuários para gerenciar pedidos, pagamentos, fretes e estoque. Essa aplicação foi movida para o Azure App Service.
  2. API Gateway: Um serviço que gerencia o roteamento das requisições para os microserviços específicos de pagamento, frete e estoque. Utiliza o Azure API Management para gerenciar a segurança, autenticação e controle de tráfego.
  3. Microserviço de Pagamento: Responsável por processar e validar transações financeiras. Ele foi reestruturado para se comunicar com os gateways de pagamento e realizar transações de forma segura. Foi hospedado no Azure Kubernetes Service (AKS).
  4. Microserviço de Frete: Responsável por calcular o custo de frete e acompanhar o status das entregas. Este serviço se comunica com provedores externos de logística via APIs RESTful e foi hospedado em contêineres no AKS.
  5. Microserviço de Estoque: Responsável por controlar o inventário, emitir alertas de estoque baixo e comunicar-se com os sistemas de vendas para garantir que os produtos estejam disponíveis para os clientes. Este serviço também foi movido para o AKS.
  6. Banco de Dados PostgreSQL: O banco de dados foi migrado para Azure Database for PostgreSQL, oferecendo alta disponibilidade e backup automático. A migração foi realizada com a ajuda da ferramenta Azure Database Migration Service.
  7. Service Bus (RabbitMQ substituído por Azure Service Bus): Gerencia as filas de mensagens assíncronas entre os microsserviços, garantindo que as transações e os processos de negócios ocorram de maneira eficiente e resiliente.

Componente (Component Diagram)

O diagrama de componentes foca na arquitetura interna de cada um dos microserviços. Cada componente é representado como uma unidade de software autônoma e de fácil escalabilidade.

Microsserviço de Pagamento

Microsserviço de Pagamento

Os principais componentes incluem:

  1. Componente de Processamento de Pagamentos: Responsável por se comunicar com o gateway de pagamento, validando e processando os pagamentos. Utiliza o Azure Key Vault para armazenar credenciais e informações sensíveis de forma segura.
  2. Componente de Notificação: Envia notificações ao cliente e ao administrador sobre o status do pagamento.

Microserviço de Frete

Microserviço de Frete

Os principais componentes incluem:

  1. Componente de Cálculo de Frete: Interage com APIs externas para calcular o custo do frete com base no peso, destino e outras variáveis. Foi adaptado para utilizar o Azure Logic Apps para integrar-se com os serviços de terceiros.
  2. Componente de Rastreamento: Monitora o status de entrega dos pedidos e atualiza os clientes automaticamente via Azure Functions.

Microserviço de Estoque

Microserviço de Estoque

Os principais componentes incluem:

Componente de Controle de Inventário: Responsável por monitorar e ajustar os níveis de estoque. Integra-se com os sistemas de vendas para garantir que os produtos não se esgotem sem uma reposição programada.
Componente de Alertas: Gera alertas para os responsáveis de reposição de estoque quando os níveis atingem o mínimo.

Código (Code Diagram)

Microserviço de Pagamento:

Microserviço de Pagamento

Microserviço de Frete:

Microserviço de Frete

Microserviço de Estoque:

Microserviço de Estoque

Conclusão: Melhorias e Resultados da Migração

A migração do sistema para a Azure trouxe várias melhorias significativas:

  1. Escalabilidade: O uso de Azure Kubernetes Service (AKS) e Azure App Service permitiu que cada microserviço fosse escalado independentemente, de acordo com a carga de trabalho, garantindo que o sistema pudesse lidar com picos de tráfego sem problemas.
  2. Resiliência: A utilização do Azure Service Bus para mensagens assíncronas e o Azure Database for PostgreSQL com alta disponibilidade garantiram que o sistema fosse mais resiliente a falhas e quedas.
  3. Custos Otimizados: A migração para a nuvem permitiu a otimização de custos por meio do modelo de pagamento conforme o uso, além de reduzir os custos de infraestrutura e manutenção de servidores físicos.
  4. Segurança: O uso de Azure Key Vault para o armazenamento seguro de credenciais e a implementação de práticas de segurança como autenticação multifatorial (MFA) e controle de acesso rigoroso aumentaram a segurança geral do sistema.

Com o uso das melhores práticas do Azure Well-Architected Framework e a implementação do C4 Model, a migração não apenas modernizou a arquitetura, mas também garantiu um sistema mais confiável, escalável e seguro.

architecture Article's
30 articles in total
Favicon
Mastering Essential Software Architecture Patterns: A Comprehensive Guide🛠️, Part 6
Favicon
MVVM directory structure for larger project
Favicon
Solving Circular Dependencies: A Journey to Better Architecture
Favicon
微前端
Favicon
Como redes peer-to-peer funcionam?
Favicon
Things About Contexts in Front-end Projects
Favicon
The Myth of the 10x Software Developer
Favicon
[Boost]
Favicon
How to Design a Secure and Scalable Multi-Region Architecture on AWS
Favicon
Token Bucket Rate Limiter (Redis & Java)
Favicon
Streamlining Data Flow in Angular: The Power of the Adapter Pattern 🔄
Favicon
Cqrs
Favicon
Why Schema Compatibility Matters
Favicon
Абстракции vs. привязка к технологии
Favicon
Understanding the Essential Elements of a Well-Designed CISC Architecture for Modern Computing
Favicon
Things About Modules in Front-end Projects
Favicon
The first part of this MASSIVE series about software architecture patterns is OUT!! please check it out!!
Favicon
Designing Context for New Modules in HyperGraph
Favicon
Patterns of Directory Structure in Front-end Projects
Favicon
Mastering Backend Node.js Folder Structure, A Beginner’s Guide
Favicon
What Makes a Good Cloud Architect?
Favicon
Optimizing Module Development in HyperGraph: A Minimalist Approach
Favicon
The Future of Architecture: Where Innovation Meets Sustainability
Favicon
Top AI Tools for Architects and Interior Designers
Favicon
Singleton ou Observable? A Escolha Errada Pode Custar Sua Promoção!
Favicon
Do Local ao Global: A Migração para Azure que Aumentou Nossa Eficiência e Segurança
Favicon
Your API Doesn’t Always Need to Be a Product
Favicon
The Future of Architecture is Being Built by Robots
Favicon
The Role of Serverless Architecture in Modern Website Development: Benefits and Impact
Favicon
Understanding Microservices Architecture in Full-Stack Applications

Featured ones: