Chapter 4. Understanding Nova
Nova seeks to provide a framework for the large-scale provisioning and management of virtual compute instances. Similar in functionality and scope to Amazon’s EC2 service, it allows you to create, manage, and destroy virtual servers based on your own system images through a programmable API.
Nova Architecture
Nova is architected as a distributed application with many components, but the majority of these are custom-written Python daemons of two varieties:
Web Server Gateway Interface (WSGI)[2] applications to receive and mediate API calls
Worker daemons to carry out orchestration tasks
However, there are two essential pieces of the architecture that are neither custom written nor Python-based: the messaging queue and the database. These two components facilitate the asynchronous orchestration of complex tasks through message passing and information sharing. Piecing this all together we get a picture like Figure 4-1.

Figure 4-1. Nova Logical Architecture
This complicated diagram can be summed up in three sentences:
End users who want to use Nova to create compute instances call nova-api with OpenStack API or EC2 API requests.
Nova daemons exchange information through the queue (actions) and database (information) to carry out these API requests.
Glance is a completely separate service that Nova interfaces through the Glance API to provide virtual disk imaging services. ...