.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ΠœΡ‹Β Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈ DevOps ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π»ΠΈ. Нас Π±Ρ‹Π»ΠΎ 8Β Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, и Вася Π±Ρ‹Π» самым ΠΊΡ€ΡƒΡ‚Ρ‹ΠΌ ΠΏΠΎΒ Windows. Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ Вася ΡƒΡˆΠ΅Π», а у мСня появилась Π·Π°Π΄Π°Ρ‡Π° вывСсти Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСт Windows-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Когда я высыпал на стол вСсь стСк Windows-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, то понял, Ρ‡Ρ‚ΠΎ ситуация — Π±ΠΎΠ»ΡŒβ€¦

Π’Π°ΠΊ начинаСтся история АлСксандра Π‘ΠΈΠ½Ρ‡ΠΈΠ½ΠΎΠ²Π° Π½Π° DevOpsConf. Когда ΠΈΠ·Β ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΡˆΠ΅Π» Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ спСциалист ΠΏΠΎΒ Windows, АлСксандр задался вопросом, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π°Β Linux, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΒ ΠΆΠ΅! АлСксандр расскаТСт, ΠΊΠ°ΠΊ Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ†Π΅Π΄Π΅Π½Ρ‚ и пСрСвСсти Ρ‡Π°ΡΡ‚ΡŒ Windows Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Β Linux Π½Π°Β ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π°Β 100Β 000 ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

Как Π»Π΅Π³ΠΊΠΎ ΠΈΒ Π½Π΅ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π΅Π½Π½ΠΎ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Β RPM, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ TFS, Puppet, Linux .NET core? Как ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ вСрсионированиС БД ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡΠ»Ρ‹ΡˆΠΈΡ‚ слова Postgres ΠΈΒ Flyway, Π°Β Π΄Π΅Π΄Π»Π°ΠΉΠ½ послСзавтра? Как ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Docker? Как ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ .NET-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Β Windows и смузи Π²Β ΠΏΠΎΠ»ΡŒΠ·Ρƒ Puppet ΠΈΒ Linux? Как Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ идСологичСскиС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Ссли ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Windows Π²Β ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π½Π΅Ρ‚ ни сил, ни ТСлания, ни рСсурсов? ΠžΠ±Β ΡΡ‚ΠΎΠΌ, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΒ Web Deploy, тСстировании, CI, ΠΎΒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ… использования TFS Π²Β ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, о сломанных костылях ΠΈΒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…, Π²Β Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄Π° АлСксандра.


Π˜Ρ‚Π°ΠΊ, Вася ΡƒΡˆΠ΅Π», Π·Π°Π΄Π°Ρ‡Π° Π½Π°Β ΠΌΠ½Π΅, Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€Ρ‹ ΠΆΠ΄ΡƒΡ‚ с вилами с нСтСрпСниСм. Когда ΡΒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ осознал, Ρ‡Ρ‚ΠΎ Π’Π°ΡΡŽ Π½Π΅Β Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ β€” приступил ΠΊΒ Π΄Π΅Π»Ρƒ. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΡ†Π΅Π½ΠΈΠ» ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Win VMΒ Π² нашСм ΠΏΠ°Ρ€ΠΊΠ΅. Π‘Ρ‡Ρ‘Ρ‚ Π±Ρ‹Π» Π½Π΅Β Π²Β ΠΏΠΎΠ»ΡŒΠ·Ρƒ Windows.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹Β Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌ 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?

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

БСйчас я могу ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ IdentityServer4Β β€” это классная бСсплатная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ADFS с аналогичными возмоТностями, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Entity Framework CoreΒ β€” Ρ€Π°ΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅Β Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ написаниСм SQL скриптов, Π°Β ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ запросы Π²Β Π‘Π” Π²Β Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ООП. Но тогда, на обсуТдСнии ΠΏΠ»Π°Π½Π° дСйствий, я смотрСл на этот стэк ΠΊΠ°ΠΊ Π½Π°Β ΡˆΡƒΠΌΠ΅Ρ€ΡΠΊΡƒΡŽ клинопись узнавая лишь PostgreSQL ΠΈΒ Git.

