Curso Arquiteturas Modulares e Component-Based Architecture

  • DevOps | CI | CD | Kubernetes | Web3

Curso Arquiteturas Modulares e Component-Based Architecture

24 horas
Visão Geral

O curso Arquiteturas Modulares e Component-Based Architecture apresenta os fundamentos, princípios, padrões e práticas para projetar sistemas de software organizados em módulos e componentes independentes, coesos, reutilizáveis e evolutivos.

O treinamento aborda a evolução das arquiteturas monolíticas tradicionais para arquiteturas modulares, explorando conceitos como modularidade, coesão, acoplamento, encapsulamento, separação de responsabilidades, interfaces, contratos, componentes, dependências e composição de software.

Os participantes também conhecerão diferentes estratégias para aplicação de arquitetura modular em sistemas monolíticos, modular monoliths, microsserviços, aplicações distribuídas e plataformas digitais, além de técnicas para modernização de sistemas legados.

O curso possui abordagem prática, utilizando análise arquitetural, modelagem de componentes e exercícios para construção de uma arquitetura modular.

Objetivo

Após realizar este curso Arquiteturas Modulares e Component-Based Architecture, você será capaz de:

  • Compreender os fundamentos de arquitetura modular.
  • Identificar os benefícios e desafios da modularização.
  • Diferenciar módulos, componentes, serviços e microsserviços.
  • Avaliar níveis de acoplamento e coesão.
  • Aplicar princípios de separação de responsabilidades.
  • Definir limites arquiteturais entre módulos.
  • Projetar interfaces e contratos entre componentes.
  • Aplicar encapsulamento arquitetural.
  • Identificar dependências indesejadas entre componentes.
  • Projetar arquiteturas baseadas em componentes.
  • Estruturar Modular Monoliths.
  • Avaliar quando utilizar módulos ou microsserviços.
  • Aplicar padrões para comunicação entre componentes.
  • Projetar componentes reutilizáveis.
  • Aplicar princípios de evolução e manutenção arquitetural.
  • Modernizar sistemas legados utilizando estratégias de modularização.
  • Utilizar técnicas para reduzir complexidade arquitetural.
  • Definir uma arquitetura modular preparada para evolução.
  • Avaliar decisões arquiteturais relacionadas à modularidade.
Publico Alvo
  • Arquitetos de Soluções
  • Arquitetos de Software
  • Arquitetos de Sistemas
  • Desenvolvedores de Software
  • Engenheiros de Software
  • Tech Leads
  • Líderes Técnicos
  • Engenheiros de Plataforma
  • Desenvolvedores Backend
  • Desenvolvedores Full Stack
  • Profissionais de Microsserviços
  • Profissionais DevOps
  • Profissionais envolvidos em modernização de sistemas
  • Profissionais responsáveis pela evolução de sistemas legados
Pre-Requisitos
  • Conhecimentos básicos de desenvolvimento de software
  • Conhecimentos de orientação a objetos são recomendados
  • Conhecimentos básicos de arquitetura de software
  • Familiaridade com APIs e serviços será um diferencial
  • Conhecimentos básicos de UML são recomendados
  • Experiência com desenvolvimento de aplicações será um diferencial
Materiais
Inglês/Português + Exercícios + Lab Pratico
Conteúdo Programatico

Módulo 1 – Fundamentos de Arquitetura Modular

  1. Conceitos fundamentais de modularidade
  2. O que é um módulo
  3. O que é um componente
  4. O que é um serviço
  5. O que é uma biblioteca
  6. O que é um pacote
  7. Modularidade em software
  8. Benefícios da modularização
  9. Complexidade de software
  10. Separação de responsabilidades
  11. Encapsulamento
  12. Abstração
  13. Information Hiding
  14. Princípio da responsabilidade única
  15. Evolução arquitetural

Módulo 2 – Coesão, Acoplamento e Dependências

  1. Conceito de coesão
  2. Coesão funcional
  3. Coesão lógica
  4. Coesão temporal
  5. Coesão acidental
  6. Conceito de acoplamento
  7. Acoplamento estrutural
  8. Acoplamento de dados
  9. Acoplamento de controle
  10. Dependências explícitas e implícitas
  11. Dependências circulares
  12. Dependency Graph
  13. Gestão de dependências
  14. Redução de acoplamento
  15. Aumento de coesão
  16. Indicadores de qualidade modular

Módulo 3 – Princípios de Design Modular

  1. Single Responsibility Principle
  2. Open/Closed Principle
  3. Liskov Substitution Principle
  4. Interface Segregation Principle
  5. Dependency Inversion Principle
  6. SOLID
  7. Separation of Concerns
  8. DRY
  9. KISS
  10. YAGNI
  11. Design by Contract
  12. Information Hiding
  13. Encapsulation
  14. Abstração de interfaces
  15. Princípios de design orientado a componentes

Módulo 4 – Component-Based Architecture

  1. Conceitos de Component-Based Architecture
  2. Definição de componente
  3. Características de componentes
  4. Interfaces fornecidas
  5. Interfaces requeridas
  6. Contratos
  7. Componentes independentes
  8. Reutilização
  9. Composição de componentes
  10. Dependências entre componentes
  11. Componentes internos e externos
  12. Componentes plugáveis
  13. Componentes substituíveis
  14. Componentes reutilizáveis
  15. Componentes como unidades de implantação
  16. Componentes como unidades de evolução

