Postgres-Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ β„–5: Β«PostgreSQL ΠΈ Kubernetes. CI/CD. Автоматизация тСстирования»

Postgres-Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ β„–5: «PostgreSQL ΠΈ Kubernetes. CI/CD. Автоматизация тСстирования»

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΈΠ½ΡƒΠ²ΡˆΠ΅Π³ΠΎ Π³ΠΎΠ΄Π° состоялся ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ прямой эфир российского PostgreSQL-сообщСства #RuPostgres, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΡΠΎΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ» с тСхничСским Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Β«Π€Π»Π°Π½Ρ‚Π°Β» Π”ΠΌΠΈΡ‚Ρ€ΠΈΠ΅ΠΌ Бтоляровым ΠΏΡ€ΠΎ эту Π‘Π£Π‘Π” Π² контСкстС Kubernetes.

ΠœΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ стСнограмму основной части этой дискуссии, Π° Π½Π° YouTube-ΠΊΠ°Π½Π°Π»Π΅ сообщСства ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° полная видСозапись:

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Kubernetes

НБ: ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ сСгодня ΠΏΡ€ΠΎ VACUUM ΠΈ CHECKPOINT’Ρ‹. Π₯ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ Kubernetes. Π― знаю, Ρ‡Ρ‚ΠΎ Ρƒ тСбя ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Π» Ρ‚Π²ΠΎΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΠΆΠ΅ кусочками пСрСсматривал… Π”Π°Π²Π°ΠΉ сразу с мСста Π² ΠΊΠ°Ρ€ΡŒΠ΅Ρ€: Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Postgres ΠΈΠ»ΠΈ MySQL Π² K8s?

Π”Π‘: ΠžΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° этот вопрос Π½Π΅Ρ‚ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ. Но Π²ΠΎΠΎΠ±Ρ‰Π΅, это простота ΠΈ удобство… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅. ВсСм вСдь хочСтся managed-сСрвисов.

НБ: Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ RDS, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ сСбя?

Π”Π‘: Π”Π°: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ RDS, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

НБ: Β«Π“Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎΒ» β€” это Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… компаниях всё располоТСно Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах. А ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚ΠΎΠ³Π΄Π°, Ссли это большая компания, Π½Π΅ Π²Π·ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅? НапримСр, Π΅ΡΡ‚ΡŒ Ρƒ Nutanix свои Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ (VMware…) β€” Ρ‚ΠΎΡ‚ ΠΆΠ΅ Β«RDS, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ сСбя».

Π”Π‘: Но это ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Π·ΡΡ‚ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… условиях. А Ссли Ρ€Π΅Ρ‡ΡŒ ΠΏΡ€ΠΎ Kubernetes, Ρ‚ΠΎ здСсь ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ инфраструктуры (которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² K8s). По сути это стандарт для API ΠΊ облаку…

НБ: Π•Ρ‰Ρ‘ ΠΈ бСсплатно!

Π”Π‘: Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ. Π‘Π΅ΡΠΏΠ»Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π° Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ сСгмСнту Ρ€Ρ‹Π½ΠΊΠ°. Π’Π°ΠΆΠ½ΠΎ другоС… Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, вспоминаСшь Π΄ΠΎΠΊΠ»Π°Π΄ Β«Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ KubernetesΒ»?

НБ: Π”Π°.

Π”Π‘: Π― понял, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ восприняли ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ. Π§Π°ΡΡ‚ΡŒ людСй ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΡŽ: «РСбята, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ всСми Π‘Π” Π² Kubernetes!Β», β€” Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ это всё ΠΆΡƒΡ‚ΠΊΠΈΠ΅ вСлосипСды. А я-Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ: Β«Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ. БСйчас Π΅Ρ…Π°Ρ‚ΡŒ Π±Π°Π·Π°ΠΌΠΈ Π² Kubernetes? Production’ΠΎΠΌ? Ну, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ Π»ΡŽΠ±ΠΈΡ‚Π΅β€¦ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ. А Π²ΠΎΡ‚ для dev’Π° β€” ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ. Для dev’Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ создания/удалСния ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉΒ».

НБ: Под dev’ΠΎΠΌ Ρ‚Ρ‹ имССшь Π² Π²ΠΈΠ΄Ρƒ всС окруТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ prod? Staging, QA…

Π”Π‘: Если Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ perf-стСнды, Ρ‚ΠΎ ΡƒΠΆΠ΅, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ трСбования спСцифичны. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ особыС случаи, Π³Π΄Π΅ Π½Π° staging Π½ΡƒΠΆΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ большая Π‘Π”, Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, нСт… Если это статичноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰Π΅Π΅, Ρ‚ΠΎ какая Π²Ρ‹Π³ΠΎΠ΄Π° ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° располоТСна Π² K8s?

НБ: Никакой. Но Π³Π΄Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ статичныС окруТСния? Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ устарСло ΡƒΠΆΠ΅ Π·Π°Π²Ρ‚Ρ€Π°.

Π”Π‘: Staging ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ статичным. Π£ нас Π΅ΡΡ‚ΡŒ клиСнты…

НБ: Π”Π°, Ρƒ мСня Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ссли Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° Π½Π° 10 Π’Π±, Π° staging β€” 200 Гб…

Π”Π‘: Π£ мСня Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ кСйс! На staging находится prod’овая Π±Π°Π·Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ вносят измСнСния. И прСдусмотрСна ΠΊΠ½ΠΎΠΏΠΊΠ°: Β«Π²Ρ‹ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Π² productionΒ». Π­Ρ‚ΠΈ измСнСния β€” Π΄Π΅Π»ΡŒΡ‚Ρ‹ β€” Π΄ΠΎΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ (каТСтся, просто ΠΏΠΎ API’шкС ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ) Π² production. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ экзотичный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