На тот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹Β Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовали Puppet ΠΊΠ°ΠΊ систСму управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ. Π’Β Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² мы примСняли GitLab CI, Elastic, балансировали высоконагруТСнныС сСрвисы ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HAProxy, слСдили за всСм ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Zabbix, связки Grafana ΠΈΒ Prometheus, Jaeger, и всС это ΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΎΡΡŒ на ТСлСзяках HP cΒ ESXi Π½Π°Β VMware. ВсСм Π·Π½Π°ΠΊΠΎΠΌΠΎΒ β€” классика ΠΆΠ°Π½Ρ€Π°.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ и попытаСмся ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΒ ΠΆΠ΅ происходило Π΄ΠΎΒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ мы затСяли всС эти Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.

Π§Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ

TFSΒ β€” это довольно мощная систСма, которая Π½Π΅Β Ρ‚ΠΎΠ»ΡŒΠΊΠΎ доставляСт ΠΊΠΎΠ΄ ΠΎΡ‚Β Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄ΠΎΒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½ΠΎΒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ для ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с различными сСрвисами — для обСспСчСния CIΒ Π½Π° кроссплатформСнном ΡƒΡ€ΠΎΠ²Π½Π΅.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅
РаньшС это Π±Ρ‹Π»ΠΈ ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ Ρ„ΠΎΡ€Ρ‚ΠΎΡ‡ΠΊΠΈ. TFS использовал нСсколько Build-Π°Π³Π΅Π½Ρ‚ΠΎΠ², Π½Π°Β ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΎΡΡŒ мноТСство ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Β ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π°Π³Π΅Π½Ρ‚Π΅ ΠΏΠΎΒ 3-4 worker-a, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс. Π”Π°Π»ΡŒΡˆΠ΅, согласно Ρ€Π΅Π»ΠΈΠ·Π½Ρ‹ΠΌ ΠΏΠ»Π°Π½Π°ΠΌ, TFS доставлял свСТСиспСчСнный Build Π½Π°Β Windows-сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠšΒ Ρ‡Π΅ΠΌΡƒ ΠΌΡ‹Β Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ

Для доставки ΠΈΒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ TFS, а запускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Β Linux Application server, ΠΈΒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ какая-Ρ‚ΠΎ магия. Π­Ρ‚ΠΎΡ‚ Magic Box ΠΈΒ Π΅ΡΡ‚ΡŒ соль прСдстоящСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ по частям, сдСлаю шаг в сторону и скаТу Π΄Π²Π° слова ΠΎΒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для опСрирования ΠΏΡ€Π΅Π΄ΠΎΠΏΠ»Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

Client

БущСствовало Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π» доступ, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΡΡΡŒ по сСртификату SSL SHA-2. Π£Β Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π» доступ ΠΏΠΎΒ Π»ΠΎΠ³ΠΈΠ½Ρƒ ΠΈΒ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ.

HAProxy

Π”Π°Π»ΡŒΡˆΠ΅ клиСнтский запрос ΠΏΠΎΠΏΠ°Π΄Π°Π» Π²Β HAProxy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

  • пСрвичная авторизация;
  • Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SSL;
  • Ρ‚ΡŽΠ½ΠΈΠ½Π³ HTTP запросов;
  • трансляция запросов.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сСртификата ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° шла ΠΏΠΎΒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅. ΠœΡ‹Β β€” authority ΠΈΒ ΠΌΠΎΠΆΠ΅ΠΌ сСбС Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сами Π²Ρ‹Π΄Π°Π΅ΠΌ сСртификаты ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ сСрвиса.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Β Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚, Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ вСрнСмся ΠΊ Π½Π΅ΠΌΡƒ.

Backend

