ΠΡΒ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΠΈ DevOps ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π»ΠΈ. ΠΠ°Ρ Π±ΡΠ»ΠΎ 8Β ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΈΒ ΠΠ°ΡΡ Π±ΡΠ» ΡΠ°ΠΌΡΠΌ ΠΊΡΡΡΡΠΌ ΠΏΠΎΒ Windows. ΠΠ½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΠ°ΡΡ ΡΡΠ΅Π», Π°Β ΡΒ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π·Π°Π΄Π°ΡΠ° Π²ΡΠ²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Windows-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎΠ³Π΄Π° ΡΒ Π²ΡΡΡΠΏΠ°Π» Π½Π°Β ΡΡΠΎΠ» Π²Π΅ΡΡ ΡΡΠ΅ΠΊ Windows-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠΎΒ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡΒ β Π±ΠΎΠ»Ρβ¦
Π’Π°ΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ° Π‘ΠΈΠ½ΡΠΈΠ½ΠΎΠ²Π° Π½Π°
ΠΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΈΒ Π½Π΅ΠΏΡΠΈΠ½ΡΠΆΠ΄Π΅Π½Π½ΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π²Β RPM, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ TFS, Puppet, Linux .NET core? ΠΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β ΠΠ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ»ΡΡΠΈΡ ΡΠ»ΠΎΠ²Π° Postgres ΠΈΒ Flyway, Π°Β Π΄Π΅Π΄Π»Π°ΠΉΠ½ ΠΏΠΎΡΠ»Π΅Π·Π°Π²ΡΡΠ°? ΠΠ°ΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΒ Docker? ΠΠ°ΠΊ ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ .NET-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΒ Windows ΠΈΒ ΡΠΌΡΠ·ΠΈ Π²Β ΠΏΠΎΠ»ΡΠ·Ρ Puppet ΠΈΒ Linux? ΠΠ°ΠΊ ΡΠ΅ΡΠ°ΡΡ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ Windows Π²Β ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ Π½Π΅Ρ Π½ΠΈΒ ΡΠΈΠ», Π½ΠΈΒ ΠΆΠ΅Π»Π°Π½ΠΈΡ, Π½ΠΈΒ ΡΠ΅ΡΡΡΡΠΎΠ²? ΠΠ±Β ΡΡΠΎΠΌ, Π°Β ΡΠ°ΠΊΠΆΠ΅ ΠΎΒ Web Deploy, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, CI, ΠΎΒ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ TFS Π²Β ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΒ ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΡ
ΠΊΠΎΡΡΡΠ»ΡΡ
ΠΈΒ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΡΡ
, Π²Β ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ°.
ΠΡΠ°ΠΊ, ΠΠ°ΡΡ ΡΡΠ΅Π», Π·Π°Π΄Π°ΡΠ° Π½Π°Β ΠΌΠ½Π΅, Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΡ ΠΆΠ΄ΡΡ ΡΒ Π²ΠΈΠ»Π°ΠΌΠΈ ΡΒ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ³Π΄Π° ΡΒ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π», ΡΡΠΎ ΠΠ°ΡΡ Π½Π΅Β Π²Π΅ΡΠ½ΡΡΡΒ β ΠΏΡΠΈΡΡΡΠΏΠΈΠ» ΠΊΒ Π΄Π΅Π»Ρ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΡΠ΅Π½ΠΈΠ» ΠΏΡΠΎΡΠ΅Π½Ρ Win VMΒ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΠ°ΡΠΊΠ΅. Π‘ΡΡΡ Π±ΡΠ» Π½Π΅Β Π²Β ΠΏΠΎΠ»ΡΠ·Ρ Windows.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡΒ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌ DevOps, ΡΒ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΠΌΠ΅Π½ΡΡΡ Π²Β ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅ Π²ΡΠ½ΠΎΡΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΒ β ΠΏΠΎΒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π²ΡΠ΅ Π½Π°Β Linux. Google ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΠ³Β β Π½Π°Β ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π±ΡΠ» ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ .Net ΠΏΠΎΠ΄ Linux, ΠΈΒ ΡΒ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅!
ΠΠΎΡΠ΅ΠΌΡ .NET core Π²Β ΡΠ²ΡΠ·ΠΊΠ΅ ΡΒ Linux?
ΠΠ°Β ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½. ΠΠ΅ΠΆΠ΄Ρ Β«ΠΏΠ»Π°ΡΠΈΡΡ Π΄Π΅Π½ΡΠ³ΠΈΒ» ΠΈΒ Β«Π½Π΅Β ΠΏΠ»Π°ΡΠΈΡΡΒ» Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΡΠ±Π΅ΡΠ΅Ρ Π²ΡΠΎΡΠΎΠ΅Β β ΠΊΠ°ΠΊ ΠΈΒ Ρ. ΠΠΈΡΠ΅Π½Π·ΠΈΡ Π½Π°Β MSDB ΡΡΠΎΠΈΡ ΠΎΠΊΠΎΠ»ΠΎ 1Β 000Β $, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΊΠ° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ Windows ΠΈΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΡΠΌΠΈ Π΄ΠΎΠ»Π»Π°ΡΠΎΠ². ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π°ΡΡΠ°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΒ β ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°. ΠΠ΅Β ΡΠ°ΠΌΠ°Ρ Π²Π°ΠΆΠ½Π°Ρ, Π½ΠΎΒ ΠΎΠ΄Π½Π° ΠΈΠ·Β Π²Π΅ΡΠΎΠΌΡΡ .
ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Windows Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΈΡ Β Π±ΡΠ°ΡΡΡ ΠΈΠ·Β LinuxΒ β ΠΎΠ½ΠΈ ΡΡΠΆΠ΅Π»ΡΠ΅. Π£ΡΠΈΡΡΠ²Π°Ρ ΠΌΠ°ΡΡΡΠ°Π± Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΡΒ Π²ΡΠ±ΡΠ°Π»ΠΈ Linux.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΎΡΡΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π²Β ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ CI. ΠΡΒ ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ΅Π±Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠΌΠΈ DevOpsβΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Bamboo, Jenkins ΠΈΒ GitLabΒ CI, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΒ Π½Π°Ρ ΠΊΡΡΡΠΈΡΡΡ Π½Π°Β Linux.
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½Π°Β β ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ Β«ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΡСв» β ΡΠ΅Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°ΡΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±Π΅ΡΠΏΠ΅ΡΠ΅Π±ΠΎΠΉΠ½ΠΎΡΡΡ ΠΈΒ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠΎΒ Π²ΡΠΎΡΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. ΠΠ½ΠΈ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ ΡΠΎΒ ΡΡΠ΅ΠΊΠΎΠΌ Linux, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΒ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΒ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ, ΡΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌΒ ΠΠ Π΄Π»Ρ Windows ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈΒ Π³Π»Π°Π²Π½ΠΎΠ΅Β β ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ΅Β Π²ΡΠ΅ ΠΈΠ·Β Π½ΠΈΡ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π°ΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΈΠ·Π½Π΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Linux. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Ρ ΠΎΡΡΡ Π»ΡΠ±ΠΈΠΌΡΡ Visual Studio, TFS cΒ Π°Π²ΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎΒ ΡΠ±ΠΎΡΠΊΠ°ΠΌ ΠΈΒ ΡΠΌΡΠ·ΠΈ. ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π²Β ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Β β ΠΈΠΌΒ Π½Π΅Β Π²Π°ΠΆΠ½ΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡΒ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π΅Β ΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΒ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄Π»Ρ Windows-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π²Β ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ CI. Π Π΅Π»ΡΡΡ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΈΒ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΒ ΡΡΠ΅ΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΏΡΠΈΠ½ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΒ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
ΠΡΠΎΡΡΠΎΡΠ° Π²Β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΠΈΒ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠ³Π° Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΒ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈΒ ΠΎΡΠ΄Π΅Π»Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠ΅Π΄Π»Π°ΠΉΠ½Β β Π²ΡΠ΅ΡΠ°.
ΠΡΡΠΏΠΏΠ° Win ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
Π‘Β ΡΠ΅ΠΌ ΡΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Windows?
Π‘Π΅ΠΉΡΠ°Ρ ΡΒ ΠΌΠΎΠ³Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ IdentityServer4Β β ΡΡΠΎ ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ADFS ΡΒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΠΈΠ»ΠΈ ΡΡΠΎ Entity Framework CoreΒ β ΡΠ°ΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Β Π·Π°ΠΌΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ SQL ΡΠΊΡΠΈΠΏΡΠΎΠ², Π°Β ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π²Β ΠΠ Π²Β ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ
ΠΠΠ. ΠΠΎΒ ΡΠΎΠ³Π΄Π°, Π½Π°Β ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠ»Π°Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΒ ΡΠΌΠΎΡΡΠ΅Π» Π½Π°Β ΡΡΠΎΡ ΡΡΡΠΊ ΠΊΠ°ΠΊ Π½Π°Β ΡΡΠΌΠ΅ΡΡΠΊΡΡ ΠΊΠ»ΠΈΠ½ΠΎΠΏΠΈΡΡ ΡΠ·Π½Π°Π²Π°Ρ Π»ΠΈΡΡ PostgreSQL ΠΈΒ Git.
ΠΠ°Β ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΡΒ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Puppet ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ. ΠΒ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΡΒ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ GitLab CI, Elastic, Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ HAProxy, ΡΠ»Π΅Π΄ΠΈΠ»ΠΈ Π·Π°Β Π²ΡΠ΅ΠΌ ΡΒ ΠΏΠΎΠΌΠΎΡΡΡ Zabbix, ΡΠ²ΡΠ·ΠΊΠΈ Grafana ΠΈΒ Prometheus, Jaeger, ΠΈΒ Π²ΡΠ΅ ΡΡΠΎ ΠΊΡΡΡΠΈΠ»ΠΎΡΡ Π½Π°Β ΠΆΠ΅Π»Π΅Π·ΡΠΊΠ°Ρ Β HP cΒ ESXi Π½Π°Β VMware. ΠΡΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΎΒ β ΠΊΠ»Π°ΡΡΠΈΠΊΠ° ΠΆΠ°Π½ΡΠ°.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΈΒ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎΒ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ Π΄ΠΎΒ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡΒ Π·Π°ΡΠ΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠΈ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π°.
Π§ΡΠΎ Π±ΡΠ»ΠΎ
TFSΒ β ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠΎΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅Β ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΎΡΒ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΠΎΒ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΠΌΠ°ΡΠΈΠ½Ρ, Π½ΠΎΒ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π±ΠΎΡ Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΒ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈΒ β Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ CIΒ Π½Π° ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
Π Π°Π½ΡΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΈ ΡΠΏΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΎΡΡΠΎΡΠΊΠΈ. TFS ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Build-Π°Π³Π΅Π½ΡΠΎΠ², Π½Π°Β ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΠ±ΠΈΡΠ°Π»ΠΎΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π°Π³Π΅Π½ΡΠ΅ ΠΏΠΎΒ 3-4 worker-a, ΡΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΈΒ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠ°Π»ΡΡΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ΅Π»ΠΈΠ·Π½ΡΠΌ ΠΏΠ»Π°Π½Π°ΠΌ, TFS Π΄ΠΎΡΡΠ°Π²Π»ΡΠ» ΡΠ²Π΅ΠΆΠ΅ΠΈΡΠΏΠ΅ΡΠ΅Π½Π½ΡΠΉ Build Π½Π°Β Windows-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΒ ΡΠ΅ΠΌΡ ΠΌΡΒ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΡΠΈΠΉΡΠΈ
ΠΠ»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΒ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ TFS, Π°Β Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Β Linux Application server, ΠΈΒ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΌΠ°Π³ΠΈΡ. ΠΡΠΎΡ Magic Box ΠΈΒ Π΅ΡΡΡ ΡΠΎΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΒ ΡΠ°ΡΡΡΠΌ, ΡΠ΄Π΅Π»Π°Ρ ΡΠ°Π³ Π²Β ΡΡΠΎΡΠΎΠ½Ρ ΠΈΒ ΡΠΊΠ°ΠΆΡ Π΄Π²Π° ΡΠ»ΠΎΠ²Π° ΠΎΒ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΠΎΠ΅ΠΊΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΠΏΠ»Π°ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠ°ΡΡΠ°ΠΌΠΈ.
Client
Π‘ΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π» Π΄ΠΎΡΡΡΠΏ, Π°Π²ΡΠΎΡΠΈΠ·ΡΡΡΡ ΠΏΠΎΒ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ SSL SHA-2. Π£Β Π²ΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ» Π΄ΠΎΡΡΡΠΏ ΠΏΠΎΒ Π»ΠΎΠ³ΠΈΠ½Ρ ΠΈΒ ΠΏΠ°ΡΠΎΠ»Ρ.
HAProxy
ΠΠ°Π»ΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΏΠ°Π΄Π°Π» Π²Β HAProxy, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- ΠΏΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ;
- ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ SSL;
- ΡΡΠ½ΠΈΠ½Π³ HTTP Π·Π°ΠΏΡΠΎΡΠΎΠ²;
- ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ»Π° ΠΏΠΎΒ ΡΠ΅ΠΏΠΎΡΠΊΠ΅. ΠΡΒ β authority ΠΈΒ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π±Π΅ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΈ Π²ΡΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Β ΡΡΠ΅ΡΠΈΠΉ ΠΏΡΠ½ΠΊΡ, ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π΅ΠΌΡ.
Backend
ΠΡΠΊΠ΅Π½Π΄ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Β Linux. ΠΡΠΊΠ΅Π½Π΄ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΒ ΠΠ, ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈΒ ΠΏΠΎΡΠΎΠΌ, Π²Β Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡΒ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π²ΡΠΈΠΉΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΒ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΡ Β Π½Π°Β ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΎΡΡΠ΅ΡΠ°.
ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ cΒ HAProxy
ΠΡΠΎΠΌΠ΅ Π΄Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ², ΠΏΠΎΒ ΠΊΠΎΡΠΎΡΡΠΌ Ρ ΠΎΠ΄ΠΈΠ» ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ·Β ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ identity. IdentityServer4 ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈΒ ΠΌΠΎΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΎΠ³ Π΄Π»Ρ ADFSΒ β Active Directory Federation Services.
ΠΠ°ΠΏΡΠΎΡ Π²Β identity ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Π²Β Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ². ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³Β β ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠΏΠ°Π΄Π°Π» Π²Β Π±ΡΠΊΠ΅Π½Π΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π»ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΒ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈΒ ΠΏΡΠΎΠ²Π΅ΡΡΠ» Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ Π½Π΅Β Π½Π°Ρ ΠΎΠ΄ΠΈΠ»Β β Π·Π°ΠΏΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π°Β ΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΡΒ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½Β ΠΏΡΠΈΡΠ΅Π», Π½ΠΎΒ ΡΠΆΠ΅ ΡΒ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠΎΠΌ, ΠΈΒ ΡΒ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠΎΠΌ ΡΠ΅Π» Π½Π°Β identity.
ΠΡΠΎΡΠΎΠΉ ΡΠ°Π³Β β Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΏΠ°Π΄Π°Π» Π½Π°Β ΡΡΡΠ°Π½ΠΈΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π²Β IdentityServer, Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π»ΡΡ, Π° Π²Β Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ IdentityServer ΠΏΠΎΡΠ²Π»ΡΠ»ΡΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½.
Π’ΡΠ΅ΡΠΈΠΉ ΡΠ°Π³Β β ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ»ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π°Β ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΡΒ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½Β ΠΏΡΠΈΡΠ΅Π».
Π£Β IdentityServer4 Π΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ: ΠΎΡΠ²Π΅Ρ Π½Π°Β ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΠ½Β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΒ HTTP. ΠΠ°ΠΊ Π½ΠΈΒ Π±ΠΈΠ»ΠΈΡΡ ΡΒ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠ°ΠΊ Π½ΠΈΒ ΠΏΡΠΎΡΠ²Π΅ΡΠ°Π»ΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π½ΠΎΒ ΠΌΡΒ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΠ»ΡΡΠ°Π»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΒ URL, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΠ΅Π» ΠΏΠΎΒ HTTPS, Π°Β IdentityServer Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΡΠΎΡΒ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π½ΠΎΒ ΡΒ HTTP. ΠΡΒ Π±ΡΠ»ΠΈ Π²Β ΡΠΎΠΊΠ΅! ΠΒ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΈ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ identity Π½Π°Β HAProxy, Π°Β Π²Β Ρ
Π΅Π΄Π΅ΡΠ°Ρ
ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» HTTP Π½Π°Β HTTPS.
ΠΒ ΡΠ΅ΠΌΒ ΠΆΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΈΒ Π³Π΄Π΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ?
ΠΡΒ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ Π΄Π΅Π½ΡΠ³ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ΅ΡΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Β Π²ΡΠ½ΠΎΡΠΈΠ»ΠΈ IdentityServer4 ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π½ΠΎΠ΄Ρ Π²Β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, Π°Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΡΒ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ Π½Π°Β ΡΠΎΠΌΒ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π³Π΄Π΅ ΠΊΡΡΡΠΈΡΡΡ Π±ΡΠΊΠ΅Π½Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΒ ΠΎΠ±Π΅ΡΠ°Π»Β β Magic Box. ΠΡΒ ΡΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅ΠΌΡΡ Π²Β ΡΡΠΎΡΠΎΠ½Ρ Linux. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ°Π½ΠΈΡΠ΅ΡΡΡ Puppet. Π§ΡΠΎΠ±Ρ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΒ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΒ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅ΠΏΡΡ. Π ΡΠ»ΠΎΠ½ΡΠΈΠΊ ΡΒ ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠΎΠΌ ΠΊΡΠ°ΡΠ½ΠΎΡΠ΅ΡΠΈΠ²ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ Π±ΡΡΡΡΠΎ ΠΈΒ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ.
Π‘ΠΏΠΎΡΠΎΠ± Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΒ β ΡΡΠΎ RPM. ΠΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π²Β Linux Π±Π΅Π· Π½Π΅Π³ΠΎ Π½ΠΈΠΊΠ°ΠΊ, Π½ΠΎΒ ΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ» ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ DLL-ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡ Β Π±ΡΠ»ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 150, ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠΆΠ΅Π»ΡΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π³Π°ΡΠΌΠΎΠ½ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅Β β ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΡΡΡ Π±ΠΈΠ½Π°ΡΡΠΈΠ½Ρ Π²Β RPM ΠΈΒ ΡΠΆΠ΅ ΠΈΠ·Β Π½Π΅Π΅ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΡΠ»ΠΎ ΡΠ΅Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ, ΠΈΒ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΒ TFS. Build-Π°Π³Π΅Π½Ρ ΡΒ Π½Π°Ρ Π±ΡΠ» Π½Π°Β Linux. ΠΠΎΠ³Π΄Π° TFS ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΒ β workerΒ β Π½Π°Β Build-Π°Π³Π΅Π½Ρ, ΠΎΠ½Β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅ΠΌΡ Π΅ΡΠ΅ ΠΈΒ Π±Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²Β environment ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΒ ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈΠΌΡ Build, ΠΈΠΌΡ Π²Π΅ΡΡΠΈΠΈ ΠΈΒ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ±Β ΡΡΠΎΠΌ Π²Β ΡΒ ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΡΠ±ΠΎΡΠΊΠ° RPM-ΠΏΠ°ΠΊΠ΅ΡΠ°Β».
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° TFS ΡΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΊΒ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Pipeline. Π Π°Π½ΡΡΠ΅ ΠΌΡΒ ΡΠΎΠ±ΠΈΡΠ°Π»ΠΈ Π½Π°Β Windows-Π°Π³Π΅Π½ΡΠ°Ρ Π²ΡΠ΅ Windows-ΠΏΡΠΎΠ΅ΠΊΡΡ, Π°Β ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Linux-Π°Π³Π΅Π½ΡΒ β Build-Π°Π³Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Β Π³ΡΡΠΏΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΎΠ±ΠΎΠ³Π°ΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ°ΠΌΠΈ, ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΎΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ Π½Π°Β ΡΡΠΎΠΌ Build-Π°Π³Π΅Π½ΡΠ΅, ΠΈΒ ΠΊΠ°ΠΊ-ΡΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Pipeline.
IdentityServer. ADFS Π½Π΅Β Π½Π°Ρ ΠΏΡΡΡ, ΡΠΎΠΏΠΈΠΌ Π·Π°Β Open Source.
ΠΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎΒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ.
Magic Box
Π‘ΠΎΡΡΠΎΠΈΡ ΠΈΠ·Β ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ.
Linux Build-Π°Π³Π΅Π½Ρ. Linux, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡΒ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΒ β Π»ΠΎΠ³ΠΈΡΠ½ΠΎ. ΠΡΠ° ΡΠ°ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ Π²Β ΡΡΠΈ ΡΠ°Π³Π°.
- ΠΠ°ΡΡΡΠΎΠΈΡΡ worker-Ρ ΠΈΒ Π½Π΅Β ΠΎΠ΄ΠΈΠ½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»Π°ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ .NET CoreΒ 1.Ρ . ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ 1.Ρ , ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ 2.0Β Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡΒ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π±ΡΠ»Π° 1.09, ΠΈΒ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ Π½Π΅Ρ.
- GitΒ 2.x.
RPM-repository. RPM-ΠΏΠ°ΠΊΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π³Π΄Π΅-ΡΠΎ Ρ ΡΠ°Π½ΠΈΡΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΌΡΒ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΒ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ RPM-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠ΅ΠΌ Linux Ρ ΠΎΡΡΠ°ΠΌ. Π’Π°ΠΊ ΠΈΒ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈ. ΠΠ°Β ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π°ΡΡΡΠΎΠ΅Π½ webhook ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°ΡΠΈΠ²Π°Π» ΠΈΠ·Β ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ RPM-ΠΏΠ°ΠΊΠ΅Ρ. ΠΠ΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° webhookβΡ ΡΠΎΠΎΠ±ΡΠ°Π» Build-Π°Π³Π΅Π½Ρ.
GitLab. ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! GitLab Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅Β ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, Π°Β ΠΎΡΠ΄Π΅Π»ΠΎΠΌ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Π΅ΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅Ρ Linux-ΠΌΠ°ΡΠΈΠ½ ΠΈΒ Π²Β Π½ΡΠΌ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ΅ΡΠ΅ΠΏΡΡΡΠ°Β β Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ Puppet.
PuppetΒ β ΡΠ°Π·ΡΡΠ»ΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠΏΠΎΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΈΒ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΒ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡΒ Ρ ΠΎΡΠΈΠΌ, ΠΈΠ·Β Gitlab.
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ. ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° DLLΒ Π² RPM?
ΠΠΎΡΡΠ°Π²ΠΊΠ° DDLΒ Π² RPM
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΒ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠΊ-Π·Π²Π΅Π·Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° .NET. ΠΠ½Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Visual Studio ΠΈΒ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅Π»ΠΈΠ·Π½ΡΡ Π²Π΅ΡΠΊΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π΅Π΅Β Π²Β Git, ΠΈΒ Git Π·Π΄Π΅ΡΡΒ β TFS-ΡΡΡΠ½ΠΎΡΡΡ, ΡΠΎΒ Π΅ΡΡΡ ΡΡΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΒ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ TFS Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ»Π΅ΡΠ΅Π» Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ. ΠΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? ΠΒ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
TFS Π΅ΡΡΡ ΠΌΠ΅ΡΠΊΠ°, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Build-Π°Π³Π΅Π½Ρ. ΠΒ Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Β Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ ΠΌΡΒ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ .NET Core ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΒ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Linux Build-Π°Π³Π΅Π½Ρ ΠΈΠ·Β ΠΏΡΠ»Π°.
Build-Π°Π³Π΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, Π²ΡΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ dependencies cΒ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ .NET, npm ΠΈΒ Ρ.Π΄.Β ΠΈΒ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΒ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ RPM-ΠΏΠ°ΠΊΠ΅Ρ Π²Β RPM-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π‘Β Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅. ΠΠ½ΠΆΠ΅Π½Π΅Ρ ΠΎΡΠ΄Π΅Π»Π° ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠΊΠ°ΡΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΠΌΠ΅Π½ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π²Β Hiera Π²Β ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ΅ΡΠ΅ΠΏΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Puppet ΡΡΠΈΠ³Π³Π΅ΡΠΈΡ Yum, Π·Π°Π±ΠΈΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ·Β ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, ΠΈΒ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ²Π° ΠΊΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°Β ΡΠ»ΠΎΠ²Π°Ρ
Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎΒ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ Π½Π°Β ΡΠ°ΠΌΠΎΠΌ Build-Π°Π³Π΅Π½ΡΠ΅?
Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° DLLΒ RPM
ΠΠΎΠ»ΡΡΠ΅Π½Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΒ Π·Π°Π΄Π°ΡΠ° Π½Π°Β ΡΠ±ΠΎΡΠΊΡ ΠΎΡΒ TFS. Build-Π°Π³Π΅Π½Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ±ΠΎΡΠΊΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ·Β ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ². Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²Β Π²ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° DLLΒ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π²Β zip-Π°ΡΡ ΠΈΠ² Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°Β ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ZIP-Π°ΡΡ ΠΈΠ² Π²ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅ΡΡΡ Π²Β Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° RPM. ΠΠ°Π»ΡΡΠ΅ Bash-ΡΠΊΡΠΈΠΏΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π²Π΅ΡΡΠΈΡ Build, Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΡΡΡ Π΄ΠΎΒ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΈΒ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ RPM-build. ΠΠΎΒ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΡΡΡ Π²Β Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π°Β Build-Π°Π³Π΅Π½ΡΠ΅.
ΠΠ°Π»ΡΡΠ΅, ΡΒ Build-Π°Π³Π΅Π½ΡΠ° Π½Π°Β ΡΠ΅ΡΠ²Π΅Ρ Π²Β RPM-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ JSON-Π·Π°ΠΏΡΠΎΡ ΡΒ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΈΒ Π±ΠΈΠ»Π΄Π°. Webhook, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠΉ ΡΒ ΡΠ°Π½ΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», Π²ΡΠΊΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ·Β Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π°Β Build-Π°Π³Π΅Π½ΡΠ΅ ΠΈΒ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠ°Ρ ΡΡ
Π΅ΠΌΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Β ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ RPM? ΠΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΡΡΠ°Π·Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π²Β ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ? ΠΠ΅Π»ΠΎ Π²Β ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π’Π°ΠΊΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ RPM-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ Π½Π°Β ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠ΅ΠΌ Linux-ΠΌΠ°ΡΠΈΠ½Π°ΠΌ.
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ
ΠΠ°Β ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΠΌΠ΅ ΡΒ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΡΠ΅Π±ΡΡΠ°ΠΌ Π±Π»ΠΈΠΆΠ΅ MSΒ SQL, Π½ΠΎΒ Π²Β Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ non-Windows ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΡΒ ΡΠΆΠ΅ Π²ΠΎΠ²ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ PostgreSQL. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΒ Π²ΡΠ΅Π³ΠΎ ΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ, ΡΠΎ ΡΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PostgreSQL ΠΈ Π·Π΄Π΅ΡΡ.
ΠΒ ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ Ρ
ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΡΒ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β ΠΠ ΠΈΒ ΠΊΠ°ΠΊ Π²ΡΠ±ΠΈΡΠ°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Flyway ΠΈΒ Entity Framework Core. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ
Β ΠΏΠ»ΡΡΡ ΠΈΒ ΠΌΠΈΠ½ΡΡΡ.
ΠΠΈΠ½ΡΡΡ
Flyway ΠΈΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Β ΠΎΠ΄Π½Ρ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΡΒ Π½Π΅Β ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΠ°ΡΠΈΡΡΡΡ Π½Π°Π·Π°Π΄Β β ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ. Π‘ΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΒ Entity Framework Core ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΒ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΒ β ΡΒ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΒ ΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΡΒ ΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π²ΠΎΒ Π³Π»Π°Π²Ρ ΡΠ³Π»Π°, ΠΈΒ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ Π½Π΅Β ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π»Ρ Windows-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ»Ρ Flyway Π½Π°ΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΠ΅Π±ΡΡΠ° Π½Π΅Β ΠΏΠΈΡΠ°Π»ΠΈ SQL-Π·Π°ΠΏΡΠΎΡΡ. ΠΠΌΒ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Β ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΠΠ. ΠΠ°ΠΏΠΈΡΠ°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎΒ ΡΠ°Π±ΠΎΡΠ΅ ΡΒ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈΒ ΠΠ, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π»ΡΡ SQL-Π·Π°ΠΏΡΠΎΡ ΠΈΒ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ. ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡΒ ΠΠ Π³ΠΎΡΠΎΠ²Π°, ΠΏΡΠΎΠΊΠ°ΡΠ°Π»Π°ΡΡΒ β Π²ΡΡ Ρ ΠΎΡΠΎΡΠΎ, Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π£Β Entity Framework Core Π΅ΡΡΡ ΠΌΠΈΠ½ΡΡΒ β ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ ΠΎΠ½Β ΡΡΡΠΎΠΈΡ Π½Π΅Β ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ, ΠΈΒ ΠΏΡΠΎΡΠ°Π΄ΠΊΠ° ΠΏΠΎΒ ΠΠ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ. ΠΠΎΒ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΒ Π½Π°Ρ Π½Π΅Β Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΌΡΒ Π½Π΅Β ΠΈΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π½Π°Π³ΡΡΠ·ΠΊΡ ΡΠΎΡΠ½ΡΠΌΠΈ RPS, ΠΌΡ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΡΠΈ ΡΠΈΡΠΊΠΈ ΠΈΒ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ΄ΡΡΠΈΠΌ Π½Π°ΠΌ.
ΠΠ»ΡΡΡ
Entity Framework Core ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ·Β ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΈΒ ΡΠ΄ΠΎΠ±Π΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π°Β Flyway Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Π²Β ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ CI. ΠΠΎΒ ΠΌΡΒ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΠ°ΠΌ:)
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π°ΠΊΠ°ΡΠ°
Puppet Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ , ΡΠΎΡ, ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π°Β ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ. Π‘Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ, Π³Π΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΈΒ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π·Π°Π²ΡΠ·Π°Π½Π½ΡΠΉ Π½Π°Β ΠΠ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΡΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΒ ΠΠ. ΠΠ°Π»ΡΡΠ΅ ΠΈΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΒ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²Β ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ Puppet.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅Π½Ρ, ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΊΒ ΠΠ, Π²ΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΡΡΡ Π²Β ΠΊΠΎΠ½ΡΠΈΠ³ ΡΒ Puppet master, Π³Π΄Π΅ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π²Β Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ TFS
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡΒ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡ ΠΈΒ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ ΡΒ Π½Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΒ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ²ΠΎΡΠΈΡΡΡ ΡΠΎΒ ΡΠ±ΠΎΡΠΊΠ°ΠΌΠΈ Π²Β TFS Π²Β ΡΠ΅Π»ΠΎΠΌ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»Π° Win-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΒ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΒ β Π±ΡΡΡΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ/ΡΠ΅Π»ΠΈΠ·ΠΈΠΌΡΡ, ΠΈΒ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΒ ΡΠΊΠΎΡΠΎΡΡΡΡ.
ΠΠ΄ΠΈΠ½ ΠΈΠ·Β ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ 12-15 ΠΌΠΈΠ½ΡΡΒ β ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΎ, ΡΠ°ΠΊ ΠΆΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΡΡΡΡΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΆΡΡΠΊΡΡ ΠΏΡΠΎΡΠ°Π΄ΠΊΡ ΠΏΠΎΒ I/O, ΠΈΒ ΡΡΠΎ Π½Π°Β ΠΌΠ°ΡΡΠΈΠ²Π°Ρ .
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² ΠΏΠΎΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎ, ΡΒ Π²ΡΠ΄Π΅Π»ΠΈΠ» ΡΡΠΈ ΠΎΡΠ°Π³Π°. ΠΠ΅ΡΠ²ΡΠΉΒ β Β«Kaspersky antivirusΒ», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Β Π²ΡΠ΅Ρ Windows Build-Π°Π³Π΅Π½ΡΠ°Ρ ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ. ΠΡΠΎΡΠΎΠΉΒ β Windows Indexer. ΠΠ½Β Π½Π΅Β Π±ΡΠ» ΠΎΡΠΊΠ»ΡΡΠ΅Π½, ΠΈΒ Π½Π°Β Build-Π°Π³Π΅Π½ΡΠ°Ρ Π²Β ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π²ΡΠ΅ Π²Β ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΄Π΅ΠΏΠ»ΠΎΡ.
Π’ΡΠ΅ΡΠΈΠΉΒ β Npm install. ΠΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π²Β Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Pipelines ΠΌΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ. Π§Π΅ΠΌ ΠΎΠ½Β ΠΏΠ»ΠΎΡ ? ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Npm install Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Β package-lock.json, Π³Π΄Π΅ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΈΠ½ΡΡ Π²Β ΡΠΎΠΌ, ΡΡΠΎ Npm install ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ·Β ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Π°Β ΡΡΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²Β ΡΠ»ΡΡΠ°Π΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΡΡ Π½Π°Β Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ, ΡΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΠΊΡΡΡΠΎ, Π½ΠΎΒ ΡΠΎΠ±ΠΈΡΠ°Π»ΠΈ, Π²ΡΠΊΠ°ΡΡΠ²Π°Π»ΠΈΡΡΒ β Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Β ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ, Π²Β ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Β β Π°Π³Π°, ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
- ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π²Β ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ AV.
- ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ.
- ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π°Β npmΒ ci.
ΠΠ»ΡΡΡ npmΒ ci, Π²Β ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡΒ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π΄ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ, ΠΈΒ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΒ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½Β ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡ ΠΊΠΎΠ΄.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
Π‘Π΅ΠΉΡΠ°Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΒ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Nexus Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ, Π²Β ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Internal REPO. ΠΒ ΡΡΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΈ.
ΠΡΒ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ NuGet, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Β Π»ΡΡΡΠ΅ ΠΊΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΒ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΒ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡΒ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ Build-Π°Π³Π΅Π½ΡΠΎΠ², ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ Ρ 12Β ΠΌΠΈΠ½ΡΡ Π΄ΠΎ 7.
ΠΡΠ»ΠΈ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡΒ ΠΌΠΎΠ³Π»ΠΈΒ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Windows, Π½ΠΎΒ ΠΏΠ΅ΡΠ΅Π²Π΅Π»ΠΈ Π½Π°Β Linux Π²Β ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΌΡΒ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° $10Β 000. ΠΒ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Β Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡ , Π°Β Π΅ΡΠ»ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅Β β Π±ΠΎΠ»ΡΡΠ΅.
ΠΠ»Π°Π½Ρ
ΠΠ°Β ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ²Π°ΡΡΠ°Π» Π·Π°Π»ΠΎΠΆΠΈΠ»ΠΈ Π²Β ΠΏΠ»Π°Π½ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π°Β ΠΏΡΠ΅Π±ΠΈΠ»Π΄ Docker-ΠΎΠ±ΡΠ°Π·Π°. TFSΒ β ΠΊΠ»Π°ΡΡΠ½Π°Ρ ΡΡΡΠΊΠ° ΡΠΎΒ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Β Pipeline, Π²Β ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, ΠΈΒ ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎΒ ΡΡΠΈΠ³Π³Π΅ΡΡ, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Docker-ΠΎΠ±ΡΠ°Π·Π°. ΠΡΠΎΡ ΡΡΠΈΠ³Π³Π΅Ρ ΠΌΡΒ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Β ΡΠΎΡ ΡΠ°ΠΌΡΠΉ package-lock.json. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΡΡΠ°Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°Β β ΡΒ Π½Π°Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π·. ΠΒ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΎΠ½Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΒ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Ρ, Π½ΠΎΒ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π°Β ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π²Β Kubernetes, ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Π²Β Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΒ Π΄Π°Π²Π½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π Π΅Π·ΡΠΌΠ΅
ΠΡΠΈΠ·ΡΠ²Π°Ρ Π²ΡΠ΅Ρ Π²ΡΠΊΠΈΠ½ΡΡΡ Windows, Π½ΠΎΒ ΡΡΠΎ Π½Π΅Β ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΒ Π½Π΅Β ΡΠΌΠ΅Ρ Π΅Π΅Β Π³ΠΎΡΠΎΠ²ΠΈΡΡ. ΠΡΠΈΡΠΈΠ½Π° Π²Β ΡΠΎΠΌ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Opensource-ΡΠ΅ΡΠ΅Π½ΠΈΠΉΒ β ΡΡΠΎ Linux-ΡΡΠ΅ΠΊ. ΠΡΒ Ρ ΠΎΡΠΎΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ Π½Π°Β ΡΠ΅ΡΡΡΡΠ°Ρ . ΠΠ°Β ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π±ΡΠ΄ΡΡΠ΅Π΅ Π·Π°Β ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Open Source Π½Π°Β Linux ΡΒ ΠΌΠΎΡΠ½ΡΠΌ ΠΊΠΎΠΌΡΡΠ½ΠΈΡΠΈ.
ΠΡΠΎΡΠΈΠ»Ρ ΡΠΏΠΈΠΊΠ΅ΡΠ° ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ° Π‘ΠΈΠ½ΡΠΈΠ½ΠΎΠ²Π°
DevOps Conf Β β ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ ΠΏΠΎΒ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΒ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ² ΠΎΡΒ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ². ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΎΒ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ? ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΒ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π°Β Π²Β Π΄Π΅Π½Ρ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π΄Π²Π° ΡΡΠΏΠ΅ΡΠ½ΡΡ ΡΠ΅Π»ΠΈΠ·Π°. ΠΠ°ΒDevOps Conf Π½Π°Β Π ΠΠ’++ 27Β ΠΈΒ 28Β ΠΌΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΊΠ΅ΠΉΡΠΎΠ² ΠΎΡΒ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ². ΠΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠΎΡΠΈΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°Π³ΠΎΠ½ ΠΈΠΏΠΎΠ΄Π°ΡΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΡΠΎΠΏΡΡΡΠ·Π°Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ»Π΅Ρ. ΠΡΡΡΠ΅ΡΠΈΠΌΡΡ Π²Β Π‘ΠΊΠΎΠ»ΠΊΠΎΠ²ΠΎ!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com