Platform

Q&A about the Devprime platform and Devprime Stack components.

1. What is the Devprime Stack?

The Devprime Stack offers a complete application design based on a hexagonal architecture. One of the main advantages is to have structured and decoupled applications, allowing any developer, regardless of their level of knowledge (Junior, Full or Senior), to build the first Cloud Native Event-Driven microservices and API application in 30 minutes, removing technology obstacles and promoting increased maturity in software development.
The Devprime Foundation classes present in the Devprime Stack were built to apply a Domain Driven Design (DDD) strategy, modeling the software in business domains, in addition to facilitating test-driven development and Test-Driven Development (TDD) practices, ensuring the quality of the implementations carried out by developers.

2. Does Devprime generate the test frameworks automatically?

By using the Devprime CLI, we have features that create standardized, testable, and predictable frameworks. These frameworks serve as a template and are integrated with the Devprime Stack, ensuring testability and directing the team to best practices in creating code in a Test-Driven Development (TDD) scenario.

3. When you mention decoupling, is the only layer that is really decoupled the domain layer?

Devprime already provides an infrastructure that addresses all the criteria of clean code, S.O.L.I.D., design patterns, and a hexagonal architecture. This all provides a well-structured code, as well as the decoupling of the classes and layers of the application. Connections between classes are accomplished by injecting dependencies.
Every application generated by Devprime follows the Event-Driven strategy. Therefore, all internal and external communication of the applications is carried out through events. This makes it possible for applications not to know each other, but to be able to communicate perfectly, ensuring decoupling between them.

4. If Devprime creates the whole structure automatically, do I only care about coding the business layer?

The Devprime Stack provides developers with a software strategy and accelerates project development by removing technology roadblocks so they can spend 80% of their time implementing business-driven code and testing coverage. This leads to the construction of well-made software with low maintenance costs and evolution.

5. What is the main purpose of Devprime?

Devprime accelerates application delivery and development of Event-Driven, Cloud-Native microservices and APIs using a Stack with accelerators, out-of-the-box features and software architecture strategies that follow leading industry standards.

6. How do I make sure my developer won’t change something they shouldn’t, hurting Stack?

The maintenance of the stack is done by the Devprime team, which provides upgradable components for consumption in the applications. Implementations made by project teams do not change the stack. If unusual behavior occurs, Devprime reports criticism of the objects coded by the developers and generates structured logs exposing details of the identified problems.
Devprime’s architecture project was structured with the goal of facilitating code review. In our documentation, we indicate recommendations for conducting code inspections for non-conformities.
Enterprise licensing customers can additionally hire a follow-up consultancy that performs audits on applications in order to find non-conformities in the architecture.

7. Where does the Stream Adapter persist the events emitted in case the service is unavailable?

All existing adapters in Devprime have autonomous behavior and handle potential failures. In the application configuration, it is possible to specify an adapter State for resiliency persistence.

8. Can I run an application developed with Devprime on Cloud Foundry?

By using the Devprime product, all developed applications adopt the Cloud Native strategy, allowing publishing in any Cloud or On-premises environment.

9. Is scalability provided by the Stack or the Cloud infrastructure?

Devprime-based applications are event-driven, asynchronous and non-blocking, designed as stateless, not maintaining local states, ensuring smooth execution and not being a resource offender, working seamlessly in high scalability scenarios. The cloud infrastructure must enable the scalability of the application, for example, of the Kubernetes cluster, in order to meet the demand according to the volume.

10. How do Devprime adapters work?

Devprime adopts a hexagonal architecture strategy, bringing several adapters with intelligent behaviors and developer-ready functionalities. It is possible to include additional code to enable customizations.
Adapters address the specific particularities of technology, removing their obstacles and making life easier for developers. All are controlled and monitored by Devprime Middleware, which ensures predictable behavior, in addition to activating resiliency features, Retry, Circuit Break, and ensuring the three pillars of Observability: Logs, Tracing, and Metrics.

11. From the perspective of Domain Driven Design (DDD), how to isolate the delimited contexts?

Through a stage called Analytical DDD, we define the boundaries between business contexts, as well as the interactions between them, with the help of Event Storming journeys.
With the conclusion of this first cycle, we begin the second phase, which is the Tactical DDD. During this process, predictable business outputs are generated, for which we have pre-established classes in the Devprime Foundation.

12. I’m using Devprime to build my e-commerce and products appear in a lot of different bounded contexts. Wouldn’t that create an inconsistency in the data?

In a simple e-commerce scenario, if we are dealing with the product within the context of a storefront, we would have a list of photos and a commercial description of that product. In the case of the invoice context, we would only have a description and the SKU of that product.

If we look at it from this angle, the vision of a product in the context of an invoice is much simpler than in the context of a storefront. Although the data deal with the same subject, they are different, and there is no duplication of these data. What exists is a link between them through the SKU.

