Как Dark Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° 50 мс

Как Dark Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° 50 мс

Π§Π΅ΠΌ быстрСС процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π΅ΠΌ быстрСС развиваСтся тСхнологичСская компания.

К соТалСнию, соврСмСнныС прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² нас β€” наши систСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡ€ΠΈ этом Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ простоям ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°ΠΌ. Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΈΡ… систСмах становится слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слоТных ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки Π΄Π°ΠΆΠ΅ Π² ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ….

Π­Ρ‚ΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΡƒΠ·ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ, ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ часто Π½Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ для этого Ρ†Π΅Π»Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DevOps.

ΠžΡ‚ скорости этих ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² зависит ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π£ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 5–10 ΠΌΠΈΠ½ΡƒΡ‚, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ всС дСлаСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ дольшС, ΠΈ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ развСртывания трСбуСтся нСсколько часов.

Π’ Dark Π½Π° это ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ 50 мс. ΠŸΡΡ‚ΡŒΠ΄Π΅ΡΡΡ‚. ΠœΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄. Dark β€” это комплСксноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с языком программирования, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ инфраструктурой, созданноС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки, ΠΈ всС аспСкты Dark, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сам язык, построСны с Π²ΠΈΠ΄ΠΎΠΌ Π½Π° бСзопасноС ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅?

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

ВнСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² git
  • ВнСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π·Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ тСстированиС для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π±Π΅Π·

ΠŸΡƒΠ»-рСквСст

  • ΠšΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° github
  • ΠŸΡƒΠ»-рСквСст
  • Π‘Π±ΠΎΡ€ΠΊΠ° CI выполняСтся автоматичСски Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅
  • РСвью ΠΊΠΎΠ΄Π°
  • Π•Ρ‰Π΅ нСсколько Ρ€Π΅Π²ΡŒΡŽ, Ссли Π½ΡƒΠΆΠ½ΠΎ
  • БлияниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с мастСром git.

CI выполняСтся Π½Π° мастСрС

  • Установка Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-зависимостСй Ρ‡Π΅Ρ€Π΅Π· npm
  • Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ оптимизация рСсурсов HTML+CSS+JS
  • ΠŸΡ€ΠΎΠ³ΠΎΠ½ Π²ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… тСстов
  • Установка зависимостСй Python ΠΈΠ· PyPI
  • ΠŸΡ€ΠΎΠ³ΠΎΠ½ Π² бэкСндС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… тСстов
  • ВСстированиС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ…
  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° рСсурсов Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π² CDN
  • Π‘Π±ΠΎΡ€ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python
  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² рССстр
  • ОбновлСниС манифСста Kubernetes

Π—Π°ΠΌΠ΅Π½Π° старого ΠΊΠΎΠ΄Π° Π½ΠΎΠ²Ρ‹ΠΌ

  • Kubernetes запускаСт нСсколько экзСмпляров Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
  • Kubernetes ΠΆΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ экзСмпляры стали работоспособными
  • Kubernetes добавляСт экзСмпляры Π² балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ HTTP
  • Kubernetes ΠΆΠ΄Π΅Ρ‚, ΠΏΠΎΠΊΠ° старыС экзСмпляры пСрСстанут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
  • Kubernetes останавливаСт старыС экзСмпляры
  • Kubernetes повторяСт эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½ΠΎΠ²Ρ‹Π΅ экзСмпляры Π½Π΅ замСнят всС старыС

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

  • Новый ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сСбя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ
  • Новый ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ для 10% ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ бизнСс-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ
  • Новый ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ для 50% ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ бизнСс-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ
  • Новый ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ для 100% ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ бизнСс-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ
  • НаконСц, Π²Ρ‹ повторяСтС всю ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старый ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ

ΠŸΡ€ΠΎΡ†Π΅ΡΡ зависит ΠΎΡ‚ инструмСнтов, языка ΠΈ использования Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвисы, Π½ΠΎ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… ΠΎΠ½ выглядит Ρ‚Π°ΠΊ. Π― Π½Π΅ упомянул развСртывания с ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для этого Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ Π½ΠΈΠΆΠ΅ я расскаТу, ΠΊΠ°ΠΊ с этим разбираСтся Dark.

Π—Π΄Π΅ΡΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… запросто ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ, ΡΠ±ΠΎΠΈΡ‚ΡŒ, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ систСму.

А Ρ€Π°Π· эти ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда созданы для особого случая, Π½Π° Π½ΠΈΡ… слоТно ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Dockerfile Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· дСсятков сСрвисов ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ спСциалист Π² отпускС.

