Go в продакшене Яндекса: отчёт после года использования...

20

description

Я расскажу о том, как мы используем Go в продакшене Яндекс.Браузера, почему мы выбрали этот язык и с какими проблемами столкнулись.

Transcript of Go в продакшене Яндекса: отчёт после года использования...

Page 1: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Page 2: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Go в продакшене Яндекса

Слава Бахмутов - старший разработчик

Я.Субботник в Минске, 30.08.2014

Page 3: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Структура доклада

1. История Go

2. Краткое описание языка

3. Особенности нашей разработки

4. Выбор и внедрение Go

5. Выводы

3

Page 4: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История 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

Роб ПайкКен То́мпсон

Page 5: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История Go. Развитие.

5

https://www.openhub.net/languages/compare

Page 6: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История Go. Развитие.

6

https://www.openhub.net/languages/compare

Page 7: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История Go. Проекты.

7

Gogs

Github репозитории, написанные на Go

Page 8: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История Go. Сообщество.

8

Группа Golang Russian

Page 9: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

История Go. Бизнес.

9

Список компаний

Page 10: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Описание языка. Кратко.

1. Очень простой.

2. Компилируемый, со строгой типизаций (и с выводом типов).

3. Со сборкой мусора. (гибридный, остановка мира не больше 10ms)

4. Лёгкие процессы - горутины.

5. Нет дженериков, наследования, переопределения методов, pointer arithmetic.

6. Богатая стандартная библиотека.

7. Большой набор инструментов для разработки (запуск тестов с [покрытием], форматирование кода, кросскомпиляция, отладка, поиск гонок, профилирование и т.д.)

10

Page 11: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Описание языка. Горутины.

1. Очень лёгкие (8кб на создание)

2. Автоматически распределяются по процессорам

3. Непрерывный стэк (до 1.3 был сегментированный)

11

Page 12: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Описание языка. Код.

12

Page 13: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Особенности нашей разработки.

13

Python

C++

~500 RPS

>5000 RPS

Page 14: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Проблемы.

14

С++

медленная разработка

трудно писать юнит тесты

лапша калбеков

Python

медленная работа

жадный до ресурсов

юнит тесты для типов

зависимости

Page 15: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

В поисках нового.

15

Page 16: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Внедрение Go в Cocaine.

16* http://bit.ly/cocaine-go

Приложения в облаке — обычные HttpHandler

Приложения запускаются и без Cocaine

Написали фреймворк за выходные*

Page 17: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Выводы. Плюсы.

17

Простота языка

Горутины

Тесты

Мало потребляет, много обрабатывает

Исследование проблем, улов утечек

Питонщики с радостью переходят на Go

Нет зависимостей

Быстрая компиляция

Page 18: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Выводы. Минусы.

18

Отсутствие идеальной IDE (для меня)

Generics - но не так критично

Работа с ошибками

Неочевидность некоторых вещей

Проблемы в библиотеках

Часть вещей приходится писать самим

Плюсовики переходят на Go с трудом

Page 19: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Выводы. Результаты.

19

В 2 раза медленнее C++ и в 8-15 раз быстрее python*

В ~30 раз меньше потребление памяти*

* на наших задачах

Нагрузка на кластер уменьшилась на 70 %

Ручки работают уже год и не единого разрыва

Page 20: Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов

Спасибо за внимание

20

twitter: @m0sth8 email: [email protected] доклад: http://bit.ly/go-doklad