Plataforma

Perguntas e respostas sobre a plataforma Devprime e componentes do Devprime Stack.

1. O que é o Devprime Stack?

O Devprime Stack oferece um projeto completo de aplicação baseado em uma arquitetura hexagonal. Uma das principais vantagens é ter aplicações estruturadas e desacopladas, permitindo que qualquer pessoa desenvolvedora, independente do seu nível de conhecimento (Júnior, Pleno ou Sênior), construa a primeira aplicação Cloud Native Event-Driven microsserviços e API em 30 minutos, removendo os obstáculos de tecnologia e promovendo o aumento da maturidade no desenvolvimento de software.
As classes do Devprime Foundation presentes no Devprime Stack foram construídas para aplicar uma estratégia de Domain Driven Design (DDD), modelando o software em domínios de negócio, além de facilitar o desenvolvimento orientado a testes e práticas de Test-Driven Development (TDD), garantindo a qualidade nas implementações realizadas pelos desenvolvedores.

2. O Devprime gera as estruturas de teste automaticamente?

Ao utilizar o Devprime CLI, dispomos de funcionalidades que criam estruturas padronizadas, testáveis e previsíveis. Essas estruturas servem como modelo e são integradas com o Devprime Stack, garantindo testabilidade e direcionando a equipe para boas práticas na criação do código em um cenário de Test-Driven Development (TDD).

3. Quando vocês citam desacoplamento, a única camada que está realmente desacoplada é a camada de domínio?

O Devprime já fornece uma infraestrutura que aborda todos os critérios de clean code, S.O.L.I.D., design patterns e uma arquitetura hexagonal. Isso tudo proporciona um código bem estruturado, além do desacoplamento das classes e camadas da aplicação. As ligações entre as classes são realizadas através da injeção de dependência.
Toda aplicação gerada pelo Devprime segue a estratégia de Event-Driven. Sendo assim, toda comunicação interna e externa das aplicações é realizada através de eventos. Isso torna possível que as aplicações não conheçam umas às outras, porém consigam se comunicar perfeitamente, garantindo o desacoplamento entre elas.

4. Se o Devprime cria toda a estrutura automaticamente, eu só me preocupo em codificar a camada de negócio?

O Devprime Stack oferece aos desenvolvedores uma estratégia de software e acelera o desenvolvimento dos projetos, removendo obstáculos de tecnologia para que possam investir 80% do seu tempo implementando código direcionado ao negócio e cobertura de testes. Isso leva à construção de software bem-feito com baixo custo de manutenção e evolução.

5. Qual é a principal proposta do Devprime?

O Devprime acelera a entrega de aplicações e o desenvolvimento de Event-Driven, Cloud-Native microsserviços e APIs utilizando um Stack com aceleradores, funcionalidades prontas e estratégias de arquitetura de software que seguem os principais padrões da indústria.

6. Como garanto que meu desenvolvedor não vai alterar algo que não deveria, prejudicando o Stack?

A manutenção do stack é feita pela equipe Devprime, que disponibiliza componentes atualizáveis para consumo nas aplicações. As implementações feitas pelas equipes do projeto não alteram o stack. Caso ocorra um comportamento fora do normal, o Devprime reporta críticas dos objetos codificados pelos desenvolvedores e gera logs estruturados expondo detalhes dos problemas identificados.
O projeto de arquitetura do Devprime foi estruturado com o objetivo de facilitar a revisão de código. Em nossa documentação, nós indicamos recomendações para realizar inspeções do código em busca de não conformidades.
Os clientes do licenciamento enterprise podem contratar adicionalmente uma consultoria de acompanhamento que realiza auditorias nas aplicações com o propósito de encontrar não conformidades na arquitetura.

7. Onde o Adapter de Stream persiste os eventos emitidos caso o serviço esteja indisponível?

Todos os adapters existentes no Devprime possuem comportamento autônomo e lidam com possíveis falhas. Na configuração da aplicação, é possível indicar um adapter State para persistência da resiliência.

8. Consigo rodar uma aplicação desenvolvida com o Devprime no Cloud Foundry?

Ao utilizar o produto Devprime, todas as aplicações desenvolvidas adotam a estratégia Cloud Native, permitindo a publicação em qualquer ambiente de Cloud ou On-premises.

9. A escalabilidade é fornecida pelo Stack ou pela infraestrutura de Cloud?