Π₯ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· этих шагов Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ. Они Π½ΡƒΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π»ΠΈ ΠΊΠΎΠ΄ сразу для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ эти процСссы Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ шаг, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ развСртываСтся ΠΊΠΎΠ΄ (старый замСняСтся Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ), Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стал просто лишним риском.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½. Команда, создавшая Π΅Π³ΠΎ, Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π΅Π½Π΅Π³ для быстрого развСртывания. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ развСртывания ΠΊΡƒΠ΄Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅.

РСализация Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки Π² Dark

НСпрСрывная поставка Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Π° для Dark, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ с самого Π½Π°Ρ‡Π°Π»Π° Π½Π°Ρ†Π΅Π»ΠΈΠ»ΠΈΡΡŒ Π½Π° врСмя мСньшС сСкунды. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Π»ΠΈ всС шаги ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС лишнСС, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠ²Π΅Π»ΠΈ Π΄ΠΎ ΡƒΠΌΠ°. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ удаляли шаги.

ДТСсси Π€Ρ€Π°Π·Π΅Π»ΡŒ (Jessie Frazelle) ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»Π° Π½ΠΎΠ²ΠΎΠ΅ слово deployless (Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ развСртывания) Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Future of Software Development Π² РСйкьявикС

ΠœΡ‹ сразу Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Dark Π±ΡƒΠ΄Π΅Ρ‚ основан Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Β«deploylessΒ» (спасибо ДТСсси Π€Ρ€Π°Π·Π΅Π»ΡŒ Π·Π° Π½Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ·ΠΌ). Deployless ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ любой ΠΊΠΎΠ΄ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ развСртываСтся ΠΈ Π³ΠΎΡ‚ΠΎΠ² ΠΊ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Π½Π΅ пропустим нСисправный ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ бСзопасности я ΠΎΠΏΠΈΡˆΡƒ Π½ΠΈΠΆΠ΅).

На дСмонстрации Dark нас часто ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΡ…ΠΈΡ‚Ρ€ΠΈΠ»ΠΈΡΡŒ Ρ‚Π°ΠΊ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅. Π‘Ρ‚Ρ€Π°Π½Π½Ρ‹ΠΉ вопрос. Π›ΡŽΠ΄ΠΈ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π΄ΡƒΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡƒΠΏΠ΅Ρ€Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, которая сравниваСт ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ, ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, запускаСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Π½Π° Ρ…ΠΎΠ»ΠΎΠ΄Π½ΡƒΡŽ запускаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ всС Π² Ρ‚Π°ΠΊΠΎΠΌ Π΄ΡƒΡ…Π΅, β€” ΠΈ всС это Π·Π° 50 мс. Вряд Π»ΠΈ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Но ΠΌΡ‹ создали ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ развСртывания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ всС это ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Dark запускаСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Допустим, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ HTTP ΠΈΠ»ΠΈ событий. ΠœΡ‹ отправляСм diff Π² абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ наш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ сСрвСры) Π½Π° наши сСрвСры, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСм этот ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ запросы. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ выглядит просто ΠΊΠ°ΠΊ скромная запись Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΈ элСмСнтарная. Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ происходит Ρ‚Π°ΠΊ быстро, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ самый ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ.

Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Dark компилятор инфраструктуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΡƒΡŽ инфраструктуру для высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ надСТности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠœΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ дСнСтся.

БСзопасноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

Код Π² Dark ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Dark. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ допускаСт синтаксичСских ошибок. По сути, Π² Dark Π΄Π°ΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π΅Ρ‚. Пока Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ тСкст, ΠΌΡ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с абстрактным синтаксичСским Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ (AST), ΠΊΠ°ΠΊ Paredit, Sketch-n-Sketch, Tofu, Prune ΠΈ MPS.

Π£ любого Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Dark Π΅ΡΡ‚ΡŒ допустимая сСмантика выполнСния, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΊΠ°ΠΊ typed holes Π² Hazel. НапримСр, Ссли Π²Ρ‹ мСняСтС Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ ΡΡ‚Π°Ρ€ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠΊΠ° новая Π½Π΅ станСт ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Dark Π΅ΡΡ‚ΡŒ свой смысл, поэтому Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π Π΅ΠΆΠΈΠΌΡ‹ рСдактирования

