> Markdown version of [Architecture](https://vaadin.com/docs/v25/building-apps/architecture). Section index: [llms.txt](https://vaadin.com/docs/v25/building-apps/llms.txt)

# Architecture Deep Dive

> **Important: Deep Dive - Recommended Approach**
>
> This **opinionated** deep-dive explains core concepts (for example, architectural layers and monoliths) and gives a practical, recommended way to architect Vaadin applications. If you’re new, this is a good place to start; if you’re experienced, feel free to use whatever patterns work for you.

If you’re evaluating Vaadin, start with [When to Use Vaadin](https://vaadin.com/docs/v25/building-apps/architecture/when-to-use-vaadin.md). It describes where Vaadin fits, what its server-side approach costs, and where another tool fits better. Then read [How a Vaadin Application Works](https://vaadin.com/docs/v25/building-apps/architecture/runtime-model.md). It explains where a Vaadin application keeps its UI state, and the consequences for latency, threading, and deployment that the other articles build on. [Measure Capacity and Test Failover](https://vaadin.com/docs/v25/building-apps/architecture/capacity-and-failover.md) shows how to measure what your views cost in memory and latency, and what users experience when a server stops, before you decide how to deploy. [Licensing, Support & Maintenance](https://vaadin.com/docs/v25/building-apps/architecture/licensing-and-maintenance.md) shows which features are free and which need a commercial subscription, and how Vaadin versions are maintained.

- [When to Use Vaadin](https://vaadin.com/docs/v25/building-apps/architecture/when-to-use-vaadin.md): Where Vaadin fits, what its server-side approach costs, how far it scales, and where another tool fits better.
- [Runtime Model](https://vaadin.com/docs/v25/building-apps/architecture/runtime-model.md): Where UI state lives, what happens on each interaction, and what that means for the design and deployment of a Vaadin application.
- [Conceptual Layers](https://vaadin.com/docs/v25/building-apps/architecture/layers.md): Introduces the UI layer and the application layer in Vaadin apps.
- [Monoliths](https://vaadin.com/docs/v25/building-apps/architecture/monoliths.md): Essential concepts, as well as advantages and disadvantages of developing and using monolithic applications.
- [Microservices](https://vaadin.com/docs/v25/building-apps/architecture/microservices.md): How Vaadin fits into microservice-based systems.
- [Capacity & Failover](https://vaadin.com/docs/v25/building-apps/architecture/capacity-and-failover.md): How to measure what a session costs in memory and latency, and what users experience when a server stops.
- [APIs and SPIs](https://vaadin.com/docs/v25/building-apps/architecture/api-spi.md): The use of Application Programming Interfaces and Service Provider Interfaces in Vaadin applications.
- [Package Structure](https://vaadin.com/docs/v25/building-apps/architecture/packages.md): Different ways of structuring the Java packages in Vaadin projects.
- [Project Structure](https://vaadin.com/docs/v25/building-apps/architecture/project-structure.md): The basics of structuring and packaging Vaadin projects.
- [Licensing & Maintenance](https://vaadin.com/docs/v25/building-apps/architecture/licensing-and-maintenance.md): Which parts of Vaadin are free and open source, how to recognize commercial features, and what it takes to keep an application on a maintained version.
