Skip to content

Commit 0331f51

Browse files
author
Gabriel Monroy
committed
initial pass at architecture docs
1 parent b98e4d8 commit 0331f51

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
:title: Deis Architecture
2+
:description: Architecture of the Deis application platform (PaaS)
3+
:keywords: deis, paas, application platform, architecture
4+
5+
.. _architecture:
6+
7+
Architecture
8+
============
9+
10+
Deis consists of 8 modules that combine to create a distributed PaaS.
11+
Each Deis module is deployed as one or more `Docker`_ containers.
12+
13+
.. _controller:
14+
15+
Controller
16+
----------
17+
The controller module is the "brains" of the Deis platform, in charge of:
18+
19+
* Processing client API calls
20+
* Managing nodes that host containers and provide services
21+
* Managing containers that perform work
22+
* Managing proxies that route traffic to containers
23+
* Managing users, providers, flavors, keys and other base configuration
24+
25+
The controller module includes:
26+
27+
* `Django`_ for processing API calls
28+
* `Celery`_ for managing task queues
29+
30+
.. _database:
31+
32+
Database
33+
--------
34+
The database module uses `PostgreSQL`_ to store durable platform state.
35+
36+
.. _cache:
37+
38+
Cache
39+
-----
40+
The cache module uses `Redis`_ to:
41+
42+
* Store work queue data for Celery
43+
* Cache sessions and synchronize locks for Django
44+
* Store recent log data for the :ref:`Controller`
45+
46+
.. _builder:
47+
48+
Builder
49+
-------
50+
The builder module uses a `Git`_ server to process :ref:`Application` builds.
51+
The builder:
52+
53+
#. Receives incoming ``git push`` requests over SSH
54+
#. Authenticates the user via SSH key fingerprint
55+
#. Authorizes the user's access to write to the Git repository
56+
#. Builds a new `Docker` image from the updated git repository
57+
#. Adds the latest :ref:`Config` to the resulting Docker image
58+
#. Pushes the new Docker image to the platform's :ref:`Registry`
59+
#. Creates a new :ref:`Release` on the :ref:`Controller`
60+
61+
Once a new :ref:`Release` is generated, a new set of containers
62+
is deployed across the platform automatically.
63+
64+
.. _registry:
65+
66+
Registry
67+
--------
68+
The registry module hosts `Docker`_ images on behalf of the platform.
69+
Image data is typically stored on a storage service like
70+
`Amazon S3`_ or `OpenStack Storage`_.
71+
72+
.. _logserver:
73+
74+
Log Server
75+
----------
76+
The log server module uses `rsyslog`_ to aggregate log data from
77+
across the platform.
78+
This data can then be queried by the :ref:`Controller`.
79+
80+
.. _runtime:
81+
82+
Runtime
83+
-------
84+
The runtime module uses `Docker`_ to run containers for deployed applications.
85+
86+
.. _proxy:
87+
88+
Proxy
89+
-----
90+
The proxy module uses `Nginx`_ to route traffic to application containers.
91+
92+
.. _`Django`: https://www.djangoproject.com/
93+
.. _`Celery`: http://www.celeryproject.org/
94+
.. _`PostgreSQL`: http://www.postgresql.org/
95+
.. _`Redis`: http://redis.io/
96+
.. _`Git`: http://git-scm.com/
97+
.. _`Docker`: http://docker.io/
98+
.. _`Amazon S3`: http://aws.amazon.com/s3/
99+
.. _`OpenStack Storage`: http://www.openstack.org/software/openstack-storage/
100+
.. _`rsyslog`: http://www.rsyslog.com/
101+
.. _`Nginx`: http://nginx.org/

docs/gettingstarted/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ Getting Started
1111
:maxdepth: 1
1212

1313
concepts
14+
architecture
1415
usage

0 commit comments

Comments
 (0)