Π’Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² Dark Π² Π΄Π²ΡƒΡ… случаях. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ: Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ СдинствСнным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. НапримСр, ΠΎΠ½ Π² REPL, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΊ Π½Π΅ΠΌΡƒ доступ, ΠΈΠ»ΠΈ это Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ HTTP, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· всяких ΠΌΠ΅Ρ€ прСдостороТности, ΠΈ сСйчас Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Вторая ситуация: ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΠ°), Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Для этого ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌ вСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ структурированныС инструмСнты для Π΅Π³ΠΎ рСдактирования. О структурных инструмСнтах расскаТу Π½ΠΈΠΆΠ΅: ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² HTTP ΠΈ событий, мощная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ управлСния вСрсиями для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Один ΠΈΠ· способов ΡƒΠ±Ρ€Π°Ρ‚ΡŒ лишнюю ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Dark β€” ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡: Π·Π°ΠΌΠ΅Π½Π° локальной срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Π΅Ρ‚ΠΊΠΈ git, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ выпуск Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выполняСтся Π² нашСм Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π·Π° ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Он создаСт пустоС пространство для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ прСдоставляСт элСмСнты управлСния доступом ΠΊ старому ΠΈ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для постСпСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ встроСны Π² язык Dark, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ свою Π·Π°Π΄Π°Ρ‡Ρƒ β€” Ссли условиС Π² ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ старый Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. БСгодня ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ слоТно ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС использовали ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ вСрсии инструмСнтов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (срСдства форматирования ΠΊΠΎΠ΄Π°, Π»ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, диспСтчСры ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², компиляторы, прСпроцСссоры, инструмСнты тСстирования ΠΈ Ρ‚. Π΄.) Π‘ Dark Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ зависимости локально, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ локальной установкой Docker ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ хотя Π±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ равСнства ΠΌΠ΅ΠΆΠ΄Ρƒ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ΠΎΠΌ. Учитывая, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ равСнство всС Ρ€Π°Π²Π½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Ρ‡Ρ‚ΠΎ стрСмимся ΠΊ Π½Π΅ΠΌΡƒ.

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ срСду, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π² Dark ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ пСсочницу Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, которая замСняСт срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пСсочницу для Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΠΎΠ½Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…), хотя ΠΏΠΎΠΊΠ° это Π½Π΅ каТСтся Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠΆ Π²Π°ΠΆΠ½Ρ‹ΠΌ.

Π’Π΅Ρ‚ΠΊΠΈ ΠΈ развСртывания

БСйчас Π΅ΡΡ‚ΡŒ нСсколько способов Π²Π²ΠΎΠ΄Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² систСмы: Π²Π΅Ρ‚ΠΊΠΈ git, этап развСртывания ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Они Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса: git β€” Π½Π° этапах ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ β€” Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° со старого ΠΊΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ, Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ выпуска Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘Π°ΠΌΡ‹ΠΉ эффСктивный способ β€” ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π·Π°ΠΎΠ΄Π½ΠΎ самый простой для понимания ΠΈ использования). Π‘ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ОсобСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ β€” Ссли ΠΌΡ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚ΠΎ шаг ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° сСрвСров Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создаСт лишниС риски.

Git слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, особСнно Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ, ΠΈ это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ Π΅Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚, Π½ΠΎ Π·Π°Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ. ΠœΡ‹ сгладили ΠΌΠ½ΠΎΠ³ΠΈΠ΅ нСдостатки git. Dark рСдактируСтся Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² стилС Google Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ слияниС.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π»Π΅ΠΆΠ°Ρ‚ Π² основС бСзопасного развСртывания. ВмСстС с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ развСртываниями ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстро Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚Ρ‹ Π² ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… с Π½ΠΈΠ·ΠΊΠΈΠΌ риском вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€ΡƒΡˆΠΈΡ‚ΡŒ систСму.

ВСрсионированиС

Для измСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ вСрсионированиС. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Dark создаСт Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эту Π²Π΅Ρ€ΡΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ HTTP ΠΈΠ»ΠΈ событий. (Если это функция Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² Π³Ρ€Π°Ρ„Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ создаСтся новая вСрсия ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это чСрСсчур, Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ΡΡ, Ссли Π²Ρ‹ ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ этого Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅.)

По этим ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΌΡ‹ вСрсионируСм Ρ‚ΠΈΠΏΡ‹. О нашСй систСмС Ρ‚ΠΈΠΏΠΎΠ² ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказывали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ постС.