НБ: Π― Π²ΠΈΠ΄Π΅Π» стартапы Π² Π”ΠΎΠ»ΠΈΠ½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сидят Π² RDS’Π΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Heroku Π΅Ρ‰Ρ‘ β€” это истории 2-3-Π»Π΅Ρ‚Π½Π΅ΠΉ давности, β€” ΠΈ ΠΎΠ½ΠΈ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°ΠΌΠΏ сСбС Π½Π° Π»Π°ΠΏΡ‚ΠΎΠΏ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° ΠΏΠΎΠΊΠ° всСго лишь 80 Π“Π±, Π° Π½Π° Π»Π°ΠΏΡ‚ΠΎΠΏΠ΅ Π΅ΡΡ‚ΡŒ мСсто. ΠŸΠΎΡ‚ΠΎΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠΊΡƒΠΏΠ°ΡŽΡ‚ диски ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ 3 Π±Π°Π·Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вСсти. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅. Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ Π½Π΅ боятся prod ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² staging β€” ΠΎΡ‡Π΅Π½ΡŒ сильно зависит ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Но Π²ΠΈΠ΄Π΅Π» ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ боятся, ΠΈ Ρ‡Ρ‚ΠΎ часто Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ€ΡƒΠΊ. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ этой Ρ‚Π΅ΠΌΠ΅, хочСтся ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎ Kubernetes. Π― ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ понимаю, Ρ‡Ρ‚ΠΎ Π² prod’Π΅ ΠΏΠΎΠΊΠ° Π½ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ?

Π”Π‘: Π£ нас нСбольшиС Π±Π°Π·Ρ‹ Π΅ΡΡ‚ΡŒ Π² prod’Π΅. Π Π΅Ρ‡ΡŒ ΠΏΡ€ΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π² дСсятки Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ ΠΈ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ сСрвисы, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… лСнь Π±Ρ‹Π»ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ (Π΄Π° ΠΈ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ потрСбности). И ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ Kubernetes’ΠΎΠΌ Π΅ΡΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π­Ρ‚Π° Π±Π°Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС β€” условно Π² VMware, ΠΏΠΎΠ²Π΅Ρ€Ρ… Π‘Π₯Π”. ΠœΡ‹ Π΅Ρ‘ помСстили Π² PV ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π΅Ρ‘ с ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

НБ: Π‘Π°Π·Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π΄ΠΎ 100 Π“Π±, Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… дисках ΠΈ ΠΏΡ€ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ сСти ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΠ°Ρ‚Π°Ρ‚ΡŒ Π·Π° нСсколько ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ? Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π² 1 Π“Π± Π² сСкунду β€” это ΡƒΠΆΠ΅ Π½Π΅ экзотика.

Π”Π‘: Π”Π°, для Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ это Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

НБ: ОкСй, ΠΏΡ€ΠΎ prod ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ. А Ссли ΠΌΡ‹ рассматриваСм Kubernetes для Π½Π΅-prod-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ β€” ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ? Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π² Zalando Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π² Crunchy пилят, Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. И Π΅ΡΡ‚ΡŒ OnGres β€” это наш Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Alvaro ΠΈΠ· Испании: ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠΎ сути Π½Π΅ просто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Π° Ρ†Π΅Π»Ρ‹ΠΉ дистрибутив (StackGres), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΈΠΌΠΎ самого Postgres’Π° Π΅Ρ‰Ρ‘ ΠΈ бэкап Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡ…Π°Ρ‚ΡŒ, прокси Envoy…

Π”Π‘: Envoy для Ρ‡Π΅Π³ΠΎ? Балансировки ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Postgres?

НБ: Π”Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ это видят ΠΊΠ°ΠΊ: Ссли Π²Π·ΡΡ‚ΡŒ Linux-дистрибутив ΠΈ ядро, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ PostgreSQL β€” это ядро, Π° ΠΎΠ½ΠΈ хотят ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ дистрибутив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π΅Π½ ΠΊ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌ ΠΈ ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡ Π² Kubernetes. Они ΡΡ‚Ρ‹ΠΊΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (бэкапы ΠΈ Ρ‚.ΠΏ.) ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ.

Π”Π‘: ΠžΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎ! По сути это софт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой managed Postgres.

НБ: Π£ Linux-дистрибутивов Π²Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΎΡΡŒ. А Ρƒ Π½ΠΈΡ… идСя, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π² Kubernetes Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π― знаю, Ρ‡Ρ‚ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Zalando ΠΌΡ‹ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ завязку Π½Π° AWS ΠΈ это ΡƒΠΆΠ΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. НС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ завязки Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ инфраструктуру β€” Π² Ρ‡Ρ‘ΠΌ Ρ‚ΠΎΠ³Π΄Π° смысл?

Π”Π‘: НС знаю, Π² ΠΊΠ°ΠΊΠΎΠΉ ситуации ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Zalando завязался, Π½ΠΎ Π² Kubernetes сСйчас storage сдСлан Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ нСльзя generic-способом ΡΠ½ΡΡ‚ΡŒ дисковый бэкап. НСдавно Π² стандартС β€” Π² послСднСй вСрсии спСцификации CSI β€” сдСлали Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ², Π½ΠΎ Π³Π΄Π΅ ΠΎΠ½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°? ЧСстно, всё Π΅Ρ‰Ρ‘ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ сыроС… ΠœΡ‹ ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ CSI ΠΏΠΎΠ²Π΅Ρ€Ρ… AWS, GCE, Azure, vSphere, Π½ΠΎ Ρ‡ΡƒΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

НБ: ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈ приходится ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°Π²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° инфраструктуру. Π”ΡƒΠΌΠ°ΡŽ, это Π΅Ρ‰Ρ‘ продолТаСтся ранняя стадия β€” ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ роста. Вопрос: Ρ‡Ρ‚ΠΎ Π±Ρ‹ Ρ‚Ρ‹ посовСтовал Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ PgSQL Π² K8s? Какой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ?

