DevPrime®

Build. Better. Software.

O DevPrime® é um produto para apoiar a modernização de aplicações e o desenvolvimento de Event-driven Cloud-Native Microservices e API’s fornecendo um Stack com aceleradores, funcionalidades prontas e estratégias de arquitetura de software e engenharia de aplicações tornando acessível o desenvolvimento de cenários complexo de software.

O DevPrime® é composto pelo DevPrime Stack, DevPrime Middleware, DevPrime Pipeline e DevPrime CLI que juntos permitem o desenvolvimento de um Microservices Cloud-Native em 30 minutos.

Ao iniciar um novo projeto baseado no DevPrime Stack o desenvolvedor de software terá à disposição um Microservices pronto com uma série de recursos para uso imediato fornecidos pela arquitetura do Stack utilizando o conceito de Adapters (Web, Security, Observability, Heath Check, RPC, Stream, State e App Center) que representam uma economia de cerca de 60% a 70% na infraestrutura de software da aplicação conforme representado na Figura 01.



Figura 01 – Abordagem do desenvolvimento Cloud-Native


As melhores práticas no desenvolvimento de software estão disponíveis no projeto de arquitetura como padronização, desacoplamento, testabilidade, manutenabilidade, reuso e principalmente o desenvolvimento de um modelo totalmente baseado em Event-Driven Architecture, Async, non-blocking, Stateless.

O Adapter de Stream por exemplo oferece conectividade com as principais plataformas de Stream/ MessageQueue  como Kafka, RabbitMQ, Azure Service BUS e AWS SQS  dispensando a necessidade de conhecimento prévio nas tecnologias por parte do desenvolvedor e simplificando o uso definindo apenas um parâmetro de configuração.

O Adapter de State se conecta com plataformas de banco de dados como (SQLServer, MongoDB, Oracle e outras). O Adapter de Security habilita segurança nas API’s do Microservices usando provedores de identidade como Identity Server, Azure AD, Amazon Cognito.

O Adapter de Stream, State, RPC ainda oferecem Retry, Resilience e Circuit Breakers automáticos tornando as suas aplicações compatíveis com uma abordagem antifrágil e aderente ao modelo de sistema distribuído conforme representado na Figura 02.


Figura 02 – Uma visão de funcionalidades nativas no DevPrime

As aplicações desenvolvidas disponibilizam nativamente os três pilares de Observability (Logs, Tracing e Metrics) patronizando a exposição de informações para as equipes de Site Reliability Engineering (SRE) viabilizando o monitoramento dos Microservices.

A estratégia Cloud Native oferecida pelo DevPrime®  isola as aplicações dos provedores de nuvem indo além do  conceito Multi-Cloud baseado em Infrastructure as Code (IaC) evitando o acoplamento ao provedor e possibilitando a publicação em  ambientes On-Premises ou Cloud (Microsoft Azure, Google Cloud, Amazon AWS e outras..)

DevPrime Domain

Um desenvolvedor de software baseado no DevPrime pode alternar entre projetos diferentes de forma natural ampliando a sua produtividade e a capacidade de escalar as esquipes de desenvolvimento. Nos projetos tradicionais se perde semanas para entender como está estruturado o novo projeto dificultando a sua evolução.

Nós oferecemos uma abordagem seguindo o padrão Domain Driven Design (DDD). A tecnologia do DevPrime Stack permite definir um comportamento previsível no entendimento, decomposição e estruturação das regras de negócio.

Após a análise de negócio e identificação dos Bounded Contexts, Context Map em uma jornada “Stratetic DDD” a equipe do projeto juntamente com os representantes do negócio conduzem uma jornada de “Tactital Design” definindo os Aggregate roots, Value Objects, Entities, Domain Events, Domain Services e Application Services que são termos padrões presentes no DevPrimeStack conforme apresentado na Figura 03 permitindo um fluxo padrão e escalável entre as equipes de desenvolvimento de software.


