Язык программирования Go в жизни системного администратора
werom2
0 views
21 slides
Oct 18, 2025
Slide 1 of 21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
About This Presentation
Язык программирования Go
в жизни
системного администратора
Size: 545.9 KB
Language: ru
Added: Oct 18, 2025
Slides: 21 pages
Slide Content
Язык программирования Go
в жизни
системного администратора
Даниил Подольский,
руководитель технической службы
Git in Sky
Немного о себе и о нас
Компания Git in Sky
●управление чужой инфраструктурой
●иногда -большой инфраструктурой
●работа со сложными клиентами и задачами -
например, 50 настроенных вручную Gentoo, не
обновлявшихся пару лет
Наши задачи:
●быстро взять под контроль 10-50 машин
●оформить пожелания заказчика в виде инструкций
для конфигурационных роботов
●Решить для заказчика нестандартные проблемы -
например, собрать преконфигуренный
дистрибутив с инсталлятором
Средства, которыми мы
пользуемся:
●Ansible
●Docker
●KVM на linux
●KVM на SmartOS
●ну и всякое самописное
Языки, которыми мы
пользовались:
C * Lua * ObjectiveC
C++ * Java * JavaScript
Perl * Groovy * Asm 8086 *
Python Scala
PHP Bash *
Как мы выбирали Go
Мы попробовали несколько новых языков:
●erlang
●Котлин
●Nim
●До Rust дело не дошло
Мы пробовали их параллельно, силами нескольких
инженеров
Как мы выбрали Go
Мы просто получили на Go работающий проект
быстрее, чем на других языках.
Уже потом выяснилось что:
●достаточно полный toolset
●работающая cross-компиляция
●хороший runtime
●прекрасная стандартная библиотека
Оновная часть:
особенности Go
и как мы их используем
Примеров кода не будет!
●Они плохо смотрятся на экране
●Не весь упомянутый код опубликован
●Доклад не про код, а про возможности
особенности Go:
быстрая компиляция
●Как сделать что-нибудь заковыристое на
удаленной машине?
●А если это Windows?
●Или SmartOS?
●Благодяря быстрой компиляции Go можно
использовать как скриптовый язык. Ну -почти
можно.
особенности Go:
Cross-компиляция
Как собрать с удаленной машины неизвестной
конфигурации информацию?
●Скомпилил
●отправил
●получил отчет
●почитал
●...
●профит
особенности Go:
хороший шедулер для IO
удобная стандартная библиотека
●простой потоковый преобразователь данных -svg
proxy, 68 строк
●сервис сбора статистики с aerospike по telnet и
отправка ее в statsd, 334 строки
●TCP proxy for Windows, 215 строк
●StatsDaemon для OpenTSDB, 81 строка патча
●nginx2statsd, UDP syslog collector, 180 строк
особенности Go:
хорошие СУБД драйвера
●DjarvurFS как прокси к NoSQL кластеру
●aerospike proxy для perl
особенности Go:
компиляция в нативный код
низкие накладные расходы
●Stress-test пяти almost-the-same-
functionality shared-nothing-cluster no sql
субд
●Нагрузочное тестирование всего по
сложным алгоритмам -замена yandex
tank
особенности Go:
реальная кросплатформенность
●Система управления виртуальными
машинами -linux и solaris
●агент сбора статистики
●Pingpongo -ping-тестер с отправкой
статистики в statsd
особенности Go:
просто удобный язык :)
●VNC-go-Web, websoсkify proxy с
авторизацией на куках.
●RTBgit -замена RTBkit без
переусложнения
полгода использования Go:
что нам нравится
●Кроскомпиляция и
кросплатформенность
●self-contained исполняемые файлы
●приемлемая -мягко говоря -скорость
полгода использования Go:
что еще нам нравится
●Полезные и производительные проекты в
количестве
●плавная кривая вхождения,
жесткий синтаксис
A Tour of Go
The Go Playground
●квалифицированное сообщество
полгода использования Go:
что нам НЕ нравится
●Exceptions -их нет
●Polymorphism -его нет, но это не
очевидно
●жесткий синтаксис
полгода использования Go:
что мы будем делать на нем
●мелкие утилиты для админской работы
●TCP, UDP, HTTP сервера и клиенты
●Сайты
●высоконагруженные сетевые проекты
полгода использования Go:
что мы НЕ будем делать на нем
●Вычислительные задачи -
шедулер по IO
●Embeded приложения -
исполнимый файл великоват