Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
1.
2. Go в продакшене
Яндекса
Слава Бахмутов - старший разработчик
Я.Субботник в Минске, 30.08.2014
3. Структура доклада
1. История Go
2. Краткое описание языка
3. Особенности нашей разработки
4. Выбор и внедрение Go
5. Выводы
3
4. История 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
Кен То́мпсон
Роб Пайк
10. Описание языка. Кратко.
1. Очень простой.
2. Компилируемый, со строгой типизаций (и с выводом типов).
3. Со сборкой мусора. (гибридный, остановка мира не больше
10ms)
4. Лёгкие процессы - горутины.
5. Нет дженериков, наследования, переопределения методов,
pointer arithmetic.
6. Богатая стандартная библиотека.
7. Большой набор инструментов для разработки (запуск тестов с
[покрытием], форматирование кода, кросскомпиляция, отладка,
поиск гонок, профилирование и т.д.)
10
11. Описание языка. Горутины.
1. Очень лёгкие (8кб на
создание)
2. Автоматически
распределяются по
процессорам
3. Непрерывный стэк (до 1.3
был сегментированный)
11
14. Проблемы.
юнит тесты для типов
14
С++
медленная разработка
трудно писать юнит тесты
Python
медленная работа
жадный до ресурсов
лапша калбеков
зависимости
16. Внедрение Go в Cocaine.
Написали фреймворк за выходные*
Приложения в облаке — обычные HttpHandler
Приложения запускаются и без Cocaine
16 * http://bit.ly/cocaine-go
17. Выводы. Плюсы.
17
Тесты
Горутины
Простота языка
Исследование проблем, улов утечек
Мало потребляет, много обрабатывает
Питонщики с радостью переходят на Go
Нет зависимостей
Быстрая компиляция
18. Выводы. Минусы.
18
Отсутствие идеальной IDE (для меня)
Generics - но не так критично
Работа с ошибками
Неочевидность некоторых вещей
Проблемы в библиотеках
Часть вещей приходится писать самим
Плюсовики переходят на Go с трудом
19. Выводы. Результаты.
19
В 2 раза медленнее C++ и в 8-15 раз быстрее python*
В ~30 раз меньше потребление памяти*
Нагрузка на кластер уменьшилась на 70 %
Ручки работают уже год и не единого разрыва
* на наших задачах
20. Спасибо за внимание
20
twitter: @m0sth8
email: m0sth8@yandex-team.ru
доклад: http://bit.ly/go-doklad