Módulo 5 – Interfaces e Contratos

  1. Interfaces arquiteturais
  2. Interfaces públicas e internas
  3. Contratos entre módulos
  4. API versus interface interna
  5. Contract-first
  6. Design by Contract
  7. Data Contracts
  8. Service Contracts
  9. Versionamento de contratos
  10. Compatibilidade
  11. Backward Compatibility
  12. Breaking Changes
  13. Contratos síncronos
  14. Contratos assíncronos
  15. Eventos como contratos

Módulo 6 – Modular Monolith

  1. Conceito de Modular Monolith
  2. Monólito tradicional versus monólito modular
  3. Estrutura interna
  4. Módulos de negócio
  5. Fronteiras entre módulos
  6. Comunicação entre módulos
  7. Dependências permitidas
  8. Dependências proibidas
  9. Encapsulamento de módulos
  10. Banco de dados compartilhado
  11. Estratégias para isolamento de dados
  12. Testes de módulos
  13. Deployment
  14. Benefícios e limitações
  15. Quando utilizar Modular Monolith

Módulo 7 – Modularidade e Microsserviços

  1. Modularidade versus microsserviços
  2. Quando um módulo deve virar serviço
  3. Distributed Monolith
  4. Microservices boundaries
  5. Bounded Context
  6. Domain-driven modularization
  7. Comunicação entre serviços
  8. APIs
  9. Mensageria
  10. Eventos
  11. Independência de deployment
  12. Independência de dados
  13. Trade-offs
  14. Complexidade distribuída
  15. Observabilidade
  16. Resiliência
  17. Estratégias de decomposição

Módulo 8 – Componentes e Domain-Driven Design

  1. Fundamentos de DDD
  2. Domain Model
  3. Bounded Context
  4. Subdomínios
  5. Core Domain
  6. Supporting Domain
  7. Generic Domain
  8. Context Mapping
  9. Aggregates
  10. Entities
  11. Value Objects
  12. Domain Services
  13. Domain Events
  14. Organização modular baseada no domínio
  15. Bounded Context como fronteira arquitetural

Módulo 9 – Padrões Arquiteturais para Modularidade

  1. Layered Architecture
  2. Clean Architecture
  3. Hexagonal Architecture
  4. Ports and Adapters
  5. Onion Architecture
  6. Component Architecture
  7. Package by Layer
  8. Package by Feature
  9. Package by Component
  10. Vertical Slice Architecture
  11. Dependency Rule
  12. Arquiteturas orientadas ao domínio
  13. Comparação entre abordagens
  14. Trade-offs arquiteturais

Módulo 10 – Comunicação entre Componentes

  1. Comunicação direta
  2. Interfaces internas
  3. APIs
  4. REST
  5. RPC
  6. Eventos
  7. Mensageria
  8. Publish/Subscribe
  9. Event-driven communication
  10. Synchronous versus asynchronous
  11. Acoplamento temporal
  12. Acoplamento espacial
  13. Eventual Consistency
  14. Idempotência
  15. Retry
  16. Timeout
  17. Circuit Breaker

Módulo 11 – Modernização de Sistemas Legados

  1. Identificação de problemas arquiteturais
  2. Monólitos legados
  3. Código fortemente acoplado
  4. Dependências circulares
  5. God Objects
  6. Big Ball of Mud
  7. Estratégias de modularização
  8. Strangler Fig Pattern
  9. Branch by Abstraction
  10. Anti-Corruption Layer
  11. Refactoring arquitetural
  12. Extração de módulos
  13. Extração de componentes
  14. Migração incremental
  15. Modularização antes de microsserviços
  16. Gestão de riscos durante a modernização

Módulo 12 – Laboratório: Projeto de Arquitetura Modular

Projeto prático completo envolvendo:

  • Análise de uma aplicação monolítica
  • Identificação dos principais domínios
  • Identificação dos módulos
  • Análise de dependências
  • Identificação de problemas de acoplamento
  • Definição das fronteiras dos componentes
  • Definição das interfaces
  • Criação dos contratos
  • Modelagem da arquitetura
  • Organização dos módulos
  • Definição das regras de dependência
  • Implementação de componentes
  • Testes de integração
  • Estratégia de evolução
  • Avaliação Modular Monolith versus Microsserviços
  • Documentação da arquitetura
TENHO INTERESSE

Cursos Relacionados

Curso Terraform Deploying to Oracle Cloud Infrastructure

24 Horas

Ansible Overview of Ansible architecture

16h

Curso Databricks Fundamentals - Nivel Basico

24 horas

Curso Databricks Advanced Engineering AI ML and Data Products Nivel Intermediario Avancado

32 horas

Google Professional DevOps Engineer Advanced Monitoring & Incident Response

32 horas Curso Pratico

Curso Google Professional DevOps Engineer CI/CD Techniques & Security Practices

32 horas Curso Pratico

Curso OpenShift Docker & Kubernetes

40 horas