As aplicações baseadas no Devprime são event-driven, assíncronas e não bloqueantes, projetadas como stateless, não mantendo estados locais, garantindo uma execução fluida e não sendo um ofensor de recursos, funcionando perfeitamente em cenários de alta escalabilidade. A infraestrutura de Cloud deve habilitar a escalabilidade da aplicação, por exemplo, do cluster Kubernetes, de forma a atender à demanda conforme o volume.

10. Como funcionam os adapters do Devprime?

O Devprime adota uma estratégia de arquitetura hexagonal, trazendo diversos adapters com comportamentos inteligentes e funcionalidades prontas para o desenvolvedor. É possível incluir código adicional possibilitando customizações.
Os adapters lidam com as particularidades específicas de tecnologia, removendo seus obstáculos e facilitando a vida dos desenvolvedores. Todos são controlados e monitorados pelo Devprime Middleware, que garante um comportamento previsível, além de ativar recursos de resiliência, Retry, Circuit Break e garantir os três pilares de Observability: Logs, Tracing e Metrics.

11. Na ótica de Domain Driven Design (DDD), como isolar os contextos delimitados?

Através de uma etapa chamada de DDD Analítico, definimos as fronteiras entre os contextos de negócio, assim como as interações entre eles, com o auxílio de jornadas de Event Storming.
Com a conclusão deste primeiro ciclo, damos início à segunda fase, que é o DDD Tático. Durante esse processo, são gerados outputs de negócio previsíveis, para os quais dispomos de classes pré-estabelecidas no Devprime Foundation.

12. Estou utilizando o Devprime para construir meu e-commerce e produtos aparecem em vários contextos delimitados diferentes. Isso não geraria uma inconsistência nos dados?

Em um cenário simples de e-commerce, se estamos tratando do produto dentro do contexto de uma vitrine, teríamos uma lista de fotos e uma descrição comercial desse produto. Já no caso do contexto de nota fiscal, teríamos apenas uma descrição e o SKU desse produto.

Se olharmos por esse ângulo, a visão de um produto no contexto de nota fiscal é muito mais simples do que no contexto de uma vitrine. Embora os dados tratem do mesmo assunto, eles são diferentes, não havendo duplicidade desses dados. O que existe é um vínculo entre eles por meio do SKU.

13. Como garantir a consistência dos dados na abordagem de Domain Driven Design (DDD) e como garantir que todos os contextos tenham acesso à mesma informação?

O Devprime possui uma arquitetura orientada a eventos (Event-Driven Architecture), permitindo propagar fatos do negócio. Outros serviços que assinam os eventos podem reagir e tomar ações.

14. Eu tenho uma aplicação construída com o Devprime e quero trocar o serviço de Stream. É possível?

A Devprime fornece em sua estrutura os arquivos de configuração para cada driver disponível. Caso seja necessário trocar, por exemplo, o RabbitMQ por um Kafka, você pode modificar a configuração, e o adapter irá se adaptar a essa mudança sem que o desenvolvedor precise alterar nenhuma linha de código. Adicionalmente é possível utilizar o Adapter de Extesions para utilizar componentes adicionais mantendo a compatibilidade com a arquitetura.

15. Todas as configurações dos adapters estão pré-configuradas no Devprime?

O Devprime CLI permite que o desenvolvedor escolha as configurações de cada tecnologia no início do projeto. Caso seja necessário realizar alterações posteriormente, basta utilizar o arquivo de configuração da aplicação, sem que o desenvolvedor precise alterar nenhuma linha de código.

No ambiente produtivo nós recomendamos a utilização de cofre de segurança para credenciais.

16. Durante a escalabilidade dos microsserviços, qual é o comportamento do Devprime?

A Devprime platform adota por padrão as estratégias Stateless, Event-Driven e Reactive APIs. A infraestrutura do Devprime é composta por um conjunto de adapters autônomos que reagem de forma ativa em um ambiente de sistemas distribuídos, incluindo serviços como resiliência, retry e circuit break automáticos.

Com base nas informações apresentadas acima você pode adicionar novas replicas manualmente ou por um processo de “auto scale” que não fará diferença para as aplicações.

17. Onde implemento as regras de negócio em um projeto criado com a Devprime plataform?

A arquitetura do Devprime oferece um espaço reservado para as regras de negócio, chamado de camada de Domínio. É nessa camada que a inteligência obtida nas conversas com as áreas de negócio é colocada e mapeameadas em uma jornada de Domain-Driven Design (DDD).
O desenvolvedor constrói código baseado em DDD, herdando as classes do Devprime Foundation. Essas classes contêm as regras de negócio expressas em um formato previsível e testável.