Figura 03 – Aderência transparente ao Domain Driven Design (DDD)

O projeto de Domain na arquitetura do DevPrimeStack foi projetado para isolar as regras de negócio permitindo a padronização, simplificação da manutenção e a testabilidade tornando possível cenários reais de Test-driven development (TDD) facilitando com a utilização de testes unitários e sua automação nos processos de Continous Integration (CI).

>> REUSO e barramento de serviços, portififolio de api

 

DevPrime Stack


o DevPrime Stack oferece uma infraestrutura completa para as aplicações. A infraestrutura é baseada em uma arquitetura hexagonal e em Event-Driven Architecture permitindo o desacoplamento e possibilitando testabilidade e redução de custos com manutenção além de uma série de recursos conforme apresentado na Figura 04.

Figura 04 – Uma visão das camadas do DevPrime Stack


As camadas Domain e Application concentram-se nas regras de negócio e no serviço de aplicação proporcionando um comportamento previsível no desenvolvimento das regras de negócio que são baseadas na estratégia de Domain Driven Design (DDD) e representadas 100% no código usando classes nativas do DevPrime Foundation.

O DevPrime Middleware é responsável pela integração do código do desenvolvedor com o DevPrime Stack e serviços relacionados como resiliência, retry e circuit break que são executados em um cenário de falha no fluxo de execução da aplicação.

Os adapters (Web, Security, Observability, Heath Check, RPC, Stream, State e App Center) são responsáveis pelos aspectos de tecnologia promovendo um comportamento autônomo para tomada de decisões conforme o detalhamento abaixo:

Adapter de Web
O oferece a exposição de API’s, Web Views e arquivos estáticos. As API’s seguem a especificação OpenAPI (OpenAPI Specification) sendo expostas com Swagger automaticamente para integração direta com API Gateway de preferência.

Adapter de Security
Oferece suporte aos protocolos Open ID e OAuth 2, garantindo segurança na exposição das APIs e comunicação interna entre os Microservices tornando transparente a integração com os provedores de identidade.

Adapter de Observability
Oferece suporte automático aos três pilares Logs, Tracing e Metrics utilizados pelas equies de Site Reliability Engineering (SRE). o DevPrime Middleware integra o código do desenvolvedor com o Adapter de Observability disponibilizando logs estruturados e tracing distribuído no padrão Open Telemetry. Caso necessário é possível a disponibilização de métricas customizadas de apoio ao negócio no formato do Prometheus.

Adapter de Health Check
Disponibiliza informações sobre a disponibilidade do seu Microservices para que os orquestradores de containers como o Kubernetes possam monitorar a saúde da aplicação. É possível incluir customizações para exposição e verificações customizadas.


Adapter de RPC
Habilita a comunicação com serviços externos seja via  RPC, gRPC ou GraphQL facilitando o trabalho dos desenvolvedores com rotinas automáticas de retry, circuit break enviando que falhas nas integrações prejudiquem a aplicação.

Adapter de Stream
Oferece drivers nativos para os principais serviços de Stream como Kafka, RabbitMQ, Azure Service BUS, AWS SQS simplificando a emissão e recebimento de eventos independente da plataforma de Stream adotada bastando alterar a configuração stream desejado habilitando ainda de forma transparente recursos de Retry, Circuit Break e Reliency que entram em ação em caso de falhas.

Adapter de State
Oferece uma abordagem de persistência poliglota (SQLServer, MongoDB, Oracle e outros) com total liberdade para a escolha de um mecanismo de persistência. O desenvolvedor utilizará código nativo de banco de dados ou plataformas de ORM como o EF (Entity Framework) ou Dapper.

Adapter AppCenter
Oferece integração com o DevPrime AppCenter para obter configurações distribuídas em real-time e estatísticas das aplicações.

