Π‘ΠΏΠ΅ΡΠΈΠΌ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½ΠΎΠ²ΠΎΡΡΡΡ, ΡΡΠΎ Contour ΡΠ°Π·ΠΌΠ΅ΡΡΠ½ Π² ΠΈΠ½ΠΊΡΠ±Π°ΡΠΎΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΎΡ Cloud Native Computing Foundation (CNCF).
ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ Contour β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠΉ ingress controller Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌ Π² Kubernetes.
ΠΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Β«Π΄ΠΎΡΠΎΠΆΠ½ΡΡ ΠΊΠ°ΡΡΡΒ» ΡΠ°Π·Π²ΠΈΡΠΈΡ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΈΡ
ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ
Π Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Contour. ΠΠΎΡΡΠ½ΠΈΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² CNCF. Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ ΠΏΠ»Π°Π½Π°ΠΌΠΈ Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ KubeCon ΠΈ CloudNativeCon ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ²Π΅ΡΠΆΠ΅Π½ΡΠ΅Π² ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. Π ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΡΡ-ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Kubernetes, Prometheus, gRPC, Envoy, OpenTracing ΠΈ Π΄ΡΡΠ³ΠΈΡ .
ΠΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ingress
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π²ΠΎΠ΄Π½Π°Ρ. Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Kubernetes ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΎΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ Π·Π°Π΄Π°ΡΠ°ΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ ΠΊ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ. ΠΠΎ Π² Π²ΠΎΠΏΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅ΠΉ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²ΡΠ·Π½ΠΎΡΡΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΉ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ, ΠΏΡΠΈΡΠΎΠΌ Π²Π΅ΡΡΠΌΠ° Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° Π²Π½ΡΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. Π Kubernetes ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Ingress, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Contour. ΠΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π΄Π»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ Π·Π°Π΄Π΅Π»ΠΎΠΌ Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes.
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Contour ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π·Π°ΠΏΡΡΠΊΠ° Ingress Controller Π² Kubernetes, Π½ΠΎ Contour ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡ Π·Π°Π΄Π°ΡΡ, Π΄Π΅Π»Π°Ρ Π΅Π΅ Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅ Π·Π°Π±ΡΠ²Π°Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
Π₯ΠΎΡΡ Π²Ρ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ
Π‘ΠΈΠ»Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ CNCF
Contour, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ 2017 Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Heption, Π΄ΠΎΡΡΠΈΠ³ Π²Π΅ΡΡΠΈΠΈ 1.0 Π² Π½ΠΎΡΠ±ΡΠ΅ 2019 Π³ΠΎΠ΄Π°, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡ Π²Π°ΡΡΠ°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ· 600 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π² Slack, 300 ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ 90 ΠΊΠΎΠΌΠΌΠΈΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ 5 ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΌΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π·Π½Π°ΡΠΈΠΌΡΡ ΡΠ°ΠΊΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π²Π½Π΅Π΄ΡΠ΅Π½ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Adobe, Kinvolk, Kintone, PhishLabs ΠΈ Replicated. ΠΡΠ΅Π½ΠΈΠ², ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²Π½Π΅Π΄ΡΡΡΡ Contour Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°Ρ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ, CNCF ΡΠ΅ΡΠΈΠ»Π°, ΡΡΠΎ Contour ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ, ΠΌΠΈΠ½ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ, ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΈΠ½ΠΊΡΠ±Π°ΡΠΎΡ.
ΠΠ»Ρ Π½Π°Ρ ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅, Π³ΠΎΡΡΠ΅ΠΏΡΠΈΠΈΠΌΠ½ΠΎΠ΅ ΠΈ ΠΎΡΠΊΡΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π»ΡΠΌ CNCF, ΡΠ°ΠΊΠΆΠ΅ Contour Ρ ΠΎΡΠΎΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Kubernetes ΠΈ Envoy.
ΠΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅Ρ Π»ΡΠ΄Π΅ΠΉ, ΡΠ΅ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π²Π΅ΡΡΠΈΠΈ Π΅ΠΆΠ΅ΠΌΠ΅ΡΡΡΠ½ΠΎ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π½Π΅ Π·Π°ΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ»Π³ΠΎ ΠΆΠ΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΊΠ»Π°Π΄ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Kubernetes
Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΡ
ΠΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ:
Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Envoy ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ helm chart
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎΠ± ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅
ΠΡ
Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΠΌ!
ΠΠ΅Π»Π°Π΅ΡΠ΅ Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Contour, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π³ΠΎ Π½Π°Π΄Π΅Π΅ΡΡΡ Π΄ΠΎΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡ ΠΊ CNCF β ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅
ΠΡΠ»ΠΈ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ β ΠΏΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ Π»ΡΠ±ΠΎΠΉ ΠΈΠ·
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ ΠΏΡΠΈΠ½ΡΡΡ Π²Π°Ρ Π² Π½Π°ΡΠΈ ΡΡΠ΄Ρ. ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π½Π°ΡΠ΅ΠΉ
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Contour ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ
, ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΡΠ°ΡΡΠΈΠΈ Π²
Π’ΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΡΠΎΡΠ΅.
ΠΠ°Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π» Contour?
-
25,0%ΠΠ΅ ΠΎΡΠΎΠ±ΠΎ. ΠΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ4
-
25,0%ΠΠ°, ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ Π²Π΅ΡΠΈΡΠ°4
-
43,8%ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π΄Π΅Π»Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡ Π·Π° ΠΎΠ±Π΅ΡΠ°Π½ΠΈΡΠΌΠΈ7
-
6,2%Π’ΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ Ρ Π°ΡΠ΄ΠΊΠΎΡ1
ΠΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 16 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ·Π΄Π΅ΡΠΆΠ°Π»ΠΈΡΡ 3 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com