Благодаря Π²Π΅Ρ€ΡΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ постСпСнно. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ сразу Π²Π½ΠΎΡΠΈΡ‚ΡŒ всС измСнСния Π² прилоТСния (Π½ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ инструмСнты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅).

Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ бСзопаснСС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ всСго сразу, ΠΊΠ°ΠΊ это происходит сСйчас.

НовыС вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Когда Π²Ρ‹ обновляСтС ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Dark, ΠΌΡ‹ Π½Π΅ замСняСм сразу использованиС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° Π²ΠΎ всСй Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ нСбСзопасно. Код ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‡Ρ‚ΠΎ использовал, Π° Π²Ρ‹ обновляСтС использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ случая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ.

Как Dark Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° 50 мс
Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ части автоматичСского процСсса Π² Dark, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π²Π΅ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Dict::get. Dict::get_v0 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π» Ρ‚ΠΈΠΏ Any (ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ отказываСмся), Π° Dict::get_v1 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Option.

ΠœΡ‹ часто прСдоставляСм Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ старыС вСрсии. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ со старыми вСрсиями Π² ΠΊΠΎΠ΄Π΅ сохранят доступ ΠΊ Π½ΠΈΠΌ, Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ смогут ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. ΠœΡ‹ собираСмся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ инструмСнты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ со старых вСрсий Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Π·Π° 1 шаг, ΠΈ ΠΎΠΏΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Dark Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: Ρ€Π°Π· ΠΌΡ‹ выполняСм ваш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сами Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ вСрсии, сравнивая Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Π½ΠΎΠ²Ρ‹Ρ… ΠΈ старых запросов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΎΠ± измСнСниях. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто выполняСтся Π²ΡΠ»Π΅ΠΏΡƒΡŽ (ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования Π² цСлях бСзопасности), прСдставляСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС рисков ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ автоматичСски.

НовыС вСрсии Dark

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с Python 2 Π½Π° Python 3 растянулся Π½Π° дСсятилСтиС ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ остаСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π Π°Π· ΠΌΡ‹ создаСм Dark для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эти измСнСния языка.

Когда ΠΌΡ‹ вносим нСбольшиС измСнСния Π² язык, ΠΌΡ‹ создаСм Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Dark. Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ ΠΊΠΎΠ΄ остаСтся Π² старой вСрсии Dark, Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии. Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Dark ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, учитывая, Ρ‡Ρ‚ΠΎ Dark появился совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ. МногиС измСнСния Π² языкС ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎΠ΅ вСрсионированиС языка позволяСт Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ обновлСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΡΠΏΠ΅ΡˆΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ языкС, ΠΏΠΎΠΊΠ° Ρƒ нас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ большС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

Для бСзопасной ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… сущСствуСт стандартная Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°:

  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ старого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ²
  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚
  • Π£Π΄Π°Π»ΠΈΡ‚ΡŒ старый доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

Π’ ΠΈΡ‚ΠΎΠ³Π΅ миграция Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… затягиваСтся ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов. И Ρƒ нас Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ схСмы, вСдь Π΄Π°ΠΆΠ΅ простыС Π·Π°Π΄Π°Ρ‡ΠΈ, Π²Ρ€ΠΎΠ΄Π΅ исправлСния ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ столбца, Π½Π΅ стоят Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… усилий.

