> Markdown version of [Architecture](https://vaadin.com/docs/next/building-apps/architecture). Section index: [llms.txt](https://vaadin.com/docs/next/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.

Start with [How a Vaadin Application Works](https://vaadin.com/docs/next/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.

- [Runtime Model](https://vaadin.com/docs/next/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/next/building-apps/architecture/layers.md): Introduces the UI layer and the application layer in Vaadin apps.
- [Monoliths](https://vaadin.com/docs/next/building-apps/architecture/monoliths.md): Essential concepts, as well as advantages and disadvantages of developing and using monolithic applications.
- [Microservices](https://vaadin.com/docs/next/building-apps/architecture/microservices.md): How Vaadin fits into microservice-based systems.
- [APIs and SPIs](https://vaadin.com/docs/next/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/next/building-apps/architecture/packages.md): Different ways of structuring the Java packages in Vaadin projects.
- [Project Structure](https://vaadin.com/docs/next/building-apps/architecture/project-structure.md): The basics of structuring and packaging Vaadin projects.
