язык программирования go в жизни системного...

21
Язык программирования Go в жизни системного администратора Даниил Подольский, руководитель технической службы Git in Sky

Upload: daniel-podolsky

Post on 06-Apr-2017

659 views

Category:

Software


1 download

TRANSCRIPT

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

системного администратораДаниил Подольский,

руководитель технической службыGit in Sky

Немного о себе и о нас Компания Git in Sky● управление чужой инфраструктурой● иногда - большой инфраструктурой● работа со сложными клиентами и задачами -

например, 50 настроенных вручную Gentoo, не обновлявшихся пару лет

Наши задачи:● быстро взять под контроль 10-50 машин● оформить пожелания заказчика в виде инструкций

для конфигурационных роботов● Решить для заказчика нестандартные проблемы -

например, собрать преконфигуренный дистрибутив с инсталлятором

Средства, которыми мы пользуемся:

● Ansible● Docker● KVM на linux● KVM на SmartOS● ну и всякое самописное

Языки, которыми мы пользовались:

C * Lua * ObjectiveCC++ * Java * JavaScriptPerl * Groovy * Asm 8086 *Python ScalaPHP 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 GoThe Go Playground

● квалифицированное сообщество

полгода использования Go:что нам НЕ нравится

● Exceptions - их нет● Polymorphism - его нет, но это не

очевидно● жесткий синтаксис

полгода использования Go:что мы будем делать на нем

● мелкие утилиты для админской работы● TCP, UDP, HTTP сервера и клиенты● Сайты● высоконагруженные сетевые проекты

полгода использования Go:что мы НЕ будем делать на нем

● Вычислительные задачи - шедулер по IO

● Embeded приложения - исполнимый файл великоват

Вопросы?