1. Вступление, или “что это за хрен с горы”
1.1. Кто мы такие и при чем тут языки программирования
1.2. На чем мы программировани раньше
1.3. Почему мы обратили внимание на язык Go
1.4. Почему не бросили эту затею через неделю
2. Основная часть, или что, как и почему мы делаем именно на Go
2.1. Автоматизация
2.1.1. Мы все автоматизируем ansible
2.1.2. Но даже и тут есть что поделать на именно Go
2.2. Сбор информации неизвестно с чего неизвестно где
2.2.1. Скомпилил, отправил, получил отчет, почитал, профит
2.3. Простые нагруженные сервисы
2.3.1. svg proxy, преобразование данных на лету
2.3.2. сбор статистики, telnet to statsd
2.3.3. HAProxy proxy for Windows
2.3.4. StatsDaemon, patch для OpenTSDB
2.3.5. nginx2statsd
2.4. Сервисы доступа к СУБД
2.4.1. Файловая система DjarvurFS
2.4.2. Ну и вся прочая мелочь
2.5. Нагрузочное тестирование
2.5.1. Проблема нагрузочного тестирования: создать большую нагрузку при ограниченных ресурсах
2.5.2. И хорошо бы минимизировать влияние средства тестирования на результаты тестов
2.6. Сложные сервисы нашей разработки
2.6.1. VNC over Web
2.6.2. Система управления виртуальными машинами
2.6.2.1. Вы слышали про SmartOS?
2.6.3. Pingpongo
2.6.4. Rtbkit не нужен
3. Заключение, или “нет у революции конца”.
3.1. Полгода использования
3.1.1. Что нам нравится
3.1.2. Что нам не нравится
3.1.3. Что мы планируем сделать на Go в ближайшее время
3.1.4. Чего мы не будем делать на Go никогда
3.2. Вопросы?
язык программирования Go в жизни системного администратора
1. Язык программирования Go
в жизни
системного администратора
Даниил Подольский,
руководитель технической службы
Git in Sky
2. Немного о себе и о нас
Компания Git in Sky
● управление чужой инфраструктурой
● иногда - большой инфраструктурой
● работа со сложными клиентами и задачами -
например, 50 настроенных вручную Gentoo, не
обновлявшихся пару лет
3. Наши задачи:
● быстро взять под контроль 10-50 машин
● оформить пожелания заказчика в виде инструкций
для конфигурационных роботов
● Решить для заказчика нестандартные проблемы -
например, собрать преконфигуренный
дистрибутив с инсталлятором
6. Как мы выбирали Go
Мы попробовали несколько новых языков:
● erlang
● Котлин
● Nim
● До Rust дело не дошло
Мы пробовали их параллельно, силами нескольких
инженеров
7. Как мы выбрали Go
Мы просто получили на Go работающий проект
быстрее, чем на других языках.
Уже потом выяснилось что:
● достаточно полный toolset
● работающая cross-компиляция
● хороший runtime
● прекрасная стандартная библиотека
8. Оновная часть:
особенности Go
и как мы их используем
Примеров кода не будет!
● Они плохо смотрятся на экране
● Не весь упомянутый код опубликован
● Доклад не про код, а про возможности
9. особенности Go:
быстрая компиляция
● Как сделать что-нибудь заковыристое на
удаленной машине?
● А если это Windows?
● Или SmartOS?
● Благодяря быстрой компиляции Go можно
использовать как скриптовый язык. Ну - почти
можно.
11. особенности Go:
хороший шедулер для IO
удобная стандартная библиотека
● простой потоковый преобразователь данных - svg
proxy, 68 строк
● сервис сбора статистики с aerospike по telnet и
отправка ее в statsd, 334 строки
● TCP proxy for Windows, 215 строк
● StatsDaemon для OpenTSDB, 81 строка патча
● nginx2statsd, UDP syslog collector, 180 строк
13. особенности Go:
компиляция в нативный код
низкие накладные расходы
● Stress-test пяти almost-the-same-
functionality shared-nothing-cluster no sql
субд
● Нагрузочное тестирование всего по
сложным алгоритмам - замена yandex
tank
14. особенности Go:
реальная кросплатформенность
● Система управления виртуальными
машинами - linux и solaris
● агент сбора статистики
● Pingpongo - ping-тестер с отправкой
статистики в statsd
15. особенности Go:
просто удобный язык :)
● VNC-go-Web, websoсkify proxy с
авторизацией на куках.
● RTBgit - замена RTBkit без
переусложнения
16. полгода использования Go:
что нам нравится
● Кроскомпиляция и
кросплатформенность
● self-contained исполняемые файлы
● приемлемая - мягко говоря - скорость
17. полгода использования Go:
что еще нам нравится
● Полезные и производительные проекты в
количестве
● плавная кривая вхождения,
жесткий синтаксис
A Tour of Go
The Go Playground
● квалифицированное сообщество
18. полгода использования Go:
что нам НЕ нравится
● Exceptions - их нет
● Polymorphism - его нет, но это не
очевидно
● жесткий синтаксис
19. полгода использования Go:
что мы будем делать на нем
● мелкие утилиты для админской работы
● TCP, UDP, HTTP сервера и клиенты
● Сайты
● высоконагруженные сетевые проекты
20. полгода использования Go:
что мы НЕ будем делать на нем
● Вычислительные задачи -
шедулер по IO
● Embeded приложения -
исполнимый файл великоват