Architecture Improvements Proposals
Scope
This section provides a detailed overview of the architecture improvements proposals for the whole Aura ecosystem, the technical platform that powers both ATRIA and Aura Virtual Assistant.
This is the multi-page printable view of this section. Click here to print.
Scope
This section provides a detailed overview of the architecture improvements proposals for the whole Aura ecosystem, the technical platform that powers both ATRIA and Aura Virtual Assistant.
DAPR (Distributed Application Runtime) is a framework designed to simplify the development of microservices-based applications.
It provides a set of building blocks that help developers address common challenges in distributed applications, such as service communication, state management, event publishing and subscription, and more.
The motivation behind adopting DAPR in our microservices platform is to enhance the development and operational efficiency of distributed applications.
DAPR provides a standardized way to handle common microservices challenges, such as service discovery, state management, and event-driven communication, which can significantly reduce the complexity of building and maintaining microservices architectures.
Currently, our platform relies on custom implementations for these functionalities, leading to increased development time and potential inconsistencies. By integrating DAPR, we aim to streamline our microservices development process, improve scalability, and enhance the overall reliability of our applications.
Moreover, DAPR would minimize the complexity of new services deployment leaning on features such as automatic service discovery and built-in support for various state stores and message brokers. This will allow our development teams to focus more on business logic rather than infrastructure concerns, ultimately accelerating our time to market and improving the maintainability of our codebase.
| Date | Proposal leadership team |
|---|---|
| June 2025 | Aura Engineering team |
DAPR’s architecture is designed to provide a flexible and modular framework for building distributed applications.
It consists of a control plane and a data plane, where the control plane manages configurations and policies, while the data plane handles the actual service interactions.
Below is a visual representation of DAPR’s architecture:
graph TD
classDef graphTitle font-size: 20px, font-weight: bold, fill:#f0f0f0, stroke:#333, stroke-width:2px;
subgraph Control Plane
A[Configuration Management]
B[Policy Enforcement]
C[Monitoring and Observability]
D[Service Discovery]
E[Scaling and Resilience]
end
F[Sidecars]
subgraph Data Plane
G[Service Invocation]
H[State Management]
I[Publish and Subscribe]
J[Bindings]
end
A --> F
B --> F
C --> F
D --> F
E --> F
F --> G
F --> H
F --> I
F --> J
This diagram illustrates how the control plane and data plane interact to enable DAPR’s functionalities, ensuring seamless communication and management of distributed applications.
DAPR’s architecture is composed of several key components that work together to enable microservices communication and management:
These components collectively simplify the development and operation of distributed applications, ensuring scalability, portability, and ease of integration.
In the context of DAPR, a “sidecar” is a container that runs alongside each microservice on the same machine or pod. This container acts as an intermediary that provides DAPR capabilities to the microservice. Sidecars enable:
Below is a simplified sequence diagram illustrating how communication works in DAPR:
sequenceDiagram
participant ServiceA
participant DAPR-SidecarA
participant DAPR-SidecarB
participant ServiceB
ServiceA->>DAPR-SidecarA: Invoke ServiceB
DAPR-SidecarA->>DAPR-SidecarB: Forward request
DAPR-SidecarB->>ServiceB: Deliver request
ServiceB->>DAPR-SidecarB: Respond
DAPR-SidecarB->>DAPR-SidecarA: Forward response
DAPR-SidecarA->>ServiceA: Deliver response
This diagram demonstrates how DAPR sidecars facilitate communication between services, ensuring seamless interaction and abstraction of complexity.
DAPR uses a publish-and-subscribe model to manage events. This model allows services to communicate asynchronously and decoupled. Events in DAPR have the following characteristics:
DAPR supports state management by providing a distributed state store that can be backed by various storage solutions, including Redis. Redis is a popular in-memory data structure store that is often used for caching, session management, and real-time analytics.
Imagine a shopping cart application where user session data needs to be stored temporarily. DAPR can use Redis to store the cart state, ensuring fast access and updates:
By leveraging Redis, DAPR ensures efficient and reliable state management for distributed applications.
The control plane in DAPR is responsible for managing the overall configuration, security, and monitoring of the runtime environment. It ensures that the distributed application operates smoothly and adheres to defined policies.
By centralizing these responsibilities, the control plane simplifies the management of distributed applications and enhances their reliability and security.
When adopting DAPR, it is important to consider the cost implications of its components:
The overall cost of the control plane is based on the number of nodes needed to support it. As an estimation, it would need adding 1 extra node to the current environment in the case of the production environment in Spain and 2 extra nodes in the case of the production environment in Brazil. Assuming the cost of each node of the family D4as v4 is around 150 € per month (this is the raw price shown publicly in Microsoft pricing page, without any discounts and for west europe region), the monthly cost for the control plane would be approximately:
Prices in June 2025 1

DAPR is a powerful tool for building distributed applications based on microservices. Its focus on simplicity, portability, and scalability makes it an ideal choice for developers looking to optimize their microservices platforms. Sidecars and the event model are key components that facilitate communication and integration between services, making applications more robust and easier to maintain.