Platform

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

1. What is 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 structures. 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, the only layer that is really decoupled is 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, in addition to the decoupling of the classes and layers of the application. Connections between classes are accomplished through dependency injection.
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 communicate perfectly, ensuring decoupling between them.

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

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

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 ensure that my developer won’t change something they shouldn’t, hurting the Stack?

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

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

All existing adapters in Devprime have autonomous behavior and handle potential failures. In the application configuration, you can 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 applications developed adopt the Cloud Native strategy, allowing them to be published in any Cloud or On-premises environment.

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

Devprime-based applications are event-driven, asynchronous, and non-blocking, designed as stateless, maintaining no local states, ensuring fluid 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, 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 features ready for the developer. Additional code can be added for customizations.
Adapters deal with the specific particularities of technology, removing its obstacles and making life easier for developers. All are controlled and monitored by Devprime Middleware, which ensures predictable behavior, in addition to activating resilience, Retry, Circuit Break features and ensuring the three pillars of Observability: Logs, Tracing and Metrics.

11. From the perspective of Domain Driven Design (DDD), how to isolate 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 Devprime Foundation.

12. I’m using Devprime to build my e-commerce and products appear in several different delimited contexts. Wouldn’t that generate 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 view of a product in the context of an invoice is much simpler than in the context of a shop window. 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 change the service from Stream. You can?

Devprime provides in its framework the configuration files for each available driver. If it is necessary 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 any 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. When scaling microservices, how does Devprime behave?

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

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

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

The Devprime 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 Devprime Foundation classes. These classes contain the business rules expressed in a predictable and testable format.

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

18. What is the health check adapter available from 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 components nuggets, adding additional behaviors and maintaining compatibility with the platform’s architecture.

We offer enterprise customers support in architecture discussions through an additional contract 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 microservices communication scenario? Is everything in charge of API Gateway?

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

22. How do I 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 the upgrade of Devprime Stack versions work?

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

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

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

25. Are all the applications created independent of the cloud?

The Devprime platform uses a multi-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 in virtual machines, transparently. This makes it possible to change 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 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 verify the availability of connection 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 it occurs.

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 their use without affecting the project.

Last modified August 20, 2024 (2f9802da)