Π‘Π²ΠΎΠΉ Π±Π»ΠΎΠ³ ΠΌΡ Π½Π°ΡΠ½ΡΠΌ Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΠΌΠΎΡΠΈΠ²Π°ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠ°
31 ΠΌΠ°Ρ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ ΡΠ°Ρ Π½Π°
Continuous Delivery Ρ Docker
ΠΠΎΠ΄ Continuous Delivery ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΉ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π° production, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π°ΡΡ ΠΈΠ². ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ½Π° ΡΠ°ΠΊ: Git β Build (ΡΠ±ΠΎΡΠΊΠ°) β Test (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅) β Release (ΡΠ΅Π»ΠΈΠ·) β Operate (ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅).
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΡΠ°Π΄ΠΈΠΈ build (ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), Π° ΡΠ΅ΠΌΡ release ΠΈ operate Π·Π°ΡΡΠΎΠ½ΡΡΡ ΠΎΠ±Π·ΠΎΡΠ½ΠΎ. Π Π΅ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°Ρ
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΠΈΡ
ΡΠ΅ΡΠΈΡΡ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ
ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ Π·Π΄Π΅ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΡΠΆΠ΅Π½ Docker? ΠΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Continuous Delivery Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠ³ΠΎ Open Source-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. Π₯ΠΎΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ²ΡΡΡΠ½ Π²Π΅ΡΡ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΆΠ΅ ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Π²ΡΠΊΠ°ΡΠ° ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π²ΡΠΊΠ°ΡΠ°
ΠΡΠ°ΠΊ, ΠΏΡΠΈ Π²ΡΠΊΠ°ΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΡ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠ΅Π³ΠΎΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ production-ΡΠ΅ΡΠ²Π΅ΡΠ°. Π’ΡΠ°ΡΠΈΠΊ ΡΠΎ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ: ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΊΠ°ΡΠ΅Π½Π°, Π½ΠΎ ΠΈ Β«ΠΏΡΠΎΠ³ΡΠ΅ΡΠ°Β» (Ρ.Π΅. ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ²Π° ΠΊ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΡΠ°ΡΠ°Ρ ΠΈ Π½ΠΎΠ²Π°Ρ) Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π§ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΎΠ±ΡΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ²: ΡΠ΅ΡΠΈ, ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, IPC ΠΈ Ρ.ΠΏ. Π‘ Docker ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ°Π·Π½ΡΡ
Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠ° (ΡΠ΅ΡΠ²Π΅ΡΠ°/Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ). ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ
ΠΈΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π±Π΅Π· ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π²ΠΎΠ²ΡΠ΅, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠΎ Π΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠ΅Π·ΠΎΠ½ β Π½Π΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΡΡ ΠΈΠΌ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»ΡΡΠΎΠ² ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅. ΠΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ (ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π²Π΅ΡΡΠΈΠΉ) ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π½Π°Π»ΠΈΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ/ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΈ Ρ.ΠΏ., Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΈΡ Π²Π΅ΡΡΠΈΠΉ. Π ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π½ΠΎ ΠΈ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠΎΡΡ ΠΈ Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠΈ (Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°). ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΡΠΎΡΡ Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ, ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΡΡΡ.
ΠΠ±ΠΎΠ±ΡΠΈΠΌ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π²ΡΠΊΠ°ΡΠ° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ Ρ ΡΡΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ²:
- Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
- ΠΠ°ΡΠ΅ΠΌ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΠΊΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Β«ΠΏΡΠΎΠ³ΡΠ΅Π²Π°Π΅ΡΡΡΒ» Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΌΠ° ΡΡΠ° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΡΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π»ΡΠ±ΡΡ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ OpenSSL ΠΈΠ»ΠΈ Π²ΡΠ΅Π³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°).
- ΠΠΎΠ³Π΄Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ²Π° ΠΊ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΡΠ°ΡΠΈΠΊ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° Π²ΡΠΎΡΠΎΠΉ.
- Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ Π΄Π°ΡΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ β Π±ΡΡΡΡΡΠΉ ΠΎΡΠΊΠ°Ρ Π½Π° ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ (Π²Π΅Π΄Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠ°ΡΠΈΠΊ Π½Π° Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ).
ΠΡΠΎΠ³ΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π·Π²ΡΡΠΈΡ ΡΠ°ΠΊ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΠ°ΠΏΠΈΡΠ°Π½Ρ Π½Π΅ ΠΏΡΠΈΠ΄ΡΠ°ΡΡΡΡ: Β«[ΠΏΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Continuous Delivery Ρ Docker] ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Docker [ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π΄Π°ΡΡ]Β». ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Β«ΡΠ΅ΡΠ΅Π±ΡΡΠ½Π°Ρ ΠΏΡΠ»ΡΒ», ΡΠ΅ΡΠ°ΡΡΠ°Ρ Π»ΡΠ±ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°ΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½Ρ.
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ
ΠΠΎΠ΄ Β«Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡΒ» ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Π΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ :
- Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π½Π° staging, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π² production.
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΡΠ°Π·Π½ΡΡ Π·Π΅ΡΠΊΠ°Π» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² (ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ, Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ β ΠΈ Π²Π΅ΡΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
- Β«Π£ ΠΌΠ΅Π½Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!Β» (β¦ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° production Π½Π΅ ΠΏΡΡΠΊΠ°ΡΡ.)
- Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠ°ΡΠΎΠΉ (Π°ΡΡ ΠΈΠ²Π½ΠΎΠΉ) Π²Π΅ΡΡΠΈΠΈ.
- β¦
ΠΠ±ΡΠ°Ρ ΠΈΡ ΡΡΡΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ (Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠΎΡΠ°). ΠΠ°ΠΊ ΠΆΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ? ΠΠ΅Π»Π°ΡΡ Docker-ΠΎΠ±ΡΠ°Π·Ρ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π° ΠΈΠ· Git, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ Π»ΡΠ±ΡΡ Π·Π°Π΄Π°Ρ: Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ°Ρ , Π² production, Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²β¦ ΠΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·Π°: ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ β ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° β ΡΡΠΎ ΠΊΠΎΠ΄
ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ (Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΠ, Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠΈ ΠΈ Ρ.ΠΏ.) Π½Π΅ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π½Π΅ Β«ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡΒ», ΡΠΎ Π²ΡΠΊΠ°Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡΡ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° staging Π²Ρ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° PHP 7.0 ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ β ΡΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° production Ρ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ°ΡΡΠΌ PHP (5.5) Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠ΄ΠΈΠ²ΠΈΡ. ΠΡΡΡΡ ΠΏΡΠΎ ΠΊΡΡΠΏΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π²Ρ Π½Π΅ Π·Π°Π±ΡΠ΄Π΅ΡΠ΅, Π½ΠΎ Β«Π΄ΡΡΠ²ΠΎΠ» ΠΊΡΠΎΠ΅ΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ Β»: ΡΡΡΠΏΡΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π² ΠΌΠΈΠ½ΠΎΡΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
Π Π΅ΡΠ°ΡΡΠΈΠΉ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ IaC (Infrastructure as Code, Β«ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΠΊ ΠΊΠΎΠ΄Β») ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ DevOps-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π½Π°Π΄ ΡΠ°Π·Π½ΡΠΌΠΈ Π΅Π³ΠΎ ΡΠ°ΡΡΡΠΌΠΈ. ΠΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Git ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ°Π· Docker, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π²ΡΡΠ½ΡΡΠΎ Ρ ΡΡΡΡΠΎΠΌ Π²ΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠΊΡΠΈΠΏΡΡ (ΠΏΡΠ°Π²ΠΈΠ»Π°) ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π»Π΅ΠΆΠ°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π²ΠΌΠ΅ΡΡΠ΅ ΠΌΠ΅ΡΠΆΠΈΡΡΡΡ.
Π ΡΠ»ΡΡΠ°Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ nginx, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠΆΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, β ΠΎΠ±ΡΠ°Π·Ρ Docker Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΈΠ· ΠΊΠΎΠ΄Π° Π² Git Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΠΎΡ. Π’ΠΎΠ³Π΄Π° Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°Π·Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Β«Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌΠΈΒ» Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΉ nginx.
Docker-ΠΎΠ±ΡΠ°Π·Ρ, ΡΠ²ΡΠ·Ρ Ρ Git
ΠΡΠ΅ Docker-ΠΎΠ±ΡΠ°Π·Ρ, ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠ· Git, ΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΠ΅Π»ΠΈΠ·Π½ΡΠ΅. ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΡΠ΅Π³ΠΈΡΡΡΡΡΡ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π΅ΡΠΊΠΈ Π² Git, ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ ΠΈ Π²ΡΠΊΠ°ΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° (Π½Π΅ Π΄Π»Ρ production). Π ΡΡΠΎΠΌ ΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ΅Π»ΠΈΠ·Π½ΡΡ : Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ Π² Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ.
ΠΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ: Π²Π΅ΡΠΊΡ master (ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΊΠ°ΡΡΠ²Π°ΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ master), Π²Π΅ΡΠΊΠΈ Ρ ΡΠ΅Π»ΠΈΠ·Π°ΠΌΠΈ, Π²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π² production, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π²ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΡΠ΅Π³. ΠΠΎ ΡΠ΅Π³Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅Π»ΠΈΠ·Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· (Π΅Π³ΠΎ ΡΠ΅Π³Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅Π³ ΠΈΠ· Git) ΠΈ Π²ΡΠΊΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π½Π° staging. Π ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΠ΄Π΅Π»ΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° production.
dapp
ΠΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ (Π²ΡΠΊΠ°Ρ, ΡΠ±ΠΎΡΠΊΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Bash-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ Β«ΠΏΠΎΠ΄ΡΡΡΠ½ΡΡ Β» ΡΡΠ΅Π΄ΡΡΠ². ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ, ΡΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΡΡΠΈ. ΠΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΎ, ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Workflow-ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ CI/CD β dapp.
ΠΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Ruby, ΠΎΡΠΊΡΡΡ ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π½Π°
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ 13 Π°Π²Π³ΡΡΡΠ° 2019 Π³.: Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡ dapp ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π²
Kubernetes
ΠΡΡΠ³ΠΎΠΉ Π³ΠΎΡΠΎΠ²ΡΠΉ Open Source-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ·Π½Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, β ΡΡΠΎ Kubernetes, ΠΊΠ»Π°ΡΡΠ΅Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Docker. Π’Π΅ΠΌΠ° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ Π½Π° Docker, Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΎΠ±Π·ΠΎΡΠΎΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠ»Ρ Π²ΡΠΊΠ°ΡΠ° Kubernetes ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ:
- readiness probe β ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π½Π΅Ρ);
- rolling update β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ Π·Π°ΠΏΡΡΠΊΡ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°);
- synchronous update β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ: ΡΠ½Π°ΡΠ°Π»Π° Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π·Π°ΡΠ΅ΠΌ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ;
- canary releases β Π·Π°ΠΏΡΡΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΌ (Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ) ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Continuous Delivery β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Π² Kubernetes Π΅ΡΡΡ ΡΡΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ: Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Ρ. ΠΡΡ ΡΡΠΎ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π² Π²Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ.
ΠΡΠΎΠ³ΠΎΠ²ΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Docker.
- ΠΠ΅Π»Π°ΠΉΡΠ΅ Docker-ΠΎΠ±ΡΠ°Π·Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ.
- Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Β«ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° β ΡΡΠΎ ΠΊΠΎΠ΄Β».
- Π‘Π²ΡΠΆΠΈΡΠ΅ Git Ρ Docker.
- Π Π΅Π³Π»Π°ΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΊΠ°ΡΠ°.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ (Kubernetes ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΡΡ).
ΠΠΈΠ΄Π΅ΠΎ ΠΈ ΡΠ»Π°ΠΉΠ΄Ρ
ΠΠΈΠ΄Π΅ΠΎ Ρ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ (ΠΎΠΊΠΎΠ»ΠΎ ΡΠ°ΡΠ°)
ΠΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°:
P.S.
ΠΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
werf β Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ CI/CD Π² Kubernetes (ΠΎΠ±Π·ΠΎΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°) Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 27 ΠΌΠ°Ρ 2019 Π½Π° DevOpsConf); - Β«
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Kubernetes Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 8 Π½ΠΎΡΠ±ΡΡ 2018 Π½Π° HighLoad++); - Β«
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ CI/CD Ρ Kubernetes ΠΈ GitLab Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 7 Π½ΠΎΡΠ±ΡΡ 2017 Π½Π° HighLoad++); - Β«
ΠΠ°Ρ ΠΎΠΏΡΡ Ρ Kubernetes Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Β» (ΠΠΌΠΈΡΡΠΈΠΉ Π‘ΡΠΎΠ»ΡΡΠΎΠ²; 6 ΠΈΡΠ½Ρ 2017 Π½Π° RootConf).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com