.NET Software Architect: Domain and Services

Apresentação do curso

Esse curso visa apresentar práticas de arquitetura de softwares baseadas estratégias para lidar com Domínios complexos e paradígmas orientados a serviços, num contexto de aplicações construídas com .net (dotnet) framework. Além disso, se propoem apresentar padrões e técnicas avançados de desenvolvimento de software. Todos os módulos serão pautados nas principais publicações (acadêmicas e da indústria) sobre os temas propostos, bem como na experiência dos instrutores, que possuem vários anos de atuação na Indústria, em vários cenários.

Publico-Alvo: Analistas de Sistemas e Desenvolvedores de Software que desejam ampliar suas técnicas de  arquitetos de Software.

Módulo 01 – Estrutura arquitetural de Módulos: Domain-Driven Design

Este módulo tem como foco apresentar as abordagens estratégicas e táticas do Domain-Driven Design. Esses tópicos serão abordados nos seguintes pontos:

  • Bounded-Context
    • Identificação de Domínio e Subdomínios
    • Mapeando contextos
  • Modelos de Domínio
    • Objetos de Valor?
      • Obsessão por tipos primitivos
      • Tipando seus enums com Classe de Enumeração
      • Validações no seu domínio.
    • Entidades
      • Trabalhando com identidades
    • Serviço de Domínio
      • Lidando com modelos que compartilham lógicas de negócio
    • Agregados
      •  Modelando agregados
    • Fabricas
      • Tipos de fabricas e suas vantae
  • Aplicação e suas dependências
  • Serviço de Aplicação
    • Orquestrando o fluxo do seu negócio
  • Padrão de Repositório
    • Repositórios Genéricos
    • Repositórios por Agregado
  • Eventos de domínio
    • Integrando contextos
  • Testes
    • Testes de Unidade usando xUnit
    • BDD com o framework BetterSpecs

Módulo 02 – Estrutura arquitetural de Componentes e Conectores: Arquitetura de Serviços (.net framework)

Neste módulo aprenderemos técnicas modernas de design para projetar e construir serviços escaláveis, performáticos, simples e confiáveis, que suportem a arquitetura de Microservices e promovam o baixo acoplamento, reusabilidade, autonomia e baixa manutenção de estado. Além disso, veremos como os serviços são empacotados e implantados através de técnicas de DevOps em um ambiente altamente autônomo:

  • Introdução
    • Service-Oriented Computer
    • Service-Orientation
    • Service-Oriented Architecture
  • Análise de Inventário de Serviços
    • Identificação de modelos de negócio
    • Definição de arquitetura de tecnologia (context mapping)
    • Definição de projeto de inventário de serviços
  • Modelagem de Serviço
    • Definição de escopo de análise dos modelos de domínio
    • Identificar Automações e Sistemas Afetados
    • Definição de serviços candidatos
  • Design e Lógica de Serviço
    •  Aplicando Design de Contrato de Serviço
      • Design dos tipos de Serviços
      • Definindo contrato padrão
    • Aplicando Lógica de Serviço
      • Tipos de fluxo de comunicação de serviços
      • Definindo lógica de consumo de serviços
      • Mapeamento de contextos
  • Desenvolvimento de Serviço
    • Implementação de serviços de entidade
    • Implementando de serviços utilitários
    • Implementando de serviços de composição
    • Técnica de Wrapping para aplicações legadas
  • Testes de Serviço
    • Explorando técnicas de testes e ferramentas
  • Deploy de Serviço
    • aplicando técnicas de práticas contínuas (DevOps)
  • Monitoramento
    • Aplicando técnicas de monitoramento de APIs
  • Descoberta de Serviço
    • Versionamento de serviços
    • Documentação de serviços
    • Repositório de serviços