SlideShare a Scribd company logo
Go и стартапы
ostrovok.ru
Что такое стартап

Done is better then perfect

ostrovok.ru
Что такое стартап

Done is better then perfect
Нет понимания конечной точки

ostrovok.ru
Что такое стартап

Done is better then perfect
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов

ostrovok.ru
Что такое стартап

Done is better then perfect
Нет понимания конечной точки
Постоянные эксперименты и развороты на 180 градусов
Большой резерв для экстенсивного развития
ostrovok.ru
Что такое стартап

Архитектура «взрослого» 

проекта

ostrovok.ru
Что такое стартап

Архитектура «стартапа»

ostrovok.ru
Когда выбирать Go?
3 - отлично
2 - хорошо
1 - хорошо, с
серьезными
оговорками
0 - плачевно

Simplicity

Performance

Libs

Concurrency

Python

3

0

2

0

Java

1

2

2

2

C/C++

0

3

1

1

Go

2

2

0

3

Erlang

1

1

1

3

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
Ваши вопросы
!
!
!

Илья Биин,	

архитектор в компании Островок.ру	

!
!
!
!
!

Пишите: me@ilyabiin.com	


ostrovok.ru

More Related Content

PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
PDF
Как ВКонтакте использует Go
PDF
Go в автобусе
PDF
BeeGo для веб приложений, API и демонов
PDF
Введение в язык программирования Go
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Как ВКонтакте использует Go
Go в автобусе
BeeGo для веб приложений, API и демонов
Введение в язык программирования Go

What's hot (20)

PDF
Rust - GDG DevFest Siberia 2016
PDF
Отладка в Python: 2016 edition
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
PDF
Понимая Git /git/. Git изнутри наружу
PDF
Применение языка Go в инфраструктурных проектах
PDF
#noBackend, или Как выжить в эпоху толстеющих клиентов
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PPTX
Зачем нужен Go?
PDF
Готовим код 
в мир открытых исходников
PDF
Database First! О распространённых ошибках использования РСУБД
PDF
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
PDF
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
PDF
Как мы делаем раскладку Календаря@Mail.Ru
PDF
Работаем с API по-взрослому - Максим Кислов (Badoo)
PDF
Язык программирования GO
PDF
Rozum robotics release cycle
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
PPTX
"Великолепный API без Rest", Констатин Якушев (Badoo)
PDF
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Rust - GDG DevFest Siberia 2016
Отладка в Python: 2016 edition
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Понимая Git /git/. Git изнутри наружу
Применение языка Go в инфраструктурных проектах
#noBackend, или Как выжить в эпоху толстеющих клиентов
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Зачем нужен Go?
Готовим код 
в мир открытых исходников
Database First! О распространённых ошибках использования РСУБД
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
Как мы делаем раскладку Календаря@Mail.Ru
Работаем с API по-взрослому - Максим Кислов (Badoo)
Язык программирования GO
Rozum robotics release cycle
Rust - GDG DevFest 2016 Nizhny Novgorod
"Великолепный API без Rest", Констатин Якушев (Badoo)
Стабы для фронтенда - Никита Мостовой (HeadHunter)
Ad

Similar to Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru (13)

PDF
Путь к Go на конкретном примере
PDF
Рефакторинг монолита в микросервисы на Go
PDF
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
PPTX
Чем Python плох для стартапа?
PPTX
Go для веба глазами PHP-разработчика
PDF
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
PDF
My talk at DevParty 2017
PPTX
Python-технология которую легко продавать!
PPTX
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
PDF
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
PDF
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Путь к Go на конкретном примере
Рефакторинг монолита в микросервисы на Go
Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Micro...
Чем Python плох для стартапа?
Go для веба глазами PHP-разработчика
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
My talk at DevParty 2017
Python-технология которую легко продавать!
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Ad

More from Yandex (20)

PDF
Предсказание оттока игроков из World of Tanks
PDF
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
PDF
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
PDF
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
PDF
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
PDF
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
PDF
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
PDF
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
PDF
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
PDF
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
PDF
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
PDF
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
PDF
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
PDF
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
PDF
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
PDF
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
PDF
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
PDF
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Предсказание оттока игроков из World of Tanks
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...

Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovok.ru