БэкСнд ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°Β Linux. БэкСнд взаимодСйствуСт с БД, ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ список ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈΒ ΠΏΠΎΡ‚ΠΎΠΌ, в зависимости ΠΎΡ‚Β Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌΠΈ привилСгиями ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π²ΡˆΠΈΠΉΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, прСдоставляСт доступ для подписания финансовых Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ их на исполнСниС, Π»ΠΈΠ±ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

Экономия c HAProxy

ΠšΡ€ΠΎΠΌΠ΅ Π΄Π²ΡƒΡ… контСкстов, ΠΏΠΎΒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ…ΠΎΠ΄ΠΈΠ» ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ·Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², сущСствовал Π΅Ρ‰Π΅ контСкст identity. IdentityServer4 ΠΊΠ°ΠΊ Ρ€Π°Π· позволяСт Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, это бСсплатный ΠΈΒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ для ADFSΒ β€” Active Directory Federation Services.

Запрос Π²Β identity обрабатывался в нСсколько шагов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡˆΠ°Π³Β β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π» в бэкСнд, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обмСнивался Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с этим сСрвСром и провСрял Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Если Π½Π΅Β Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Β β€” запрос возвращался ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π°Β Ρ‚ΠΎΡ‚ контСкст, с которого ΠΎΠ½Β ΠΏΡ€ΠΈΡˆΠ΅Π», Π½ΠΎΒ ΡƒΠΆΠ΅ с рСдирСктом, и с рСдирСктом шСл Π½Π°Β identity.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡˆΠ°Π³Β β€” запрос ΠΏΠΎΠΏΠ°Π΄Π°Π» на страницу Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Β IdentityServer, Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ рСгистрировался, Π° Π²Β Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… IdentityServer появлялся Ρ‚ΠΎΡ‚ самый Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡˆΠ°Π³Β β€” ΠΊΠ»ΠΈΠ΅Π½Ρ‚ рСдирСктился ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ на контСкст, с которого ΠΎΠ½Β ΠΏΡ€ΠΈΡˆΠ΅Π».

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

Π£Β IdentityServer4 Π΅ΡΡ‚ΡŒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: ΠΎΡ‚Π²Π΅Ρ‚ Π½Π°Β ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ запрос ΠΎΠ½Β Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΒ HTTP. Как ни бились с настройкой сСрвСра, ΠΊΠ°ΠΊ Π½ΠΈΒ ΠΏΡ€ΠΎΡΠ²Π΅Ρ‰Π°Π»ΠΈΡΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, Π½ΠΎΒ ΠΌΡ‹Β ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с URL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΏΠΎΒ HTTPS, Π°Β IdentityServer Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» Ρ‚ΠΎΡ‚Β ΠΆΠ΅ самый контСкст, но с HTTP. ΠœΡ‹Β Π±Ρ‹Π»ΠΈ в шокС! Π˜Β ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΈ всС это Ρ‡Π΅Ρ€Π΅Π· контСкст identity Π½Π°Β HAProxy, Π°Β Π²Β Ρ…Π΅Π΄Π΅Ρ€Π°Ρ… ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP Π½Π°Β HTTPS.

Π’Β Ρ‡Π΅ΠΌΒ ΠΆΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΒ Π³Π΄Π΅ сэкономили?

ΠœΡ‹Β ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ дСньги, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ бСсплатноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, рСсурсы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нС выносили IdentityServer4 ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π½ΠΎΠ΄Ρƒ Π²Β ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт, а использовали Π΅Π³ΠΎ совмСстно с бэкСндом Π½Π°Β Ρ‚ΠΎΠΌΒ ΠΆΠ΅ самом сСрвСрС, Π³Π΄Π΅ крутится бэкСнд прилоТСния.

Как Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

Π˜Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ я обСщал — Magic Box. ΠœΡ‹Β ΡƒΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ двиТСмся в сторону Linux. Π”Π°Π²Π°ΠΉΡ‚Π΅ сформулируСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ΠœΠ°Π½ΠΈΡ„Π΅ΡΡ‚Ρ‹ 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