Π£ Dark Π΅ΡΡ‚ΡŒ эффСктивная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, которая (ΠΌΡ‹ надССмся) Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ упростит процСсс, Ρ‡Ρ‚ΠΎ Π²Ρ‹ пСрСстанСтС Π΅Π³ΠΎ Π±ΠΎΡΡ‚ΡŒΡΡ. ВсС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Dark (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°Ρ€ Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β» ΠΈΠ»ΠΈ постоянныС Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ. Π§Ρ‚ΠΎΠ±Ρ‹ пСрСнСсти Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ просто присваиваСтС Π΅ΠΌΡƒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ Π½Π°ΠΊΠ°Ρ‚Π° для прСобразования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

Доступ ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² Dark осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· вСрсионированныС ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. НапримСр, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Users ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Users-v0. Когда создаСтся новая вСрсия с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, имя мСняСтся Π½Π° Users-v1. Если Π΄Π°Π½Π½Ρ‹Π΅ сохранСны Ρ‡Π΅Ρ€Π΅Π· Users-v0, Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Users-v1, примСняСтся функция Π½Π°ΠΊΠ°Ρ‚Π°. Если Π΄Π°Π½Π½Ρ‹Π΅ сохранСны Ρ‡Π΅Ρ€Π΅Π· Users-v1, Π° Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Users-v0, примСняСтся функция ΠΎΡ‚ΠΊΠ°Ρ‚Π°.

Как Dark Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° 50 мс
Π­ΠΊΡ€Π°Π½ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ старой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, выраТСниями Π½Π°ΠΊΠ°Ρ‚Π° ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ инструкциями для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊ Users-v0 Π² Π²Π΅Ρ€ΡΠΈΡŽ Users-v1. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ HTTP Π·Π° Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риски, Π° Π΅Ρ‰Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ оТидалось. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Users-v0 Π½Π΅ останСтся, Dark ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всС ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ· старого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² Π½ΠΎΠ²Ρ‹ΠΉ. Π’Ρ‹ этого Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅.

ВСстированиС

Dark β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ нСизмСняСмыми значСниями, поэтому ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ тСстирования Ρƒ Π½Π΅Π³ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ языками с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Но Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ€Π°Π²Π½ΠΎ Π½Π°Π΄ΠΎ.
Π’ Dark Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ автоматичСски запускаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прогоняСт эти тСсты для всСх ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ статичСских Ρ‚ΠΈΠΏΠΎΠ² автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ„Π°Π·Π·ΠΈΠ½Π³ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π±Π°Π³ΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Dark выполняСт Π²Π°ΡˆΡƒ инфраструктуру Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, Π° это ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ возмоТности. ΠœΡ‹ автоматичСски сохраняСм HTTP-запросы Π² инфраструктурС Dark (ΠΏΠΎΠΊΠ° ΠΌΡ‹ сохраняСм всС запросы, Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ). ΠœΡ‹ тСстируСм ΠΏΠΎ Π½ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты, ΠΈ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ интСрСсныС запросы Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ тСсты.

ΠžΡ‚ Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ избавились

Π Π°Π· Ρƒ нас Π½Π΅Ρ‚ развСртывания, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΊΠΎΠ»ΠΎ 60% ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° развСртывания остаСтся Π·Π° Π±ΠΎΡ€Ρ‚ΠΎΠΌ. Нам Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π²Π΅Ρ‚ΠΊΠΈ git ΠΈΠ»ΠΈ ΠΏΡƒΠ»-рСквСсты, сборка бэкСнд-рСсурсов ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° рСсурсов ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² рССстры ΠΈΠ»ΠΈ шаги развСртывания Π² Kubernetes.

Как Dark Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π° 50 мс
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ стандартного ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки (слСва) ΠΈ нСпрСрывная поставка Dark (справа). Π’ Dark поставка состоит ΠΈΠ· 6 шагов ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° традиционная вСрсия Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 35 шагов ΠΈ 3 Ρ†ΠΈΠΊΠ»Π°.

Π’ Dark Π² Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ всСго 6 шагов ΠΈ 1 Ρ†ΠΈΠΊΠ» (шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ нСсколько Ρ€Π°Π·), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ соврСмСнный ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки состоит ΠΈΠ· 35 шагов ΠΈ 3 Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’ Dark тСсты Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ автоматичСски, ΠΈ Π²Ρ‹ этого Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅; зависимости ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ автоматичСски; всС, Ρ‡Ρ‚ΠΎ связано с git ΠΈΠ»ΠΈ Github, большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ; ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ, Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Docker Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ; Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² Kubernetes большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π”Π°ΠΆΠ΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ шаги Π² Dark стали ΠΏΡ€ΠΎΡ‰Π΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ дСйствиСм, Π½Π΅ приходится Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· вСсь ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ развСртывания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старый ΠΊΠΎΠ΄.

ΠœΡ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π»ΠΈ упростили поставку ΠΊΠΎΠ΄Π°, сократив врСмя ΠΈ риски Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки. А Π΅Ρ‰Π΅ ΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростили ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, тСстированиС, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями, установку зависимостСй, равСнство ΠΌΠ΅ΠΆΠ΄Ρƒ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ΠΎΠΌ ΠΈ быстрыС ΠΈ бСзопасныС Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Ρ‹ вСрсий языка.

Π― ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽ Π½Π° вопросы ΠΎΠ± этом Π½Π° HackerNews.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± устройствС Dark, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Dark, ΠΏΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° нас Π² Twitter (ΠΈΠ»ΠΈ Π½Π° мСня) ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° Π±Π΅Ρ‚Π°-Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ увСдомлСния ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… постах. Если Π΅Π΄Π΅Ρ‚Π΅ Π½Π° StrangeLoop Π² сСнтябрС, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ Π½Π°ΠΌ Π½Π° запуск.

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