Shopify, Π΅Π΄Π½Π° ΠΎΠ΄ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π·Π° Π΅-ΡΡΠ³ΠΎΠ²ΠΈΡΠ°, Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ Toxiproxy 2.3, ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ° Π΄Π΅ΡΠ΅ΠΊΡΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²Π°Ρ ΡΠ°ΠΊΠ²ΠΈ ΡΡΠ»ΠΎΠ²ΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΅ Π·Π½Π°ΡΠ°ΡΠ½Π° ΠΏΠΎ ΡΠΎΠ° ΡΡΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° API Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΊΠ°Π½Π°Π», ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π½Π° Toxiproxy ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠΈ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΠΈ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ. ΠΠΎΠ΄ΠΎΡ Toxiproxy Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ Go ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT.
ΠΠΎΠΌΠ΅ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ° ΠΈ ΠΌΡΠ΅ΠΆΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠΎ ΠΊΠΎΡΠ° ΠΎΠ²Π°Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π΅ Π²ΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°, ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ° ΠΏΠΎΡΠ°Π²Π° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π±Π°ΡΠ°ΡΠ΅, ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠΏΡΡΠ½ΠΈΠΎΡ ΠΎΠΏΡΠ΅Π³, ΡΠΈΠΌΡΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ΄Π±ΠΈΠ²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ°ΡΠ°Ρ Π²ΡΡΠΊΠΈ , Π³ΠΎ Π½Π°ΡΡΡΡΠ²Π° Π½ΠΎΡΠΌΠ°Π»Π½ΠΈΠΎΡ Π½Π°ΠΏΡΠ΅Π΄ΠΎΠΊ Π½Π° Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅ Π²ΡΡΠΊΠΈ, ΡΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π²ΠΎΡΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π²ΡΡΠΊΠΈ, ΠΈΡΠΊΡΠΈΠ²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅.
ΠΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π·Π° Ruby, Go, Python, C#/.NET, PHP, JavaScript/Node.js, Java, Haskell, Rust ΠΈ Elixir, ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΡΠ»ΠΎΠ²ΠΈ Π²ΠΎ Π»Π΅Ρ ΠΈ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π³ΠΎ ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ. ΠΠ° Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° Π±Π΅Π· Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½Π° Π°Π»Π°ΡΠΊΠ° toxiproxy-cli (ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π΄Π΅ΠΊΠ° Toxiproxy API ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ Π΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ, Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½Π° Π·Π° ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ).
ΠΠ΅ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΏΡΠ°Π²ΡΠ²Π°Ρ Π·Π° ΠΊΡΠ°ΡΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π·Π° HTTPS, ΠΎΠ΄Π²ΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ. ΠΠΎΠΏΠΎΠ»Π½Π΅ΡΠ΅ API, ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ armv7 ΠΈ armv6 ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° Π»ΠΎΠ³ΠΈΡΠ°ΡΠ΅ Π·Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΠ·Π²ΠΎΡ: opennet.ru