A configuração padrão do DevPrime traz os Adapters habilitados, porém podem ser alterados nos parâmetros de configuração oferecendo total liberdade para as equipes de desenvolvimento e garantindo uma forte padronização.

Figura 05 – DevPrime Stack Components.

Para iniciar um projeto com o DevPrime® é necessária a instalação do DevPrime CLI e a liberação de acesso ao repositório Git que contém o Stack disponível.

O Stack contém uma série de aceleradores, estratégias e classes prontas para uso, facilitando o trabalho dos desenvolvedores, aumentando a produtividade e removendo obstáculos de tecnologia.

As classes do nosso Foundation conduzem o desenvolvedor para que consiga materializar sua jornada de Domain-Driven Design (DDD) em seu código, respeitando todos os critérios envolvidos na estratégia e tornando seu código 100% aderente às necessidades de negócio.

As classes de serviço existentes no DevPrime Stack provisionam diversos controles autônomos como Graceful Shutdown, Exception Controls entre outros.

DevPrime Middleware

O DevPrime Middleware é o sistema de comunicação interno que opera entre as camadas da aplicação de forma autônoma. Através de eventos ele aciona estratégias de inteligência como:

  • Orquestração do processamento do evento através do DevPrime Pipeline para garantir um comportamento previsível para a aplicação.
  • Realiza a comunicação entre as camadas da aplicação.
  • Garantir a aplicação dos três pilares de Observability (Logs, Tracing e Metrics) coletando informações durante o pipeline de execução da aplicação, provisionando logs estruturados e tracing distribuído.
  • Aciona mecanismos de resiliência, retry, circuit break entre outros.
  • Responsável pelo Exception Flow que durante o processamento de eventos em paralelo impede que exceções em um pipeline parem a execução dos demais ou mesmo a aplicação de maneira inesperada.
  • Idempotency Control.
  • Tomada de decisão de fluxo que envolve mais de um adapter diferente.

Figura 06 – DevPrime Middleware.

 

DevPrime Pipeline

A arquitetura fornecida pelo DevPrime® é nativamente aderente a Event-Driven Architecture e para que o fluxo e processamento desses eventos sejam realizados de forma previsível, temos o DevPrime Pipeline. Ele controla as etapas de execução e todo o ciclo de vida dos eventos entre as camadas da aplicação. Esta execução ocorre em estágios, possibilitando que cada estágio seja testado de maneira isolada.

Abaixo podemos ver um exemplo do DevPrime Pipeline lidando com fluxos paralelos de execução:

Figura 07 – DevPrime Pipeline.

DevPrime CLI (Command Line Interface)

O DevPrime Command Line Interface auxilia os desenvolvedores a realizarem um OnBoard prático e rápido, através da engine do DevPrime Stack que gera uma estrutura básica da aplicação, fornecendo um ganho de produtividade alto para o desenvolvedor.

O CLI habilita a criação dinâmica de componentes como: Domain Services, Handlers, Repositories, Controllers, Unity Tests entre outros, além de permitir escolha das tecnologias utilizadas. Conforme Figura 01.

A estrutura de testes unitários criados pelo CLI, cobrem as várias camadas da aplicação além das operações do ciclo de vida básico dos objetos de domínio.

Figura 08 – Gerando estrutura básica da aplicação usando DevPrime CLI.

Figura 09 – Criando componentes baseados no domínio usando DevPrime CLI.

DevPrime Distributed Services (Distributed Transanction)

 

O DevPrime Distributed Services disponibiliza uma solução completa para transações distribuídas na arquitetura de Microservices baseada no padrão SAGA Pattern seguindo o modelo de orquestração das transações, garantindo a visualização, desacoplamento entre os Microservices e controle do processo de rollback em caso de falhas.

Esse recurso permite aos desenvolvedores criarem fluxos transacionais dinâmicos entre os Microservices e que podem ser atualizados em real-time sem afetar os Microservices em produção, garantindo flexibilidade para as estratégias de business da empresa.