O Devprime CLI analisa essas classes de negócio e por meio dos aceleradores do DP INIT ele constrói automaticamente implementações comuns como exposição de API, serviços, repositórios.

18. Para que serve o adapter de health check disponibida pela Devprime?

Como parte do projeto oferecido pela Devprime platform é possível encontrar o adapter de health check para que ferramentas como o Kubernetes possam verificar o estado de saúde e a disponibilidade da aplicação.

19. É possível customizar o adapter de health check do Devprime Stack?

Oferecemos a possibilidade de personalização tanto do adapter de health check quanto de outros adapters.

20. E caso seja necessário a construção de novos adapters na Devprime?

A plataforma Devprime já oferece um adapter genérico chamado de Extensions que permite a inclusão componentes adicionais nuggets agregando comportamentos adicionais e mantendo compatibilidade com a arquitetura da plataforma.

Nós oferecemos para os clientes enterprise por meio de contrato adicional o suporte nas discussões de arquitetura de forma a orientarmos na melhoria direcionamento. Caso tenha uma necessidade de desenvolver uma nova funcionalidade, nossa equipe ajudara com o melhor direcionamento na adoção de componentes customizáveis.

21. Como é feita a validação e segurança em um cenário de comunicação entre os microsserviços? Fica tudo a cargo do API Gateway?

A adoção de práticas de segurança segue os critérios de arquitetura de cada projeto. Alguns cenários adotam diretamente no API Gateway e outros híbridos utilizando o adapter de adapter de segurança que suporta as principais tecnologias de autorização e autenticação do mercado como Keycloak, Auth0, Azure Entra ID, AWS Cognito, Google Cloud Identity.

22. Como começar a usar o Devprime Platform?

Para começar a usar a Devprime, é necessário realizar a instalação do Devprime CLI na máquina do desenvolvedor com última versão do .NET SDK (Linux, macOS e Windows). A partir desse ponto, o desenvolvedor pode começar a desenvolver aplicações com o Devprime usando o Visual Studio Code, Visual Studio Community, Visual Studio Professional / Enterprise.

23. Como funciona a atualização das versões do Devprime Stack?

Na Devprime plataforma nós fornecemos gratuitamente para nossos clientes todas as atualizações que são realizadas, não apenas no Devprime Stack, mas em todos os componentes da Devprime, durante o período em que o contrato de licenciamento estiver ativo com a nossa assinatura de SaaS.

24. Como vocês mantêm a compatibilidade entre as versões do Devprime Stack?

Os componentes do Devprime Stack são versionados por meio de bibliotecas nuget e disponibilizados para os clientes, para que possam realizar as atualizações em seus projetos conforme a demanda.

25. Todas as aplicações criadas são independentes da nuvem?

A Devprime platform utiliza uma estratégia multiplataforma e foi projetada usando uma arquitetura Cloud Native, permitindo a melhor experiência de Cloud com portabilidade entre os provedores de cloud.
As aplicações podem ser executadas no Kubernetes (na nuvem ou localmente) ou mesmo em máquinas virtuais, de forma transparente. Isso possibilita a troca de host a qualquer momento sem a necessidade de alterar uma linha de código da aplicação.

A nossa recomendação é sempre a utilização do Kubernetes gerenciado como as ofertas de Azure AKS, AWS EKS, Google GKE e muitas outras.

26. O mecanismo de health check fornecido pela Devprime identifica se a persistência de dados ou o stream está fora do ar?

O mecanismo de health check da Devprime oferece uma série de endpoints extensíveis para expor informações relacionadas ao bom funcionamento da aplicação. No entanto, para verificar a disponibilidade de conexão com mecanismos de persistência de dados ou serviços de stream, existem funcionalidades orientadas a eventos, reativas e não ofensivas nos adapters de State e Stream, respectivamente, que disponibilizam informações à sua equipe de SRE quando ocorrem.

A plataforma Devprime não é uma ferramenta de monitoramento de infraestrutura. Você continuará utilizando as ferramentas atuais em conjunto com a Devprime.

27. Se eu precisar usar um SFTP ou algo que não tenha um adapter pronto, seria possível criar um adapter novo?

Utilize o adapter chamado Extensions para adicionar componentes externos de terceiros e permitir seu uso sem afetar o projeto.

Última modificação August 25, 2023 (0967d05e)