11# Concepts
22
3- Deis is a lightweight application platform that deploys and scales Twelve-Factor apps as Docker containers across a cluster of Kubernetes minions.
3+ Deis Workflow is a lightweight application platform that deploys and scales
4+ Twelve-Factor apps as containers across a Kubernetes cluster.
45
5- ## Twelve-Factor
6+ ## Twelve-Factor Applications
67
78The [ Twelve-Factor App] [ ] is a methodology for building modern
89applications that can be scaled across a distributed system.
@@ -11,75 +12,130 @@ We consider it an invaluable synthesis of much experience with
1112software-as-a-service apps in the wild, especially on the
1213Heroku platform.
1314
14- Deis is designed to run applications that adhere to [ Twelve-Factor App] [ ]
15+ Workflow is designed to run applications that adhere to the [ Twelve-Factor App] [ ]
1516methodology and best practices.
1617
18+ ## Kubernetes
19+
20+ [ Kubernetes] [ ] is an open-source cluster manager developed by Google and
21+ donated to the [ Cloud Native Compute Foundation] [ cncf ] . Kubernetes manages all
22+ the activity on your cluster, including: desired state convergence, stable
23+ service addresses, health monitoring, service discovery, and DNS resolution.
24+
25+ Workflow builds upon Kubernetes abstractions like Services, Replication
26+ Controllers and Pods to provide a developer-friendly UX, source to image, log
27+ aggregation, etc.
28+
29+ Workflow is shipped as a Kubernetes-native application, installable via
30+ [ Helm] [ helm ] , so operators familiar with Kubernetes will feel right at home
31+ running Workflow.
32+
33+ For a detailed overview of Workflow components, see our [ component] [ components ] break down.
34+
1735## Docker
1836
19- [ Docker] [ ] is an open source project to pack , ship and run any
37+ [ Docker] [ ] is an open source project to build , ship and run any
2038application as a lightweight, portable, self-sufficient container.
2139
22- Deis curates your applications as Docker images, which are then
23- distributed across your cluster as Docker containers.
40+ If you have not yet converted your application to containers, Workflow provides
41+ a simple and straightforward "source to Docker image" capability. Supporting
42+ multiple language runtimes via community [ buildpacks] [ ] , building your application
43+ in a container can be as easy as ` git push deis master ` .
2444
25- (Deis itself is also a set of coordinated Docker containers.)
45+ Applications which are packaged via a buildpack are run in Docker containers as
46+ part of the ` slugrunner ` process. View the [ slugrunner component] [ slugrunner ]
47+ for more information.
48+
49+ Applications which use either a Dockerfile or reference an external Docker
50+ Image are launched unmodified.
2651
2752## Applications
2853
29- Deis is designed around the concept of an [ application] [ ] , or app.
30- Applications live on a cluster where they use [ Containers ] [ ]
31- to service requests.
54+ Workflow is designed around the concept of an [ application] [ ] , or app.
55+
56+ Applications can come in three forms:
3257
33- Developers use applications to push code, change configuration, scale processes,
34- view logs, run admin commands and much more.
58+ 1 . as collection of source files stored in a Git repository
59+ 2 . as a Dockerfile, which describes how to build your app
60+ 3 . a reference to an already built Docker Image, hosted on a remote Docker repository
61+
62+ Applications identified by a unique name for easy reference. If you do not
63+ specify a name when creating your application Workflow generates one for you.
64+ Workflow also tracks other related information for your application including
65+ any domain names, SSL Certificates and developer provided configuration.
3566
3667## Build, Release, Run
3768
3869![ Git Push Workflow] ( ../diagrams/Git_Push_Flow.png )
3970
4071### Build Stage
4172
42- The [ builder] [ ] processes incoming ` git push ` requests and builds applications
43- inside ephemeral Docker containers, resulting in a new Docker image.
73+ The [ builder] [ ] component processes incoming ` git push deis master ` requests
74+ and manages your application packaging.
75+
76+ If your application is using a [ buildpack] [ ] builder will launch an ephemeral
77+ job to extract and execute the packaging instructions. The resulting
78+ application artifact is stored by the platform for execution during the run
79+ stage.
80+
81+ If instead, you provide a [ Dockerfile] [ dockerfile ] builder will use the
82+ instructions you have provided to build a Docker Image. The resulting artifact is
83+ stored in a Deis-managed registry which will be referenced during the run
84+ stage.
85+
86+ If you already have an external system building your application container you
87+ can simply reference that artifact. When using [ external Docker
88+ images] [ dockerimage ] the builder component doesn't attempt to repackage your
89+ app.
4490
4591### Release Stage
4692
47- During the release stage, a [ build] [ ] is combined with [ config ] [ ] to create a new numbered
48- [ release] [ ] . This release is then pushed to a Docker registry for later execution.
49- The release stage is triggered any time a new build is created or config is
50- changed, making it easy to rollback code and configuration changes .
93+ During the release stage, a [ build] [ ] is combined with [ application configuration ] [ config ]
94+ to create a new numbered [ release] [ ] . New releases are created any time a new
95+ build is created or application configuration is changed. Tracking releases
96+ makes it easy to rollback to any previous release .
5197
5298### Run Stage
5399
54- The run stage dispatches containers to a scheduler and updates the router accordingly.
55- The scheduler is in control of placing containers on hosts and balancing them evenly across the cluster.
56- Containers are published to the router once they are healthy. Old containers are only collected
57- after the new containers are live and serving traffic -- providing zero-downtime deploys.
100+ The run stage is responsible for deploying the new release to the underlying
101+ Kubernetes cluster. The run stage launches a new Replication Controller which
102+ references the new release. By managing the desired replica count, Workflow
103+ orchestrates a zero-downtime, rolling update of your application. Once
104+ successfully updated, Workflow removes the last reference to the old release.
105+ Note that during the deploy, your application will be running in a mixed mode.
58106
59107## Backing Services
60108
61- Deis treats databases, caches, storage, messaging systems, and other
62- [ backing services] [ ] as attached resources, in keeping with Twelve-Factor
109+ Workflow treats all persistent services such as databases, caches, storage,
110+ messaging systems, and other [ backing services] [ ] as resources managed
111+ separtely from your application. This philosophy aligns with Twelve-Factor
63112best practices.
64113
65114Applications are attached to backing services using [ environment variables] [ ] .
66- Because applications are decoupled from backing services, apps are free to scale up independently,
67- to swap services provided by other apps, or to switch to external or third-party vendor services.
115+ Because applications are decoupled from backing services, apps are free to
116+ scale up independently, to use services provided by other apps, or to switch
117+ to external or third-party vendor services.
68118
69119## See Also
70120
71121* [ Architecture] ( architecture.md )
72122* [ Twelve-Factor App] [ ]
73123
74-
124+ [ Build and Run ] : http://12factor.net/build-release-run
125+ [ Docker ] : https://www.docker.com/
126+ [ Kubernetes ] : https://kubernetes.io
127+ [ Twelve-Factor App ] : http://12factor.net/
75128[ application ] : ../reference-guide/terms.md#application
129+ [ backing services ] : http://12factor.net/backing-services
76130[ build ] : ../reference-guide/terms.md#build
77131[ builder ] : components.md#builder
132+ [ buildpacks ] : ../using-deis/using-buildpacks.md
133+ [ cncf ] : https://cncf.io/
134+ [ components ] : components.md
78135[ config ] : ../reference-guide/terms.md#config
79- [ containers ] : ../reference-guide/terms.md#container
80- [ Docker ] : http://docker.io/
81- [ Build and Run ] : http://12factor.net/build-release-run
82- [ backing services ] : http://12factor.net/backing-services
136+ [ dockerfile ] : ../using-deis/using-dockerfiles.md
137+ [ dockerimage ] : ../using-deis/using-docker-images.md
83138[ environment variables ] : http://12factor.net/config
139+ [ helm ] : https://helm.sh
84140[ release ] : ../reference-guide/terms.md#release
85- [ Twelve-Factor App ] : http://12factor.net/
141+ [ slugrunner ] : concepts.md#slugrunner
0 commit comments