π§± ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 12 ΡΠ°ΠΊΡΠΎΡΠΎΠ²: ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
12-Factor App β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΌΠΈ, ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌΠΈ ΠΊ ΡΠ±ΠΎΡΠΌ ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π΅ΠΌΡΠΌΠΈ. ΠΠΎΡ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· 12 ΡΠ°ΠΊΡΠΎΡΠΎΠ².
1. 𧬠ΠΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° (Codebase)
ΠΠ΄Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ Π±Π°Π·Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Git), ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΉ β staging, production ΠΈ Ρ. Π΄.
2. π¦ ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Dependencies)
ΠΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½Ρ (Π² package.json
, requirements.txt
ΠΈ Ρ. Π΄.) ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ.
3. βοΈ ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Config)
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (ΠΏΠ°ΡΠΎΠ»ΠΈ, API-ΠΊΠ»ΡΡΠΈ, Π°Π΄ΡΠ΅ΡΠ° ΠΠ) Π΄ΠΎΠ»ΠΆΠ½Π° Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π² ΠΊΠΎΠ΄Π΅.
4. π Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ (Backing Services)
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠ΅ΡΠΈ, ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ β ΡΡΠΎ ΡΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
5. π οΈ Π‘Π±ΠΎΡΠΊΠ°, ΡΠ΅Π»ΠΈΠ·, Π·Π°ΠΏΡΡΠΊ (Build, Release, Run)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎ:
-
Π‘Π±ΠΎΡΠΊΠ° β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
-
Π Π΅Π»ΠΈΠ· β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
-
ΠΠ°ΠΏΡΡΠΊ β Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
6. π§Ό ΠΡΠΎΡΠ΅ΡΡΡ (Processes)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΡΡΠ°Ρeless-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠ΅Π»ΡΠ·Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
7. π ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΏΠΎΡΡΠΎΠ² (Port Binding)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ) ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
8. π§΅ ΠΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ (Concurrency)
Π Π°Π·Π΄Π΅Π»ΡΠΉ Π·Π°Π΄Π°ΡΠΈ: Π·Π°ΠΏΡΡΠΊΠ°ΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ, ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΈ Ρ. Π΄.
9. π Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ ΡΠ±ΠΎΡΠΌ (Disposability)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ, Π±ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΊ ΡΠ΅ΡΡΠ°ΡΡΠ°ΠΌ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
10. βοΈ Dev/Prod Parity
Π‘ΡΠ°ΡΠ°ΠΉΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π° β ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π±Π°Π³ΠΈ.
11. π ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Logs)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π»ΠΎΠ³Π°ΠΌΠΈ. ΠΠ½ΠΎ ΠΏΠΈΡΠ΅Ρ Π²ΡΡ Π² stdout, Π° ΡΠΆΠ΅ Ρ ΠΎΡΡΠΈΠ½Π³-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΎΠΌ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ.
12. π§ͺ ΠΠ΄ΠΌΠΈΠ½-ΠΏΡΠΎΡΠ΅ΡΡΡ (Admin Processes)
ΠΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΠΎΡΠ»Π°Π΄ΠΊΠ°) Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
π ΠΡΠ²ΠΎΠ΄
ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ 12 ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅:
-
Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡΡ,
-
ΡΡΡΠΎΠΉΡΠΈΠ²Ρ ΠΊ ΡΠ±ΠΎΡΠΌ,
-
Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
π‘ Π₯ΠΎΡΠ΅ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Π½Π°ΡΠ½ΠΈ Ρ ΡΡΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ².
No Comments