Язык программирования Go в жизни системного администратора

werom2 0 views 21 slides Oct 18, 2025
Slide 1
Slide 1 of 21
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21

About This Presentation

Язык программирования Go
в жизни
системного администратора


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 приложения -
исполнимый файл великоват

Вопросы?
Tags