---
title: Microsoft Azure project development lifecycle
related:
  - https://docs.kentico.com/k81/running-kentico-on-microsoft-azure/developing-azure-projects-locally.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

When you develop projects on Microsoft Azure, in typical cases you want to begin with a small size of the project, which uses the least resources possible. Then, as your project grows, you configure your project to utilize more resources to accommodate the performance and size requirements of the project. This topic presents main **levels of development** on Microsoft Azure and provides links to related configuration tasks, which you need to perform when ascending to a higher level.

### Level 0 - Local development

You can choose to begin developing your Azure project locally in an emulator before deploying it to the cloud environment. In this case, set up a database and Azure Storage service and configure the web role's settings. See [Developing Azure projects locally](https://docs.kentico.com/k81/running-kentico-on-microsoft-azure/developing-azure-projects-locally.md).

### Level 1 - Development

For the duration of project development, **one instance** of CMSApp web role is usually enough. To configure a project to use one web role instance, perform the [basic configuration](https://docs.kentico.com/k81/running-kentico-on-microsoft-azure/configuring-an-azure-project.md#basic-configuration) tasks.

### Level 2 - Production with SLA

When you deploy your project and switch to the production environment, you may want to qualify for [Microsoft SLA](http://www.windowsazure.com/en-us/support/legal/sla/). In such case, your project must use at least **two instances** of the CMSApp web role. When you increase the number of used web role instances, you need to adjust your project to synchronize the data between the instances and to store session state information.

For data synchronization, you can use the default **web farm synchronization** tasks, in which case you do not need to configure anything.

For storing session state information, you can use **Microsoft Azure SQL Database** – see [Storing session state information in Azure SQL Database](https://docs.kentico.com/k81/running-kentico-on-microsoft-azure/configuring-an-azure-project.md#storing-session-state-information-in-azure-sql-database).

### Level 3 - Performance

When the performance of the level 2 environment is not sufficient, you can configure the **Azure Cache Service** to store session state information – see [Storing session state information in Azure Cache Service](https://docs.kentico.com/k81/running-kentico-on-microsoft-azure/configuring-an-azure-project.md#storing-session-state-information-in-azure-cache-service).

### Level 4 - Scalability

When you need even more power, you can further scale your project using the following approaches:

- Utilize larger cloud services
- Use more web role instances
- Configure autoscaling