Бостоит ΠΈΠ·Β Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… частСй.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

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-ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎΒ Π΅ΡΡ‚ΡŒ это Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ прилоТСния, с которым Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ПослС Ρ‡Π΅Π³ΠΎ TFS Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π» Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. КакоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? В настройках TFS Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠ°, ΠΊΠ°ΠΊΠΈΠΌΠΈ рСсурсами ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Build-Π°Π³Π΅Π½Ρ‚. Π’Β Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½Β Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ мы собираСм .NET Core ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Linux Build-Π°Π³Π΅Π½Ρ‚ ΠΈΠ·Β ΠΏΡƒΠ»Π°.

Build-Π°Π³Π΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ исходники, Π²Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ dependencies c рСпозитория .NET, npm ΠΈΒ Ρ‚.Π΄. и послС сборки самого прилоТСния ΠΈΒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ отправляСт RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Β RPM-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π‘Β Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ ΠΎΡ‚Π΄Π΅Π»Π° эксплуатации занимаСтся нСпосрСдствСнно Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: мСняСт вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Β Hiera Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ хранится Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΡƒΡ€Π° прилоТСния, послС Ρ‡Π΅Π³ΠΎ Puppet Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΈΡ‚ Yum, Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ из рСпозитория, и новая вСрсия прилоТСния Π³ΠΎΡ‚ΠΎΠ²Π° к использованию.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

На словах всС просто, Π½ΠΎΒ Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ на самом Build-Π°Π³Π΅Π½Ρ‚Π΅?

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° DLLΒ RPM

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ исходники ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΒ Π·Π°Π΄Π°Ρ‡Π° на сборку ΠΎΡ‚Β TFS. Build-Π°Π³Π΅Π½Ρ‚ запускаСт сборку самого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° из исходников. Π‘ΠΎΠ±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ доступСн Π²Β Π²ΠΈΠ΄Π΅ мноТСства DLLΒ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ Π²Β zip-Π°Ρ€Ρ…ΠΈΠ² для сниТСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π°Β Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму.

ZIP-Π°Ρ€Ρ…ΠΈΠ² выкидываСтся Π²Β Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π° RPM. Π”Π°Π»ΡŒΡˆΠ΅ Bash-скрипт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ Build, Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΡƒΡ‚ΡŒ Π΄ΠΎΒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ сборки, и запускаСт RPM-build. ΠŸΠΎΒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ сборки ΠΏΠ°ΠΊΠ΅Ρ‚ публикуСтся Π²Β Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π°Β Build-Π°Π³Π΅Π½Ρ‚Π΅.

Π”Π°Π»ΡŒΡˆΠ΅, с Build-Π°Π³Π΅Π½Ρ‚Π° на сСрвСр Π²Β RPM-рСпозитория отправляСтся JSON-запрос с указаниСм ΠΈΠΌΠ΅Π½ΠΈ вСрсии ΠΈΒ Π±ΠΈΠ»Π΄Π°. Webhook, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΒ Ρ€Π°Π½ΡŒΡˆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Π²Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ этот самый ΠΏΠ°ΠΊΠ΅Ρ‚ из локального рСпозитория Π½Π°Β Build-Π°Π³Π΅Π½Ρ‚Π΅ ΠΈΒ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ сборку доступной для установки.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ такая схСма доставки ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ RPM? ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя сразу ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ собранный ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Β Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ? Π”Π΅Π»ΠΎ Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это условиС для обСспСчСния бСзопасности. Π’Π°ΠΊΠΎΠΉ сцСнарий ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСсанкционированной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ RPM-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² посторонними людьми на сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ доступСн всСм Linux-машинам.

ВСрсионированиС Π‘Π”

На консилиумС с разработкой Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ рСбятам Π±Π»ΠΈΠΆΠ΅ MSΒ SQL, Π½ΠΎΒ Π²Β Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ non-Windows ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹Β ΡƒΠΆΠ΅ вовсю использовали PostgreSQL. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ от всСго ΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ, Ρ‚ΠΎ стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PostgreSQL ΠΈ здСсь.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

