Architecture

Overview

The Cloudify Manager contains several open-source components. The relationships between the components in the Cloudify Manager architecture are illustrated in the diagram below.

Cloudify components

Nginx

Nginx is a high-performing web server. In the Cloudify Manager, it serves two purposes:

  1. A proxy for the Cloudify REST service and Cloudify Management Console
  2. A file server to host Cloudify-specific resources, agent packages, and blueprint resources.

File Server

The file server served by Nginx, is available at https://{manager_ip}:53333/resources, which is mapped to the /opt/manager/resources/ directory. You must authenticate in order to access the file server.

To access subdirectories that include tenant names in their path, you must have privileges on that tenant. These subdirectories are:

The directories that are stored in snapshots are:

Gunicorn and Flask

Gunicorn is a web server gateway interface HTTP server. Flask is a web framework.

Together, Gunicorn and Flask provide the Cloudify REST service. The REST service is written using Flask, and Gunicorn is the server. Nginx is the proxy to that server. Cloudify’s REST service is the integrator of all parts of the Cloudify environment.

PostgreSQL

PostgreSQL is an object-relational database that can handle workloads ranging from small single-machine applications to large Internet-facing applications.

In the Cloudify Manager, PostgreSQL serves two purposes:

  1. Provides the main database that stores the application’s model (i.e. blueprints, deployments, runtime properties)
  2. Provides indexing, logs’, and events’ storage

RabbitMQ

RabbitMQ is a queue-based messaging platform.

RabbitMQ is used by Cloudify as a message queue for different purposes:

Pika

Pika is a pure-Python implementation of the AMQP 0-9-1 protocol.

The Cloudify management worker and the host agents are using pika to communicate with RabbitMQ.

Management Worker (or Agent)

Both the Workflow Executor and the Task Broker that appear in the diagram are part of the Cloudify Management Worker.