Go в продакшене Яндекса: отчёт после года использования...
-
Upload
yandex -
Category
Technology
-
view
2.933 -
download
3
description
Transcript of Go в продакшене Яндекса: отчёт после года использования...
Go в продакшене Яндекса
Слава Бахмутов - старший разработчик
Я.Субботник в Минске, 30.08.2014
Структура доклада
1. История Go
2. Краткое описание языка
3. Особенности нашей разработки
4. Выбор и внедрение Go
5. Выводы
3
История Go. Начало.Разработан и поддерживается Google
2007 — начало разработки
2009 — публичный релиз
2012 — go 1.0
2014 — go 1.3. ОС: Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Plan 9 и Microsoft Windows. Платформы: i386, amd64 и ARM
2015 — go 1.4 поддержка Android?*
4* http://bit.ly/go-android
Роб ПайкКен То́мпсон
История Go. Развитие.
5
https://www.openhub.net/languages/compare
История Go. Развитие.
6
https://www.openhub.net/languages/compare
История Go. Проекты.
7
Gogs
Github репозитории, написанные на Go
История Go. Сообщество.
8
Группа Golang Russian
История Go. Бизнес.
9
Список компаний
Описание языка. Кратко.
1. Очень простой.
2. Компилируемый, со строгой типизаций (и с выводом типов).
3. Со сборкой мусора. (гибридный, остановка мира не больше 10ms)
4. Лёгкие процессы - горутины.
5. Нет дженериков, наследования, переопределения методов, pointer arithmetic.
6. Богатая стандартная библиотека.
7. Большой набор инструментов для разработки (запуск тестов с [покрытием], форматирование кода, кросскомпиляция, отладка, поиск гонок, профилирование и т.д.)
10
Описание языка. Горутины.
1. Очень лёгкие (8кб на создание)
2. Автоматически распределяются по процессорам
3. Непрерывный стэк (до 1.3 был сегментированный)
11
Описание языка. Код.
12
Особенности нашей разработки.
13
Python
C++
~500 RPS
>5000 RPS
Проблемы.
14
С++
медленная разработка
трудно писать юнит тесты
лапша калбеков
Python
медленная работа
жадный до ресурсов
юнит тесты для типов
зависимости
В поисках нового.
15
Внедрение Go в Cocaine.
16* http://bit.ly/cocaine-go
Приложения в облаке — обычные HttpHandler
Приложения запускаются и без Cocaine
Написали фреймворк за выходные*
Выводы. Плюсы.
17
Простота языка
Горутины
Тесты
Мало потребляет, много обрабатывает
Исследование проблем, улов утечек
Питонщики с радостью переходят на Go
Нет зависимостей
Быстрая компиляция
Выводы. Минусы.
18
Отсутствие идеальной IDE (для меня)
Generics - но не так критично
Работа с ошибками
Неочевидность некоторых вещей
Проблемы в библиотеках
Часть вещей приходится писать самим
Плюсовики переходят на Go с трудом
Выводы. Результаты.
19
В 2 раза медленнее C++ и в 8-15 раз быстрее python*
В ~30 раз меньше потребление памяти*
* на наших задачах
Нагрузка на кластер уменьшилась на 70 %
Ручки работают уже год и не единого разрыва