вторник, 2 июля 2019 г.

12-factor application methodology

1. There should be a one-to-one association between a versioned codebase (for example,
an IT repository) and a deployed service. The same codebase is used for many
deployments.

2. Services should explicitly declare all dependencies, and should not rely on the presence
of system-level tools or libraries.

3. Configuration that varies between deployment environments should be stored in the
environment (specifically in environment variables).

4. All backing services are treated as attached resources, which are managed (attached and
detached) by the execution environment.

5. The delivery pipeline should have strictly separate stages: Build, release, and run.

6. Applications should be deployed as one or more stateless processes. Specifically,
transient processes must be stateless and share nothing. Persisted data should be stored
in an appropriate backing service.

7. Self-contained services should make themselves available to other services by listening
on a specified port.

8. Concurrency is achieved by scaling individual processes (horizontal scaling).

9. Processes must be disposable: Fast startup and graceful shutdown behaviors lead to a
more robust and resilient system.

10.All environments, from local development to production, should be as similar as possible.

11.Applications should produce logs as event streams (for example, writing to stdout and
stderr), and trust the execution environment to aggregate streams.

12.If admin tasks are needed, they should be kept in source control and packaged alongside
the application to ensure that it is run with the same environment as the application.

More at https://12factor.net/ru/.

The eight fallacies of distributed computing

Distributed computing is a concept with roots that stretch back decades. The eight fallacies of
distributed computing were drafted in 1994, and deserve a mention:

1. The network is reliable.
2. Latency is zero.
3. Bandwidth is infinite.
4. The network is secure.
5. Topology doesn’t change.
6. There is one administrator.
7. Transport cost is zero.
8. The network is homogeneous.

See Fallacies of Distributed Computing
Explained, available at: http://www.rgoarchitects.com/Files/fallacies.pdf