13. How to ensure data consistency in the Domain Driven Design (DDD) approach and how to ensure that all contexts have access to the same information?

Devprime has an Event-Driven Architecture, allowing you to propagate business facts. Other services that subscribe to the events can react and take action.

14. I have an application built with Devprime and I want to switch the Stream service. You can?

Devprime provides in its structure the configuration files for each available driver. If you need to change, for example, RabbitMQ for a Kafka, you can modify the configuration, and the adapter will adapt to this change without the developer having to change a single line of code. Additionally, it is possible to use the Extesions Adapter to use additional components while maintaining compatibility with the architecture.

15. Are all adapter configurations pre-configured in Devprime?

The Devprime CLI allows the developer to choose the settings for each technology at the beginning of the project. If it is necessary to make changes later, just use the application’s configuration file, without the developer having to change any line of code.

In the production environment, we recommend the use of a security vault for credentials.

16. During microservices scaling, what is the behavior of Devprime?

The Devprime platform adopts Stateless, Event-Driven, and Reactive APIs by default. Devprime’s infrastructure is composed of a set of autonomous adapters that actively react in a distributed systems environment, including services such as resiliency, automatic retry, and circuit break.

Based on the information presented above, you can add new replicas manually or by an “auto scale” process that will make no difference to the applications.

17. Where do I implement the business rules in a project created with the Devprime platform?

Devprime’s architecture provides a placeholder for business rules, called the Domain layer. It is in this layer that the intelligence obtained in conversations with the business areas is placed and mapped in a Domain-Driven Design (DDD) journey.
The developer builds DDD-based code, inheriting the classes from the Devprime Foundation. These classes contain the business rules expressed in a predictable and testable format.

The Devprime CLI analyzes these classes of business and through the DP INIT accelerators it automatically builds common implementations such as API exposure, services, repositories.

18. What is the health check adapter provided by Devprime for?

As part of the project offered by the Devprime platform, it is possible to find the health check adapter so that tools such as Kubernetes can check the health status and availability of the application.

19. Is it possible to customize the Devprime Stack health check adapter?

We offer the possibility of customizing both the health check adapter and other adapters.

20. What if it is necessary to build new adapters at Devprime?

The Devprime platform already offers a generic adapter called Extensions that allows the inclusion of additional nuggets components, adding additional behaviors and maintaining compatibility with the platform’s architecture.

We offer enterprise customers, through an additional contract, support in architecture discussions in order to guide them in improving their direction. If you have a need to develop a new feature, our team will help you with the best direction in the adoption of customizable components.

21. How is validation and security done in a communication scenario between microservices? Is it all up to API Gateway?

The adoption of security practices follows the architectural criteria of each project. Some scenarios adopt directly on API Gateway and others hybrids using the security adapter adapter that supports the leading authorization and authentication technologies on the market such as Keycloak, Auth0, Azure Entra ID, AWS Cognito, Google Cloud Identity.

22. How to get started with Devprime Platform?

To get started with Devprime, you need to install the Devprime CLI on the developer’s machine with the latest version of the .NET SDK (Linux, macOS, and Windows). From that point, the developer can start developing applications with Devprime using Visual Studio Code, Visual Studio Community, Visual Studio Professional/Enterprise.

23. How does updating Devprime Stack versions work?

On the Devprime platform we provide free of charge to our customers all the updates that are performed, not only in the Devprime Stack, but in all Devprime components, during the period in which the licensing agreement is active with our SaaS subscription.

24. How do you maintain compatibility between versions of the Devprime Stack?

Devprime Stack components are versioned through nuget libraries and made available to customers so they can perform updates to their projects on demand.

25. Are all the applications you create cloud-agnostic?

The Devprime platform uses a cross-platform strategy and is designed using a Cloud Native architecture, enabling the best cloud experience with portability across cloud providers.
Applications can run on Kubernetes (in the cloud or on-premises) or even on virtual machines, transparently. This makes it possible to switch hosts at any time without the need to change a line of application code.

Our recommendation is always to use managed Kubernetes such as Azure AKS, AWS EKS, Google GKE and many other offerings.

26. Does the health check mechanism provided by Devprime identify if the data persistence or the stream is down?

Devprime’s health check engine offers a series of extensible endpoints to expose information related to the proper functioning of the application. However, to check connection availability to data persistence mechanisms or stream services, there are event-driven, reactive, and non-offensive capabilities in the State and Stream adapters, respectively, that make information available to your SRE team when they occur.

The Devprime platform is not an infrastructure monitoring tool. You’ll continue to use your current tools in conjunction with Devprime.

27. If I need to use an SFTP or something that doesn’t have an adapter ready, would it be possible to create a new adapter?

Use the adapter called Extensions to add third-party external components and allow them to be used without affecting the project.

Last modified January 10, 2024 (967dcac3)