Upload
yandex
View
531
Download
0
Embed Size (px)
Citation preview
ostrovok.ru
Что такое стартап
Done is better then perfect
ostrovok.ru
Нет понимания конечной точки
Что такое стартап
Done is better then perfect
ostrovok.ru
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов
Что такое стартап
Done is better then perfect
ostrovok.ru
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов
Большой резерв для экстенсивного развития
Что такое стартап
Done is better then perfect
ostrovok.ru
Что такое стартап
Архитектура «взрослого» проекта
ostrovok.ru
Что такое стартап
Архитектура «стартапа»
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 - плачевно
ostrovok.ru
Когда выбирать Go?В стартапе можно выделить два этапа развития
ostrovok.ru
Когда выбирать Go?В стартапе можно выделить два этапа развитияРазработка прототипа
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
Необходимость как-то маштабировать написанное ранее
ostrovok.ru
Когда выбирать Go?
Важнее всего скорость и простота разработки
Выкидываем из сравнения производительность и многозадачность, получим несомненного лидера ( python ) c 5 баллами
В стартапе можно выделить два этапа развитияРазработка прототипа
Скорость и простота разработки по-прежнему очень важна, но в некоторых случаях забивать на производительность становится невозможно
Java и Go набирают в таком случае по 7 баллов
Необходимость как-то маштабировать написанное ранее
ostrovok.ru
Итого, где именно?
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
Система кеширования ( 1Тб данных, 90000 ключей/сек )
ostrovok.ru
Итого, где именно?Идеальным вариантом для нас показался гибрид python-кода и golang-сервисов. В сервисы были вынесены:
Система кеширования ( 1Тб данных, 90000 ключей/сек )
Обработка и переформатирование потока данных от поставщиков ( 30-50 МБ/сек )
ostrovok.ru
Протокол обмена
ostrovok.ru
Протокол обмена
ØMQ
ostrovok.ru
Протокол обмена
ØMQ
Redis queues
ostrovok.ru
Протокол обмена
ØMQ
Redis queues
HTTP keep-alive
ostrovok.ru
Сериализация
ostrovok.ru
Сериализация
json/gzip 200/500мс
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
json/snappy 120/170мс
ostrovok.ru
Сериализация
json/gzip 200/500мс
msgpack/gzip 150/400мс
json/snappy 120/170мс
msgpack/snappy 80/120мс
ostrovok.ru
Дополнительные плюсы
ostrovok.ru
Дополнительные плюсы
Golang строго типизирован. Это приводит к тому, что формат входных и выходных данных зафиксирован. Это форсирует в коде на python элементы контрактного программирования.
ostrovok.ru
Дополнительные плюсы
Golang строго типизирован. Это приводит к тому, что формат входных и выходных данных зафиксирован. Это форсирует в коде на python элементы контрактного программирования.
Код, будучи разбит на несколько независимых подпроектов, становится мнее связным. Каждый фрагмент можно релизить независимо.
ostrovok.ru
Сложности перехода
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
Не работает привычный подход к тестам (отсутствие возможности «мокать» код на лету.
ostrovok.ru
Сложности переходаОтсутствие аналога virtualenv в частности и пакетного менеджера вообще. Неудобная работа с зависимостями.
Неудобная работа со типом данных map. Пример: для того, чтобы отсортировать мэп по значениям, в каждом проекте есть собственноручно-написанный костыль.
Низкое качество библиотек.
Не работает привычный подход к тестам (отсутствие возможности «мокать» код на лету.
Непривычная работа с ошибками
ostrovok.ru
Ваши вопросы!
!
!
Илья Биин, архитектор в компании Островок.ру !
!
!
!
!
Пишите: [email protected]