Илья Биин: Организация совместной работы go и python-based...
TRANSCRIPT
![Page 2: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/2.jpg)
ostrovok.ru
Что такое стартап
Done is better then perfect
![Page 3: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/3.jpg)
ostrovok.ru
Нет понимания конечной точки
Что такое стартап
Done is better then perfect
![Page 4: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/4.jpg)
ostrovok.ru
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов
Что такое стартап
Done is better then perfect
![Page 5: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/5.jpg)
ostrovok.ru
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов
Большой резерв для экстенсивного развития
Что такое стартап
Done is better then perfect
![Page 6: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/6.jpg)
ostrovok.ru
Что такое стартап
Архитектура «взрослого» проекта
![Page 7: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/7.jpg)
ostrovok.ru
Что такое стартап
Архитектура «стартапа»
![Page 8: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/8.jpg)
ostrovok.ru
Когда выбирать Go?
Simplicity Performance Libs Concurrency
Python 3 0 2 0Java 1 2 2 2C/C++ 0 3 1 1Go 2 2 0 3
Erlang 1 1 1 3
3 - отлично
2 - хорошо1 - хорошо, с серьезными оговорками0 - плачевно
![Page 9: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/9.jpg)
ostrovok.ru
Когда выбирать Go?В стартапе можно выделить два этапа развития
![Page 10: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/10.jpg)
ostrovok.ru
Когда выбирать Go?В стартапе можно выделить два этапа развитияРазработка прототипа
![Page 11: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/11.jpg)
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
![Page 12: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/12.jpg)
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
Необходимость как-то маштабировать написанное ранее
![Page 13: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/13.jpg)
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
Скорость и простота разработки по-прежнему очень важна, но в некоторых случаях забивать на производительность становится невозможно
Java и Go набирают в таком случае по 7 баллов
Необходимость как-то маштабировать написанное ранее
![Page 14: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/14.jpg)
ostrovok.ru
Итого, где именно?
![Page 15: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/15.jpg)
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
![Page 16: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/16.jpg)
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
Система кеширования ( 1Тб данных, 90000 ключей/сек )
![Page 17: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/17.jpg)
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
Система кеширования ( 1Тб данных, 90000 ключей/сек )
Обработка и переформатирование потока данных от поставщиков ( 30-50 МБ/сек )
![Page 18: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/18.jpg)
ostrovok.ru
Протокол обмена
![Page 19: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/19.jpg)
ostrovok.ru
Протокол обмена
ØMQ
![Page 20: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/20.jpg)
ostrovok.ru
Протокол обмена
ØMQ
Redis queues
![Page 21: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/21.jpg)
ostrovok.ru
Протокол обмена
ØMQ
Redis queues
HTTP keep-alive
![Page 22: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/22.jpg)
ostrovok.ru
Сериализация
![Page 23: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/23.jpg)
ostrovok.ru
Сериализация
json/gzip 200/500мс
![Page 24: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/24.jpg)
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
![Page 25: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/25.jpg)
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
json/snappy 120/170мс
![Page 26: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/26.jpg)
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
json/snappy 120/170мс
msgpack/snappy 80/120мс
![Page 27: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/27.jpg)
ostrovok.ru
Дополнительные плюсы
![Page 28: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/28.jpg)
ostrovok.ru
Дополнительные плюсы
Golang строго типизирован. Это приводит к тому, что формат входных и выходных данных зафиксирован. Это форсирует в коде на python элементы контрактного программирования.
![Page 29: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/29.jpg)
ostrovok.ru
Дополнительные плюсы
Golang строго типизирован. Это приводит к тому, что формат входных и выходных данных зафиксирован. Это форсирует в коде на python элементы контрактного программирования.
Код, будучи разбит на несколько независимых подпроектов, становится мнее связным. Каждый фрагмент можно релизить независимо.
![Page 30: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/30.jpg)
ostrovok.ru
Сложности перехода
![Page 31: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/31.jpg)
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
![Page 32: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/32.jpg)
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
![Page 33: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/33.jpg)
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
![Page 34: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/34.jpg)
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
Не работает привычный подход к тестам (отсутствие возможности «мокать» код на лету.
![Page 35: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/35.jpg)
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
Не работает привычный подход к тестам (отсутствие возможности «мокать» код на лету.
Непривычная работа с ошибками
![Page 36: Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru](https://reader036.vdocuments.mx/reader036/viewer/2022081422/55a2bc3e1a28ab445f8b47f3/html5/thumbnails/36.jpg)
ostrovok.ru
Ваши вопросы!
!
!
Илья Биин, архитектор в компании Островок.ру !
!
!
!
!
Пишите: [email protected]