Π”Π‘: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Postgres для нас β€” это 3%. Π£ нас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΡ‡Π΅Π½ΡŒ большой список Ρ€Π°Π·Π½ΠΎΠ³ΠΎ софта Π² Kubernetes, Π½Π΅ Π±ΡƒΠ΄Ρƒ Π΄Π°ΠΆΠ΅ всё ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ. НапримСр, Elasticsearch. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² β€” ΠΊΡƒΡ‡Π°: ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π΅Ρ‚. ΠœΡ‹ для сСбя составили трСбования, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ воспринимали Π΅Π³ΠΎ Π²ΡΠ΅Ρ€ΡŒΡ‘Π·. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ для Kubernetes β€” Π½Π΅ Π² Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² условиях Amazon’а»… По Ρ„Π°ΠΊΡ‚Ρƒ ΠΌΡ‹ достаточно массово (= ΠΏΠΎΡ‡Ρ‚ΠΈ Ρƒ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ СдинствСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ β€” для Redis (скоро ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈ ΠΎ Π½Ρ‘ΠΌ).

НБ: А для MySQL Ρ‚ΠΎΠΆΠ΅ Π½Π΅Ρ‚? Π― знаю, Ρ‡Ρ‚ΠΎ Percona… Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΈ MySQL, ΠΈ MongoDB, ΠΈ Postgres, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°ΠΏΠΈΠ»ΠΈΡ‚ΡŒ: для всСх Π±Π°Π·, для всСх ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ².

Π”Π‘: ΠœΡ‹ Π½Π΅ успСли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для MySQL. Для нас это сСйчас Π½Π΅ Π³Π»Π°Π²Π½Ρ‹ΠΉ фокус. MySQL Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² standalone. Π—Π°Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ссли моТСшь просто Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ БД… МоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с Postrges, Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ-простому.

НБ: Об этом Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π» вопрос. Π’ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°?

Π”Π‘: Π”Π°, Π² 100% Ρƒ нас PostgreSQL Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Пока Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ. ΠœΡ‹ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для Prometheus, для Redis. Π£ нас Π΅ΡΡ‚ΡŒ Π² ΠΏΠ»Π°Π½Π°Ρ… Π½Π°ΠΉΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для Elasticsearch β€” ΠΎΠ½ большС всСго Β«Π³ΠΎΡ€ΠΈΡ‚Β», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π΅Π³ΠΎ Π² 100% случаях ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Kubernetes. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ MongoDB Ρ‚ΠΎΠΆΠ΅ всСгда ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Kubernetes. Π’ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΊΠΈ β€” Π΅ΡΡ‚ΡŒ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этих случаях ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. А ΠΏΡ€ΠΎ Postgres ΠΌΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ смотрСли. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π·Π½Π°Π΅ΠΌ ΠΏΡ€ΠΎ сущСствованиС Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π½ΠΎ ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ Ρƒ нас standalone.

Π‘Π” для тСстирования Π² Kubernetes

НБ: Π”Π°Π²Π°ΠΉ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ Ρ‚Π΅ΠΌΠ΅ тСстирования. Как Ρ€Π°ΡΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ измСнСния Π² Π±Π°Π·Π΅ β€” с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния DevOps-пСрспСктивы. Π•ΡΡ‚ΡŒ микросСрвисы, ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·, всё врСмя Π³Π΄Π΅-Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ мСняСтся. Как ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ CI/CD, Ρ‡Ρ‚ΠΎΠ±Ρ‹ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π‘Π£Π‘Π” всё Π±Ρ‹Π»ΠΎ Π² порядкС. Какой Ρƒ тСбя ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?

Π”Π‘: НС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π•ΡΡ‚ΡŒ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” это Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°ΡΠΊΠ°Ρ‚Π°Ρ‚ΡŒ. Π’Ρ‹ сам упомянул, Ρ‡Ρ‚ΠΎ Π² компаниях ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ относятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ копия prod-Π±Π°Π·Ρ‹ Π±Ρ‹Π»Π° Π½Π° dev ΠΈ stage.

НБ: А Π² условиях GDPR, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΎΠ½ΠΈ относятся всё Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ аккуратно… ΠœΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π•Π²Ρ€ΠΎΠΏΠ΅ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ ΡˆΡ‚Ρ€Π°Ρ„ΠΎΠ²Π°Ρ‚ΡŒ.

Π”Π‘: Но Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ софт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°ΠΌΠΏ с production’Π° ΠΈ Π΅Π³ΠΎ обфусцируСт. ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ prod’ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (ΡΠ½Π°ΠΏΡˆΠΎΡ‚, Π΄Π°ΠΌΠΏ, бинарная копия…), Π½ΠΎ ΠΎΠ½ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅. ВмСсто этого ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ скрипты Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ: это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ фикстуры ΠΈΠ»ΠΈ просто скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±Π°Π·Ρƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°-Ρ‚ΠΎ какая: сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ создаётся Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·? И сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ?

ΠœΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ схСмС: Ссли Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ фикстурный Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… (минимальная вСрсия Π±Π°Π·Ρ‹), Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ…. Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ review-окруТСниях, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создали branch, Ρƒ нас развСрнулся экзСмпляр прилоТСния Β­β€” ΠΌΡ‹ Ρ‚ΡƒΠ΄Π° раскатываСм ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ Π±Π°Π·Ρƒ. Но Ρ…ΠΎΡ€ΠΎΡˆΠΎ получился ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° с production’Π° Ρ€Π°Π· Π² сутки (Π½ΠΎΡ‡ΡŒΡŽ) снимаСм Π΄Π°ΠΌΠΏ ΠΈ собираСм Π½Π° Π΅Π³ΠΎ основании Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с PostgreSQL ΠΈ MySQL с этими Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Если ΠΈΠ· этого ΠΎΠ±Ρ€Π°Π·Π° Π½Π°Π΄ΠΎ 50 Ρ€Π°Π· Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±Π°Π·Ρƒ, это дСлаСтся достаточно просто ΠΈ быстро.

НБ: ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ?

Π”Π‘: Π”Π°Π½Π½Ρ‹Π΅ хранятся прямо Π² Docker-ΠΎΠ±Ρ€Π°Π·Π΅. Π’.Π΅. Ρƒ нас Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, ΠΏΡƒΡΡ‚ΡŒ Π½Π° 100 Π“Π±. Благодаря слоям Π² Docker ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ быстро Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±Ρ€Π°Π· Π½ΡƒΠΆΠ½ΠΎΠ΅ количСство Ρ€Π°Π·. Бпособ Ρ‚ΡƒΠΏΠΎΠΉ, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ.

НБ: Π”Π°Π»ΡŒΡˆΠ΅, ΠΊΠΎΠ³Π΄Π° тСстируСтС, ΠΎΠ½ΠΎ прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ Docker’Π° мСняСтся, Π΄Π°? Copy-on-write Π²Π½ΡƒΡ‚Ρ€ΠΈ Docker’Π° β€” выбрасываСм ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ, всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Класс! И Π²Ρ‹ это ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ вовсю?

Π”Π‘: Π”Π°Π²Π½ΠΎ.

НБ: ΠœΡ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ занимаСмся. Волько ΠΌΡ‹ Π½Π΅ Docker’овский copy-on-write ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ, Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘.

Π”Π‘: Он Π½Π΅ generic. А Docker’Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ повсСмСстно.

НБ: По ΠΈΠ΄Π΅Π΅, Π΄Π°. Но Ρƒ нас Ρ‚ΠΎΠΆΠ΅ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами. Π—Π΄Π΅ΡΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠœΡ‹ со стороны Postgres’Π° Π½Π° всё это ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ смотрим. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я посмотрСл со стороны Docker’Π° ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ Ρƒ вас всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Ссли Π±Π°Π·Π° β€” огромная, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 Π’Π±, Ρ‚ΠΎ это ΡƒΠΆΠ΅ всё Π΄ΠΎΠ»Π³ΠΎ: ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΡ‡ΡŒΡŽ, ΠΈ Π·Π°ΠΏΠΈΡ…ΠΈΠ²Π°Ρ‚ΡŒ всё Π² Docker… А Ссли 5 Π’Π± Π·Π°ΠΏΠΈΡ…ΠΈΠ²Π°Ρ‚ΡŒ Π² Docker… Или всё Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ?

Π”Π‘: Какая Ρ€Π°Π·Π½ΠΈΡ†Π°: это ΠΆΠ΅ Π±Π»ΠΎΠ±Ρ‹, просто Π±ΠΈΡ‚Ρ‹ ΠΈ Π±Π°ΠΉΡ‚Ρ‹.

НБ: Π Π°Π·Π½ΠΈΡ†Π° такая: Π²Ρ‹ это Ρ‡Π΅Ρ€Π΅Π· dump ΠΈ restore Π΄Π΅Π»Π°Π΅Ρ‚Π΅?

Π”Π‘: БовсСм Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Бпособы Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ этого ΠΎΠ±Ρ€Π°Π·Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅.

НБ: Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΡ‹ сдСлали Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ вмСсто рСгулярной Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΌΡ‹ Π΅Π³ΠΎ постоянно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии. Он ΠΏΠΎ сути являСтся Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΎΠΉ, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ с мастСра Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Ρ…ΠΈΠ². Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ², ΠΊΡƒΠ΄Π° WAL’Ρ‹ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, Ρ‚Π°ΠΌ ΠΆΠ΅ бэкапы ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡβ€¦ Π­Ρ‚ΠΈ WAL’Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ»Π΅Ρ‚Π°ΡŽΡ‚ β€” с нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ (Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ 1-2 сСкунды) β€” Π΄ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°. Π‘ Π½Π΅Π³ΠΎ ΠΌΡ‹ Π»ΡŽΠ±Ρ‹ΠΌ способом ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌ β€” сСйчас ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρƒ нас ZFS.

Π”Π‘: Но с ZFS Π²Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ.

НБ: Π”Π°. Но Ρƒ ZFS Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ send: с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ ΠΈ Π΄Π°ΠΆΠ΅ (я это Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ тСстировал, но…) ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Π΅Π»ΡŒΡ‚Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя PGDATA. На самом Π΄Π΅Π»Π΅, Ρƒ нас Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π΅ особо рассматривали для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡. Π’ PostgreSQL Π΅ΡΡ‚ΡŒ pg_rewind, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΊ Β«ΡƒΠΌΠ½Ρ‹ΠΉΒ» rsync, ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСнялось. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сСрвСрами ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚ΠΌΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π·Π°Π΄ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅.

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

Π”Π‘: 50 Ρ€Π°Π· ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ 50 Spot’ΠΎΠ²Ρ‹Ρ… инстансов.

НБ: НСт, Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС всё Π΄Π΅Π»Π°Π΅ΠΌ.

Π”Π‘: Но ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½Ρ‘Ρ‚Π΅ 50 Ρ€Π°Π·, Ссли эта ΠΎΠ΄Π½Π° Π±Π°Π·Π°, скаТСм, тСрабайтовая. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ условно 256 Π“Π± RAM?

НБ: Π”Π°, памяти ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ β€” это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Но Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ. На production-машинС 96 ядСр ΠΈ 600 Π“Π±. ΠŸΡ€ΠΈ этом для Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 32 ядра (Π΄Π°ΠΆΠ΅ 16 ядСр сСйчас ΠΈΠ½ΠΎΠ³Π΄Π°) ΠΈ памяти 100-120 Π“Π±.

Π”Π‘: И Ρ‚ΡƒΠ΄Π° Π²Π»Π΅Π·Π°Π΅Ρ‚ 50 ΠΊΠΎΠΏΠΈΠΉ?

НБ: Π’Π°ΠΊ копия-Ρ‚ΠΎ ΠΎΠ΄Π½Π°, дальшС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ copy-on-write (ZFS’Π½Ρ‹ΠΉ)… РасскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π£ нас, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π°Π·Π° Π½Π° 10 Π’Π±. Диск для Π½Π΅Ρ‘ сдСлали, ZFS Π΅Ρ‰Ρ‘ сТал Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² Π½Π° 30-40. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ΅ тСстированиС, Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Π½Π΅ Π²Π°ΠΆΠ½ΠΎ: ΠΏΡƒΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎ 2 Ρ€Π°Π· Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½Π΅Π΅ β€” это ΠΎΠΊΠ΅ΠΉ.

ΠœΡ‹ Π΄Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ программистам, QA, DBA ΠΈ Ρ‚.ΠΏ. Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСстированиС Π² 1-2 ΠΏΠΎΡ‚ΠΎΠΊΠ°. НапримСр, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ. Она Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сразу 10 ядСр β€” Π΅ΠΉ Π½ΡƒΠΆΠ΅Π½ 1 бэкСнд Postgres’Π°, 1 ядро. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ запустится β€” ΠΌΠΎΠΆΠ΅Ρ‚, autovacuum Π΅Ρ‰Ρ‘ запустится, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ядро задСйствуСтся. Π£ нас Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ 16-32 ядСр, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ 10 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ‚.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ физичСски PGDATA одинаковая, получаСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠ±ΠΌΠ°Π½Ρ‹Π²Π°Π΅ΠΌ Postgres Π½Π° самом Π΄Π΅Π»Π΅. Ѐишка Π² Ρ‡Π΅ΠΌ: запускаСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 10 Postgres’ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ какая? Бтавят shared_buffers, допустим, Π² 25%. БоотвСтствСнно, это 200 Π“Π±. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ‚Ρ€Ρ‘Ρ… Ρ‚Π°ΠΊΠΈΡ… ΡƒΠΆΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡˆΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ кончится.

Но ΠΌΡ‹ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ поняли, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ: ΠΌΡ‹ ставим shared_buffers Π² 2 Π“Π±. Ρƒ PostgreSQL Π΅ΡΡ‚ΡŒ effective_cache_size, ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ влияСт Π½Π° ΠΏΠ»Π°Π½Ρ‹. Π•Π³ΠΎ ΠΌΡ‹ ΠΈ ставим Π² 0,5 Π’Π±. И Π΄Π°ΠΆΠ΅ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚: ΠΎΠ½ строит ΠΏΠ»Π°Π½Ρ‹, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ.

БоотвСтствСнно, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ тСстируСм ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΏΠ»Π°Π½Ρ‹ β€” ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° production. Π‘Π΅ΠΊΡƒΠ½Π΄Ρ‹ Ρ‚Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ (Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½Π΅Π΅), Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ считываСм, ΠΈ сами ΠΏΠ»Π°Π½Ρ‹ (ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°ΠΌ JOIN’Ρ‹ ΠΈ Ρ‚.ΠΏ.) ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π° production. И ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ мноТСство Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС.

Π”Π‘: Π’Ρ‹ Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Π΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ? ΠŸΠ΅Ρ€Π²Π°Ρ β€” это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° PostgreSQL. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” ΠΎΡ‡Π΅Π½ΡŒ частный, ΠΎΠ½ Π½Π΅ generic. Вторая β€” Kubernetes (ΠΈ всё, ΠΊΡƒΠ΄Π° сСйчас ΠΈΠ΄ΡƒΡ‚ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ) ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ мноТСство ΡƒΠ·Π»ΠΎΠ², ΠΈ эти ΡƒΠ·Π»Ρ‹ β€” эфСмСрныС. А Π² Ρ‚Π²ΠΎΡ‘ΠΌ случаС это stateful, пСрсистСнтный ΡƒΠ·Π΅Π». Π­Ρ‚ΠΈ Π²Π΅Ρ‰ΠΈ Ρƒ мСня Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ противорСчия.

НБ: ΠŸΠ΅Ρ€Π²ΠΎΠ΅ β€” согласСн, это чисто Postgres’овая история. Π”ΡƒΠΌΠ°ΡŽ, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ direct IO ΠΈ Π±ΡƒΡ„Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΠ» ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ΄ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ β€” ΠΏΠ»Π°Π½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Но ΠΌΡ‹ ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Postgres’ΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ, ΠΏΡ€ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ Π΄ΡƒΠΌΠ°Π΅ΠΌ.

ΠŸΡ€ΠΎ Kubernetes. Π’Ρ‹ ΠΆΠ΅ сам Π²Π΅Π·Π΄Π΅ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Π΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π±Π°Π·Π° пСрсистСнтная. Если инстанс ΡƒΠΏΠ°Π», Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ диск. Π’ΠΎΡ‚ Ρƒ нас Ρ‚ΠΎΠΆΠ΅ вся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π² Kubernetes, Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с Postgres β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ (хотя ΠΈ ΠΎΠ½ Ρ‚Π°ΠΌ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всё Ρ‚Π°ΠΊ: инстанс ΡƒΠΏΠ°Π», Π½ΠΎ ΠΌΡ‹ сохранили Π΅Π³ΠΎ PV ΠΈ просто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ (Π½ΠΎΠ²ΠΎΠΌΡƒ) инстансу, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ.

Π”Π‘: Π‘ ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, ΠΌΡ‹ создаём pod’Ρ‹ Π² Kubernetes. K8s β€” эластичный: ΡƒΠ·Π»Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сами ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. Π—Π°Π΄Π°Ρ‡Π° β€” просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ pod ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ X рСсурсов, Π° дальшС K8s сам разбСрётся. Но ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π² Kubernetes ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°: Π² 1.16, Π² 1.17 (этот Ρ€Π΅Π»ΠΈΠ· Π²Ρ‹ΡˆΠ΅Π» Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄) эти Ρ„ΠΈΡ‡ΠΈ становятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Ρ‚ΠΎΠΉ.

ΠŸΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π³ΠΎΠ΄Π°-Π³ΠΎΠ΄ β€” ΠΎΠ½ΠΎ станСт Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, ΠΈΠ»ΠΈ хотя Π±Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ заявлСно Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ. Π’ΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² ΠΈ resize’Π° ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·Π°. Π”Π°, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ быстрой, Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ copy-on-write Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ дисковой подсистСмы.

НБ: Π’ΡƒΡ‚ ΠΆΠ΅ Π½Π°Π΄ΠΎ Π΅Ρ‰Ρ‘, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π΄Π²ΠΈΠΆΠΊΠΈ (Amazon, Google…) успСли Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ эту Π²Π΅Ρ€ΡΠΈΡŽ β€” это вСдь Ρ‚ΠΎΠΆΠ΅ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚.

Π”Π‘: Пока ΠΌΡ‹ ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ своё.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ΄ Kubernetes

НБ: Бталкивался Π»ΠΈ Ρ‚Ρ‹ с Ρ‚Π°ΠΊΠΎΠΉ Ρ…ΠΎΡ‚Π΅Π»ΠΊΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ всС pod’Ρ‹ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ малСнькоС тСстированиС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ-быстрому ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ proof of concept, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Kubernetes, Π½Π΅ выдСляя ΠΏΠΎΠ΄ это ΠΊΡƒΡ‡Ρƒ машин. Π•ΡΡ‚ΡŒ Minikube, Π΄Π°?

Π”Π‘: МнС каТСтся, этот кСйс β€” Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΠ·Π»Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ β€” ΠΏΡ€ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Или ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ проявлСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°. Π•ΡΡ‚ΡŒ Minikube, Π΅ΡΡ‚ΡŒ k3s, KIND. ΠœΡ‹ ΠΈΠ΄Ρ‘ΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Kubernetes IN Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. БСйчас Π½Π°Ρ‡Π°Π»ΠΈ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для тСстов.

НБ: Π― Ρ€Π°Π½ΡŒΡˆΠ΅ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС pod’Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ Docker-ΠΎΠ±Ρ€Π°Π·. Но оказалось, Ρ‡Ρ‚ΠΎ это совсСм ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Всё Ρ€Π°Π²Π½ΠΎ Ρ‚Π°ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ pod’Ρ‹ β€” просто Π² Docker’Π΅.

Π”Π‘: Π”Π°. И Ρ‚Π°ΠΌ достаточно забавная имитация сдСлана, Π½ΠΎ смысл такой… Π£ нас Π΅ΡΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для дСплоя β€” werf. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π² Π½Π΅ΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Β­β€” условно werf up: «Подними ΠΌΠ½Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ KubernetesΒ». И Π΄Π°Π»Π΅Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ условный werf follow. Π’ΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ смоТСт ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² IDE, Π° Π² систСмС Π·Π°ΠΏΡƒΡ‰Π΅Π½ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄ΠΈΡ‚ измСнСния ΠΈ пСрСсобираСт ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π΅ΠΏΠ»ΠΎΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ… Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ K8s. Π’Π°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π‘Π½Π°ΠΏΡˆΠΎΡ‚Ρ‹ ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘Π” Π² рСалиях K8s

НБ: Если Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ copy-on-write. Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ±Π»Π°ΠΊΠΎΠ² Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр, Π² GCP: Ρƒ тСбя Π½Π° восточном ΠΏΠΎΠ±Π΅Ρ€Π΅ΠΆΡŒΠ΅ БША Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½Ρ‹ΠΉ инстанс. Π”Π΅Π»Π°Π΅ΡˆΡŒ пСриодичСски ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹. ПоднимаСшь ΠΈΠ· ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π° копию диска Π½Π° Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΌ ΠΏΠΎΠ±Π΅Ρ€Π΅ΠΆΡŒΠ΅ β€” Ρ‡Π΅Ρ€Π΅Π· нСсколько ΠΌΠΈΠ½ΡƒΡ‚ ΡƒΠΆΠ΅ всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ кэш Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² памяти. Но эти ΠΊΠ»ΠΎΠ½Ρ‹ (ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹) β€” для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°’provision’ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ инстансов ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.

А Π²ΠΎΡ‚ для тСстов, ΠΌΠ½Π΅ каТСтся, ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Π΅ΡˆΡŒ Π² Docker’Π΅ ΠΈΠ»ΠΈ я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ Π² ZFS, btrfs ΠΈ Π΄Π°ΠΆΠ΅ LVM… β€” ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΎΠ±Π»Π°ΠΊΠ΅ Ρ‚Ρ‹ Π΅Ρ‰Ρ‘ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° Π½ΠΈΡ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅ΡˆΡŒ ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π΅ сСкунды, Π° ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ (Π° Π² случаС lazy load’Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ часы).

ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ Π·Π° сСкунду-Π΄Π²Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ тСст ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ. Π­Ρ‚ΠΈ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” для тСстов.

Π”Π‘: НС ΡΠΎΠ³Π»Π°ΡˆΡƒΡΡŒ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΠΎΠ² β€” это Π·Π°Π΄Π°Ρ‡Π° ΠΎΠ±Π»Π°ΠΊΠ°. Π― Π½Π΅ смотрСл ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½ΠΎ знаю, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΡ‹ Π½Π° ΠΆΠ΅Π»Π΅Π·Π΅. Π£ нас Π΅ΡΡ‚ΡŒ Ceph, Π² Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ физичСскому Ρ‚ΠΎΠΌΡƒ (RBD) ΡΠΊΠ°Π·Π°Ρ‚ΡŒ clone ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π° дСсятки миллисСкунд Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΠΌ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ характСристиками, IOPS‘Π°ΠΌΠΈ ΠΈ Ρ‚.ΠΏ. Надо ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ copy-on-write. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ±Π»Π°ΠΊΡƒ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅? Π£Π²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

НБ: Но Ρƒ Π½ΠΈΡ… всё Ρ€Π°Π²Π½ΠΎ ΡƒΠΉΠ΄ΡƒΡ‚ сСкунды, дСсятки сСкунд, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ инстанс, привСсти Ρ‚ΡƒΠ΄Π° Docker ΠΈ Ρ‚.Π΄.

Π”Π‘: ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π»Ρ‹ΠΉ инстанс ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ? Π£ нас ΠΆΠ΅ Π΅ΡΡ‚ΡŒ инстанс Π½Π° 32 ядра, Π½Π° 16… ΠΈ Π² Π½Π΅Π³ΠΎ сколько-Ρ‚ΠΎ Π²Π»Π΅Π·Π°Π΅Ρ‚ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅. Когда ΠΌΡ‹ пятый Π·Π°ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΡƒΠΆΠ΅ поднимСтся инстанс, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ удалится.

НБ: Π”Π°, интСрСсно, Π² Kubernetes получаСтся другая история. Π£ нас Π‘Π” Π½Π΅ Π² K8s, ΠΈ ΠΎΠ΄ΠΈΠ½ инстанс. Π—Π°Ρ‚ΠΎ Π½Π° ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½ΠΎΠΉ Π±Π°Π·Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… сСкунд.

Π”Π‘: Π­Ρ‚ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ. Но ΠΌΠΎΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ посыл Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это Π½Π΅ generic-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π”Π°, ΠΎΠ½ΠΎ классноС, Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Postgres ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΠ·Π»Π΅.

НБ: Оно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Postgres: это ΠΏΠ»Π°Π½Ρ‹, ΠΊΠ°ΠΊ я описывал, Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Ρ‘ΠΌ. Но Ссли Π½Π΅ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΏΠ»Π°Π½ΠΎΠ², Π° Π½Π°ΠΌ просто Π½ΡƒΠΆΠ½Ρ‹ всС Π΄Π°Π½Π½Ρ‹Π΅ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования, Ρ‚ΠΎΠ³Π΄Π° это ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ для любой Π‘Π£Π‘Π”.

Π”Π‘: Много Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π½Π° LVM-ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°Ρ…. Π­Ρ‚ΠΎ классика. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовался. ΠŸΡ€ΠΎΡΡ‚ΠΎ stateful-ΡƒΠ·Π»Ρ‹ β€” это боль. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ Ρ€ΠΎΠ½ΡΡ‚ΡŒ, всСгда ΠΎ Π½ΠΈΡ… ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒβ€¦

НБ: НС видишь Π»ΠΈ Ρ‚Ρ‹ здСсь ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ возмоТности Π³ΠΈΠ±Ρ€ΠΈΠ΄Π°? Допустим, stateful β€” это pod ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… людСй (ΠΌΠ½ΠΎΠ³ΠΎ тСстировщиков). Π’ΠΎΠΌ Ρƒ нас ΠΎΠ΄ΠΈΠ½, Π½ΠΎ благодаря Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΊΠ»ΠΎΠ½Ρ‹ β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅. Если pod ΡƒΠΏΠ°Π», диск остался β€” поднимСтся pod, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх ΠΊΠ»ΠΎΠ½Π°Ρ… считаСт, всё ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅Ρ‚ ΠΈ скаТСт: Β«Π’ΠΎΡ‚ ваши ΠΊΠ»ΠΎΠ½Ρ‹ Π½Π° этих ΠΏΠΎΡ€Ρ‚Π°Ρ… Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с Π½ΠΈΠΌΠΈ дальшС».

Π”Π‘: ВСхничСски это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Kubernetes это ΠΎΠ΄ΠΈΠ½ pod, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ запускаСм ΠΌΠ½ΠΎΠ³ΠΎ Postgres’ΠΎΠ².

НБ: Π”Π°. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚: допустим, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Если Π½ΡƒΠΆΠ½ΠΎ 20 β€” запустим Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ pod. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ склонируСм Π΅Π³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌ, Π½Π° Π½Ρ‘ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ 10 Β«Ρ‚ΠΎΠ½ΠΊΠΈΡ…Β» ΠΊΠ»ΠΎΠ½ΠΎΠ². НС видишь Ρ‚Π°ΠΊΠΎΠΉ возмоТности?

Π”Π‘: Надо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сюда вопросы бСзопасности. Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ этого pod’Π° высокиС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ (capabilities), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСстандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой… Но ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ: я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² срСднСсрочной пСрспСктивС Π² Kubernetes починят storage, Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ… починят всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ с Ρ‚ΠΎΠΌΠ°ΠΌΠΈ Β­β€” всё Π±ΡƒΠ΄Π΅Ρ‚ «просто Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΒ». Π‘ΡƒΠ΄Π΅Ρ‚ resize, клонированиС… Π•ΡΡ‚ΡŒ Ρ‚ΠΎΠΌ β€” ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ: Β«Π‘ΠΎΠ·Π΄Π°ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ Π½Π° основС Ρ‚ΠΎΠ³ΠΎΒ», β€” ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Ρ‚ΠΎΡ€Ρ‹ сСкунды ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ.

НБ: НС Π²Π΅Ρ€ΡŽ Π² ΠΏΠΎΠ»Ρ‚ΠΎΡ€Ρ‹ сСкунды для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚. На Ceph Ρ‚Ρ‹ дСлаСшь сам, Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡˆΡŒ ΠΏΡ€ΠΎ ΠΎΠ±Π»Π°ΠΊΠ°. Пойди Π² ΠΎΠ±Π»Π°ΠΊΠΎ, Π½Π° EC2 сдСлай ΠΊΠ»ΠΎΠ½ Ρ‚ΠΎΠΌΠ° EBS ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚ ΠΈ посмотри, какая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚. Π­Ρ‚ΠΎ Π½Π΅ Π·Π°ΠΉΠΌΠ΅Ρ‚ нСсколько сСкунд. МнС ΠΎΡ‡Π΅Π½ΡŒ интСрСсно, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ показатСля. Понимаю, ΠΎ Ρ‡Π΅ΠΌ Ρ‚Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡˆΡŒ, Π½ΠΎ позволю сСбС Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ.

Π”Π‘: Ок, Π½ΠΎ я сказал, Ρ‡Ρ‚ΠΎ Π² срСднСсрочной пСрспСктивС, Π½Π΅ краткосрочной. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚.

ΠŸΡ€ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ для PostgreSQL ΠΎΡ‚ Zalando

Π’ сСрСдинС этой встрСчи ΠΊ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ АлСксСй Клюкин, Π±Ρ‹Π²ΡˆΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Zalando, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассказал ΠΏΡ€ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° PostgreSQL:

Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ эта Ρ‚Π΅ΠΌΠ° Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Π°: ΠΈ Postgres, ΠΈ Kubernetes. Когда ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π΅Ρ‘ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Zalando Π² 2017-ΠΌ Π³ΠΎΠ΄Ρƒ, это Π±Ρ‹Π»Π° такая Ρ‚Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ, Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π». Π£ всСх ΡƒΠΆΠ΅ появлялся Kubernetes, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ люди, ΠΊΠ°ΠΊ Kelsey Hightower, ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ K8s, Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Β«Π˜Π΄ΠΈΡ‚Π΅ Π² managed-сСрвисы ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ…, Π½Π΅ запускайтС Π‘Π” Π² Kubernetes. Π˜Π½Π°Ρ‡Π΅ ваш K8s Ρ€Π΅ΡˆΠΈΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄, ΠΏΠΎΡ‚ΡƒΡˆΠΈΡ‚ всС ΡƒΠ·Π»Ρ‹, ΠΈ ваши Π΄Π°Π½Π½Ρ‹Π΅ улСтят Π΄Π°Π»Π΅ΠΊΠΎ-Π΄Π°Π»Π΅ΠΊΠΎΒ».

ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚, Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ этому совСту, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π‘Π” Postgres Π² Kubernetes. И Ρƒ нас Π±Ρ‹Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ основаниС β€” Patroni. Π­Ρ‚ΠΎ автоматичСский failover для PostgreSQL, сдСланный ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚.Π΅. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ etcd, consul ΠΈΠ»ΠΈ ZooKeeper Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ кластСрС. Π’Π°ΠΊΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ всСм, ΠΊΡ‚ΠΎ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΠΎΠΉ сСйчас Π»ΠΈΠ΄Π΅Ρ€, ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ β€” нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ нас всё распрСдСлённоС, β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ split brain’Π°. Плюс, Ρƒ нас Π±Ρ‹Π» Docker-ΠΎΠ±Ρ€Π°Π· для Π½Π΅Π³ΠΎ.

Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² auto failover Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ появилась послС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ³ΠΎ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° Π² ΠΎΠ±Π»Π°ΠΊΠΎ. Облако Π±Ρ‹Π»ΠΎ основано Π½Π° собствСнном Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ PaaS (Platform-as-a-Service). Оно Open Source’Π½ΠΎΠ΅, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ, Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ сильно ΠΏΠΎΡ‚Ρ€ΡƒΠ΄ΠΈΡ‚ΡŒΡΡ. ΠΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ STUPS.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Kubernetes’Π° Π½Π΅ Π±Ρ‹Π»ΠΎ. Π’ΠΎΡ‡Π½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ собствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, K8s ΡƒΠΆΠ΅ Π±Ρ‹Π», Π½ΠΎ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ сырым, Ρ‡Ρ‚ΠΎ для production Π½Π΅ годился. Π­Ρ‚ΠΎ Π±Ρ‹Π», ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡƒ, 2015 ΠΈΠ»ΠΈ 2016 Π³ΠΎΠ΄. К 2017-ΠΌΡƒ Π³ΠΎΠ΄Ρƒ Kubernetes стал Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Π·Ρ€Π΅Π»Ρ‹ΠΌ β€” появилась Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΡƒΠ΄Π°.

И Ρƒ нас ΡƒΠΆΠ΅ Π±Ρ‹Π» Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π‘Ρ‹Π»Π° PaaS, которая использовала Docker. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ K8s? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€? ΠœΡƒΡ€Π°Ρ‚ Кабилов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Π½Π°ΠΌ ΠΈΠ· Авито, Π½Π°Ρ‡Π°Π» это ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ собствСнной ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π΅ β€” Β«ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΒ», β€” ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β«Π²Π·Π»Π΅Ρ‚Π΅Π»Β».

Но Π²ΠΎΠΎΠ±Ρ‰Π΅ я Ρ…ΠΎΡ‚Π΅Π» Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ AWS. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΌ Π±Ρ‹Π» историчСски ΠΊΠΎΠ΄, связанный с AWS…

Когда Π²Ρ‹ запускаСтС Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² Kubernetes, Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ K8s β€” это Ρ‚Π°ΠΊΠΎΠΉ work in progress. Он постоянно развиваСтся, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ пСриодичСски Π΄Π°ΠΆΠ΅ ломаСтся. НуТно ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π° всСми измСнСниями Π² Kubernetes, Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ Π² случаС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Π³ΠΎ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² дСталях β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, большС, Ρ‡Π΅ΠΌ Π²Π°ΠΌ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ. Π­Ρ‚ΠΎ, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Ρƒ любой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ запускаСтС свои БД…

Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρƒ нас Π±Ρ‹Π» Postgres, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π» с внСшним Ρ‚ΠΎΠΌΠΎΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” EBS, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² AWS). Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… росла, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ resize: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ EBS β€” 100 Π’Π±, Π±Π°Π·Π° доросла Π΄ΠΎ Π½Π΅Π³ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ EBS Π² 200 Π’Π±. Как? Допустим, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ dump/restore Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ инстанс, Π½ΠΎ это Π΄ΠΎΠ»Π³ΠΎ ΠΈ с простоСм.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ‚Π°ΠΊΠΎΠΉ resize, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» EBS’Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС систСмС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ пространство. И ΠΌΡ‹ это сдСлали, Π½ΠΎ Π² Ρ‚ΠΎ врСмя Ρƒ Kubernetes’Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ API для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ resize’Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° AWS, написали ΠΊΠΎΠ΄ для Π΅Π³ΠΎ API.

Никто Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π½Π΅Ρ‚ завязки, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° AWS, Π° Π½Π° всём ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, это Open Source-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: Ссли ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ появлСниС использования Π½ΠΎΠ²ΠΎΠ³ΠΎ API β€” милости просим. Π•ΡΡ‚ΡŒ GitHub, pull-запросы β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° Zalando стараСтся довольно ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Π½Π° Π½ΠΈΡ… Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Насколько знаю, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ участвовал Π² Google Summer of Code ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π°Ρ…. Zalando Π½Π°Π΄ Π½ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

P.S. Бонус!

Если вас интСрСсуСт Ρ‚Π΅ΠΌΠ° PostgreSQL ΠΈ Kubernetes, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ состоялся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Postgres-Π²Ρ‚ΠΎΡ€Π½ΠΈΠΊ, Π³Π΄Π΅ с НиколаСм общался АлСксандр ΠšΡƒΠΊΡƒΡˆΠΊΠΈΠ½ ΠΈΠ· Zalando. Π’ΠΈΠ΄Π΅ΠΎ с Π½Π΅Π³ΠΎ доступно здСсь.

P.P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

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