github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/docs/understanding_deis/concepts.rst (about)

     1  :title: Concepts
     2  :description: Deis scales Twelve-Factor apps as containers over a cluster of machines.
     3  
     4  .. _concepts:
     5  
     6  Concepts
     7  ========
     8  Deis is a lightweight application platform that deploys and scales
     9  :ref:`concepts_twelve_factor` apps as :ref:`concepts_docker` containers
    10  across a cluster of :ref:`concepts_coreos` machines.
    11  
    12  .. _concepts_twelve_factor:
    13  
    14  Twelve-Factor
    15  -------------
    16  The `Twelve-Factor App`_ is a methodology for building modern
    17  applications that can be scaled across a distributed system.
    18  
    19  We consider it an invaluable synthesis of much experience with
    20  software-as-a-service apps in the wild, especially on the
    21  Heroku platform.
    22  
    23  Deis is designed to run applications that adhere to `Twelve-Factor App`_
    24  methodology and best practices.
    25  
    26  .. _concepts_docker:
    27  
    28  Docker
    29  ------
    30  `Docker`_ is an open source project to pack, ship and run any
    31  application as a lightweight, portable, self-sufficient container.
    32  
    33  Deis curates your applications as Docker images, which are then
    34  distributed across your cluster as Docker containers.
    35  
    36  (Deis itself is also a set of coordinated Docker containers.)
    37  
    38  .. _concepts_coreos:
    39  
    40  CoreOS
    41  ------
    42  `CoreOS`_ is a new, minimal Linux distribution, rearchitected for
    43  running modern, containerized infrastructure stacks.
    44  
    45  Deis runs on CoreOS machines that can be hosted anywhere -- public cloud,
    46  private cloud, bare metal or even your workstation.
    47  
    48  CoreOS allows Deis to host applications and services at scale with
    49  high resilience, in a way that is simple to operate.
    50  
    51  .. _concepts_applications:
    52  
    53  Applications
    54  ------------
    55  Deis is designed around the concept of an :ref:`application`, or app.
    56  Applications live on a cluster where they use :ref:`Containers <container>`
    57  to service requests.
    58  
    59  Developers use applications to push code, change configuration, scale processes,
    60  view logs, run admin commands and much more.
    61  
    62  .. _concepts_build_release_run:
    63  
    64  Build, Release, Run
    65  -------------------
    66  
    67  .. image:: DeisGitPushWorkflow.png
    68      :alt: Deis Git Push Workflow
    69  
    70  Build Stage
    71  ^^^^^^^^^^^
    72  The :ref:`builder` processes incoming ``git push`` requests and builds applications
    73  inside ephemeral Docker containers, resulting in a new Docker image.
    74  
    75  Release Stage
    76  ^^^^^^^^^^^^^
    77  During the release stage, a :ref:`build` is combined with :ref:`config` to create a new numbered
    78  :ref:`release`. This release is then pushed to a Docker registry for later execution.
    79  The release stage is triggered any time a new build is created or config is
    80  changed, making it easy to rollback code and configuration changes.
    81  
    82  Run Stage
    83  ^^^^^^^^^
    84  The run stage dispatches containers to a scheduler and updates the router accordingly.
    85  The scheduler is in control of placing containers on hosts and balancing them evenly across the cluster.
    86  Containers are published to the router once they are healthy.  Old containers are only collected
    87  after the new containers are live and serving traffic -- providing zero-downtime deploys.
    88  
    89  .. _concepts_backing_services:
    90  
    91  Backing Services
    92  ----------------
    93  Deis treats databases, caches, storage, messaging systems, and other
    94  `backing services`_ as attached resources, in keeping with Twelve-Factor
    95  best practices.
    96  
    97  Applications are attached to backing services using `environment variables`_.
    98  Because applications are decoupled from backing services, apps are free to scale up independently,
    99  to swap services provided by other apps, or to switch to external or third-party vendor services.
   100  
   101  See Also
   102  --------
   103  * :ref:`Architecture`
   104  * :ref:`Using Deis <using_deis>`
   105  * :ref:`Managing Deis <managing_deis>`
   106  * `Twelve-Factor App`_
   107  
   108  
   109  .. _`Twelve-Factor App`: http://12factor.net/
   110  .. _`Docker`: http://docker.io/
   111  .. _`CoreOS`: https://coreos.com/
   112  .. _`Build and Run`: http://12factor.net/build-release-run
   113  .. _`backing services`: http://12factor.net/backing-services
   114  .. _`environment variables`: http://12factor.net/config