15 Factor Applications Flashcards

(34 cards)

1
Q

I. Codebase (1/15)

A

I. Codebase (1/15)
One codebase tracked in revision control, many deploys

Each codebase belongs to one application and the codebase is the same across all execution environments (development, staging, production, etc), although they can be running on different versions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

II. Dependency Management (3/15)

A

II. Dependency Management (3/15)
Explicitly declare and isolate dependencies.

You should use a dependency management system, and isolate your application dependencies. This gives you the certainty that your application is always being run with the same dependencies, no matter the environment in which it is running.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

III. Configuration, credentials, and code (5/15)

A

III. Configuration, credentials, and code (5/15)
Store config in the environment.

All configuration and credentials are stored as environment variables. This removes any vulnerability that could come from exposing sensitive credentials in your code and also allows you to control all configuration from the command line, making it possible to automate deploys.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

IV. Backing services (8/15)

A

IV. Backing services (8/15)
Treat backing services as attached resources.

All backing services are treated as bound resources. Each service declares the services that it utilizes and the connections between the service and the resources are done by external configurations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

V. Design, Build, release, run (4/15)

A

V. Design, Build, release, run (4/15)

Strictly separate build and run stages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

VI. Stateless Processes (12/15)

A

VI. Stateless Processes (12/15)
Execute the app as one or more stateless processes

Given that processes can disappear at any moment (once again due to the transient nature of instances), all processes should be stateless. All long-term storage of data should happen on external services. Also, all processes that need to communicate with each other need to do so through external services.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

VII. Port binding (7/11)

A

VII. Port binding (7/11)
Export services via port binding.

Applications should always expose their services through port binding, and there should always be a 1:1 relation between applications and app servers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

VIII. Concurrency (13/15)

A

VIII. Concurrency (13/15)
Scale out via the process model.

Applications need to be able to scale horizontally, so there might be more than one instance of the service running at a time.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

IX. Disposability (7/15)

A

IX. Disposability (7/15)
Maximize robustness with fast startup and graceful shutdown

All instances running services must be able to initiate execution quickly and stop gracefully, as they can be started or killed at any moment (either by some external issue or due to changes in demand).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

X. Environment parity (9/15)

A

X. Environment parity (9/15)
Keep development, staging, and production as similar as possible.

The application should at all times work on all environments ( staging, production, etc ) and environments should be as similar as possible. The services should use the same types of resources across all environments. This reduces the time between code check-in and production deploy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

XI. Logs (6/15)

A

XI. Logs (6/15)
Treat logs as event streams.

Logs should be output to stdout and stderr and you should use some external tool for handling logs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

XII. Admin processes (10/15)

A

XII. Admin processes (10/15)
Run admin/management tasks as one-off processes.

These should run as one-off processes, in an environment identical to the one in which the application is running.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Given that _________ can disappear at any moment (once again due to the transient nature of instances), all should include this Factor. All long-term storage of data should happen on external services. Also, all _________ that need to communicate with each other need to do so through external services.

Which Factor does this represent?

A

VI. Stateless Processes (12/15)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

All instances running services must be able to initiate execution quickly and stop gracefully, as they can be started or killed at any moment (either by some external issue or due to changes in demand).

Which Factor does this represent?

A

IX. Disposablility (7/15)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Applications should always expose their services through this factor, and there should always be a 1:1 relation between applications and app servers.

Which Factor does this represent?

A

VII. Port Binding (11/15)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

this Factor will be consumed by other clients and services. Therefore, this Factor is the most important interface for your service and should be well documented.

Which Factor does this represent?

A
  1. API First (2/15)
17
Q

You should use a management system for this Factor, and isolate your application ____________. This gives you the certainty that your application is always being run with the same ____________, no matter the environment in which it is running.

Which Factor does this represent?

A

II. Dependency Management (3/15)

18
Q

These states are strictly separated from each other.

Which Factor does this represent?

A

V. Design, build, release, run (4/15)

19
Q

All _____________ and ___________ are stored as environment variables. This removes any vulnerability that could come from exposing sensitive ____________ in your ____ and also allows you to control all configuration from the command line, making it possible to automate deploys.

Which Factor does this represent?

A

III. Configuration, credentials, and code (5/15)

20
Q

____ should be output to stdout and stderr and you should use some external tool for handling ____.

Which Factor does this represent?

A

XI. Logs (6/15)

21
Q

The application should at all times work on all ____________ ( staging, production, etc ) and ____________ should be as similar as possible. The services should use the same types of resources across all ____________. This reduces the time between code check-in and production deploy.

Which Factor does this represent?

A

X. Environment parity (9/15)

22
Q

These should run as one-off _________, in an environment identical to the one in which the application is running.

Which Factor does this represent?

A

XII. Admin processes (10/15)

23
Q

All of these are treated as bound resources. Each declares the services that it utilizes and the connections between the service and the resources are done by external configurations.

Which Factor does this represent?

A

IV. Backing services (8/15)

24
Q

Applications need to be able to scale horizontally, so there might be more than one instance of the service running at a time.

Which Factor does this represent?

A

VIII. Concurrency (13/15)

25
Each _________ belongs to one application and the ________ is the same across all execution environments (development, staging, production, etc), although they can be running on different versions. Which Factor does this represent?
I. Codebase (1/15)
26
This is due to the need for monitoring your applications even though they are not physically near you, as they are running on the cloud, on ephemeral instances. Which Factor does this represent?
14. Telemetry (14/15)
27
Authentication and authorization (15/15)
15. Authentication and authorization (15/15) This might seem obvious, but it is here as a reminder, given that each service and each part of your application need to have authentication and authorization concerns.
28
Given that each service and each part of your application need to have ______________ and _____________ concerns. Which Factor does this represent?
15. Authentication and authorization (15/15)
29
How many "A" Factor(s) are there, and what are they?
3 "A" Factors: 1. API First 2. Authentication and Authorization 3. Admin Processes
30
How many "B" Factor(s) are there, and what are they?
1 "B" Factor: | 1. Backing Services
31
How many "C" Factor(s) are there, and what are they?
3 "C" Factors: 1. Codebase 2. Concurrency 3. Configuration, Credentials and Code
32
How many "D" Factor(s) are there, and what are they?
3 "D" Factors: 1. Design, Build, Deploy, Run 2. Dependency Mgmt 3. Disposability
33
How many Factor(s) are there after "D", and what are they?
``` 5 Remaining Factors: (E.L.P.S.T., "SPELT" or "PELTS") E. Environmental Parity L. Logs P. Port Binding S. Stateless Processes T. Telemetry ```
34
Mnemonic for remember all 15 Factors?
``` 3 "A" "B" 3 "C" 3 "D" "P.E.L.T.S.", "S.P.E.L.T.", or "E.L.P.S.T" ```