SlideShare una empresa de Scribd logo
1 de 21
Язык программирования 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 приложения -
исполнимый файл великоват
Вопросы?

Más contenido relacionado

Destacado

Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомБинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомDaniel Podolsky
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...Daniel Podolsky
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016Alex Chistyakov
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyAlex Chistyakov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015Alex Chistyakov
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016Alex Chistyakov
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBrendan Gregg
 

Destacado (11)

Go и fuse
Go и fuseGo и fuse
Go и fuse
 
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концомБинарные (файловые) хранилища- страшная сказка с мрачным концом
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
 
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...ночью через лес  Stress-test пяти almost-the-same-functionality shared-nothin...
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016
 
Blazing Performance with Flame Graphs
Blazing Performance with Flame GraphsBlazing Performance with Flame Graphs
Blazing Performance with Flame Graphs
 

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

  • 1. Язык программирования Go в жизни системного администратора Даниил Подольский, руководитель технической службы Git in Sky
  • 2. Немного о себе и о нас Компания Git in Sky ● управление чужой инфраструктурой ● иногда - большой инфраструктурой ● работа со сложными клиентами и задачами - например, 50 настроенных вручную Gentoo, не обновлявшихся пару лет
  • 3. Наши задачи: ● быстро взять под контроль 10-50 машин ● оформить пожелания заказчика в виде инструкций для конфигурационных роботов ● Решить для заказчика нестандартные проблемы - например, собрать преконфигуренный дистрибутив с инсталлятором
  • 4. Средства, которыми мы пользуемся: ● Ansible ● Docker ● KVM на linux ● KVM на SmartOS ● ну и всякое самописное
  • 5. Языки, которыми мы пользовались: C * Lua * ObjectiveC C++ * Java * JavaScript Perl * Groovy * Asm 8086 * Python Scala PHP Bash *
  • 6. Как мы выбирали Go Мы попробовали несколько новых языков: ● erlang ● Котлин ● Nim ● До Rust дело не дошло Мы пробовали их параллельно, силами нескольких инженеров
  • 7. Как мы выбрали Go Мы просто получили на Go работающий проект быстрее, чем на других языках. Уже потом выяснилось что: ● достаточно полный toolset ● работающая cross-компиляция ● хороший runtime ● прекрасная стандартная библиотека
  • 8. Оновная часть: особенности Go и как мы их используем Примеров кода не будет! ● Они плохо смотрятся на экране ● Не весь упомянутый код опубликован ● Доклад не про код, а про возможности
  • 9. особенности Go: быстрая компиляция ● Как сделать что-нибудь заковыристое на удаленной машине? ● А если это Windows? ● Или SmartOS? ● Благодяря быстрой компиляции Go можно использовать как скриптовый язык. Ну - почти можно.
  • 10. особенности Go: Cross-компиляция Как собрать с удаленной машины неизвестной конфигурации информацию? ● Скомпилил ● отправил ● получил отчет ● почитал ● ... ● профит
  • 11. особенности Go: хороший шедулер для IO удобная стандартная библиотека ● простой потоковый преобразователь данных - svg proxy, 68 строк ● сервис сбора статистики с aerospike по telnet и отправка ее в statsd, 334 строки ● TCP proxy for Windows, 215 строк ● StatsDaemon для OpenTSDB, 81 строка патча ● nginx2statsd, UDP syslog collector, 180 строк
  • 12. особенности Go: хорошие СУБД драйвера ● DjarvurFS как прокси к NoSQL кластеру ● aerospike proxy для perl
  • 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 приложения - исполнимый файл великоват