В этой части Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мы осущСствляли вСрсионированиС БД ΠΈΒ ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ 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. В этот Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, самописныС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ.

.NET Core Π½Π° Linux, DevOps Π½Π° ΠΊΠΎΠ½Π΅

ΠœΡ‹Β Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ NuGet, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Β Π»ΡƒΡ‡ΡˆΠ΅ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΒ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с другими ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹Β ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Build-Π°Π³Π΅Π½Ρ‚ΠΎΠ², срСднСС врСмя сборки ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ с 12Β ΠΌΠΈΠ½ΡƒΡ‚ Π΄ΠΎ 7.

Если ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹Β ΠΌΠΎΠ³Π»ΠΈΒ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Windows, Π½ΠΎΒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΈ Π½Π°Β Linux в этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, мы сэкономили порядка $10Β 000. Π˜Β ΡΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ на лицСнзиях, а Ссли ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ содСрТаниС — большС.

ΠŸΠ»Π°Π½Ρ‹

ΠΠ°Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» Π·Π°Π»ΠΎΠΆΠΈΠ»ΠΈ Π²Β ΠΏΠ»Π°Π½ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ доставки ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π°Β ΠΏΡ€Π΅Π±ΠΈΠ»Π΄ Docker-ΠΎΠ±Ρ€Π°Π·Π°. TFSΒ β€” классная ΡˆΡ‚ΡƒΠΊΠ° со мноТСством ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Β Pipeline, Π²Β Ρ‚ΠΎΠΌ числС, и сборку ΠΏΠΎΒ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρƒ, допустим, Docker-ΠΎΠ±Ρ€Π°Π·Π°. Π­Ρ‚ΠΎΡ‚ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ ΠΌΡ‹Β Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°Β Ρ‚ΠΎΡ‚ самый package-lock.json. Если ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ мСняСтся состав ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Β β€” у нас собираСтся Π½ΠΎΠ²Ρ‹ΠΉ Docker-ΠΎΠ±Ρ€Π°Π·. Π’Β Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΎΠ½Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для развСртывания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с собранным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. БСйчас этого Π½Π΅Ρ‚, Π½ΠΎΒ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π°Β ΠΌΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π²Β Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся в нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΒ Π΄Π°Π²Π½ΠΎ обслуТиваСт ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

РСзюмС

ΠŸΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽ всСх Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ Windows, но это Π½Π΅Β ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡΒ Π½Π΅Β ΡƒΠΌΠ΅ΡŽ Π΅Π΅Β Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ Opensource-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉΒ β€” это Linux-стСк. Π’Ρ‹Β Ρ…ΠΎΡ€ΠΎΡˆΠΎ сэкономитС на рСсурсах. На мой взгляд, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Π·Π°Β Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Open Source Π½Π°Β Linux с мощным ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ спикСра АлСксандра Π‘ΠΈΠ½Ρ‡ΠΈΠ½ΠΎΠ²Π° Π½Π°Β GitHub.

DevOps ConfΒ β€” это конфСрСнция ΠΏΠΎΒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ процСссов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования и эксплуатации для профСссионалов от профСссионалов. ИмСнно поэтому ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΎΒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ рассказывал АлСксандр? Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, а в дСнь выступлСния ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π΄Π²Π° ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°. На DevOps Conf на РИВ++ 27Β ΠΈΒ 28 мая Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ большС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… кСйсов ΠΎΡ‚Β ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ². Π•Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠΎΡ‡ΠΈΡ‚ΡŒ Π² послСдний Π²Π°Π³ΠΎΠ½ ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΈΠ»ΠΈ Π½Π΅ Ρ‚ΠΎΡ€ΠΎΠΏΡΡΡŒ Π·Π°Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ»Π΅Ρ‚. ВстрСтимся Π²Β Π‘ΠΊΠΎΠ»ΠΊΠΎΠ²ΠΎ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com