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

Post on 15-Jan-2015

2.923 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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 %

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

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

20

twitter: @m0sth8 email: m0sth8@yandex-team.ru доклад: http://bit.ly/go-doklad

top related