Go — это язык программирования с открытым исходным кодом, история которого началась в Google примерно десять лет назад. Сегодня Go стремительно приобретает популярность как язык будущего. В этой статье мы рассмотрим, почему Go становится все популярнее и важнее в мире разработки, особенно в DevOps.
Go был создан несколькими опытными инженерами, а именно Кеном Томпсоном, Робом Пайком и Робертом Гризмером, которые ранее уже работали над несколькими заметными проектами. Первая версия языка Go была открыта для публики в 2009 году, а версия 1.0 выпущена в 2012 году.
Давайте посмотрим внимательнее, почему же все в таком восторге от Go.
Куда двигается Go?
Давайте посмотрим на Google trends. Какой уровень интереса к Go по данным Google (поисковые запросы)? Как видим, интерес к Go постоянно растет.
В отчете “Навыки разработчика 2019” от HackerRank второй год подряд Go — это язык №1, который разработчики хотят изучать. Кроме того, доля людей, знающих Go, выросла до 8.8% (на 45% в сравнении с прошлым годом).
Согласно отчету о найме инженеров программного обеспечения за 2019 год, Go является самым востребованным языком программирования.
Согласно исследованию заработной платы журнала Dice, Go занимает первое место в списке самых высокооплачиваемых технических навыков в 2019 году.
На сегодняшний день сообщество разработчиков Go распространяется на 44 страны, 140 групп и насчитывает 66962 участников. И, конечно, растет день ото дня.
Go также один из самых быстро растущих языков на GitHub в первом квартале 2019 года . Go вырос уже почти до 8% с изменением на 0,7% по сравнению с прошлым кварталом.
Почему же Go подходит для DevOps?
Go разработан, чтобы сделать программирование простым. Его создатели сфокусировались на скорости компиляции, ортогональности концепций и на необходимости поддерживать такие функции, как параллелизм и сборка мусора. И да, ваши любимые инструменты, такие как Kubernetes, Docker и многие другие, написаны на Go.
Go идеален для работы со средами, в которых вы не можете или не хотите устанавливать зависимости, потому что он компилируется в отдельный двоичный файл. Без полной настройки среды задачи решаются быстрее, чем с другими языками программирования.
Этот язык предназначен для быстрой работы в сети. Google и многие другие компании поддерживают его, он постоянно улучшается. Следует повторить: Go прост для понимания, что облегчает тестировщикам и разработчикам чтение кода и улучшает взаимодействие друг с другом. Даже если у вас появились новые участники в команде, они разберутся в коде в течение нескольких дней.
После заявления основателя компании Apcera Дерека Коллисона о том, что Go станет основным языком для системной работы в IaaS и PaaS в течение 24 месяцев, многие энтузиасты облачных вычислений проявили особый интерес к этому языку.
Тобиас Лютке, один из основателей и глава Shopify, заявил, что Go станет доминирующим языком для серверной работы.
Опрос The New Stack показал, что в будущем Go будет особенно часто использоваться в DevOps.
Функции, за которые в DevOps любят Go
- Простой, надежный и продуктивный.
- Открытый исходный код.
- Быстрая компиляция и выполнение.
- Простое управление зависимостями.
- Качественно составленные полезные пакеты stdlib.
- Простая обработка ошибок.
- Один бинарный файл для управления всеми другими.
- Кросс-компиляция.
- Сборка мусора.
- Читабельность.
- Встроенное тестирование.
- Профилирование.
Популярные DevOps инструменты, написанные на Go
- Kubernetes
- GitHub
- Helm
- Docker
- Terraform
- Prometheus
- Etcd
- Grafana
- Jaeger
- Honeycomb
- Istio
Go превосходно подходит для микросервисных архитектур
Скажем, у вас есть монолитная архитектура и тысячи строк кода. Найти ошибку, которая остановила систему, будет трудоемкой задачей, и вот здесь возникает концепция микросервисов.
Микросервисная архитектура разбивает приложение на более мелкие, затем разделяет их по логическим доменам и делает их независимыми элементами. Теперь легко отследить, какой компонент спровоцировал ошибку.
Но почему именно Go хорош для микросервисов?
Параллелизм!
Go отлично подходит для современных вычислений, особенно когда речь заходит об облачных вычислениях и микросервисных архитектурах. Масштабируемость — одна из главным проблем современного программного обеспечения и облачных разработок. Несколько микросервисов не играют большой роли. Но что произойдет, если в вашей системе их тысячи? Параллелизм становится жизненно необходимым, здесь Go играет важнейшую роль.
Успешные примеры использования Go
Go в CloudFlare
Railgun, программное обеспечение CloudFlare, широко использует go-рутины и каналы. Go-рутины обрабатывают мультиплексные интернет-соединения, а функция параллелизма в Go была реализована и принята CloudFare в 2012 году.
Go в SoundCloud
SoundCloud использовал такие функции Go, как статическая типизация и быстрая компиляция, для выполнения статического анализа почти в реальном времени и модульного тестирования в фазе разработки. Сборка, тестирование и развертывание приложений Go с помощью системы развертывания происходит очень быстро.
Go на BBC
Уильям Перкинс, ведущий разработчик BBC, подтвердил, что BBC использует Go с 2013 года. Некоторые из их старых систем проработали более года без проблем, всего было запущено более 10 Go приложений c более чем 50 узлами на AWS (данные на 2015 год).
Go в Bitly
Согласно официальному блогу, Bitly используют Go в продакшне. В то время как большая часть сервисов написана на Python, они максимально использовали каналы и go-рутины для написания простого кода, который распараллеливает HTTP-запросы к нижестоящим системам или собирает записи на диск.
Go в Dropbox
DropBox — это солидная компания, большая часть инфраструктуры которой на сегодняшний день написана на Go. Dropbox мигрировал с Python на Go из-за критически важных бэкендов для лучшей поддержки параллелизма и более высокой скорости выполнения. К 2017 году в Dropbox было 1,3 миллиона строк кода на Go.
Кто еще использует Go?
UBER — у UBER есть функция GeoFence, показывающая пользователю доступность автомобиля в определенном месте и соответствующую цену. Эта функция написана на Go.
BBC Worldwide — BBC Worldwide внедрила Go для разработки бэкенда и производства различных игр.
SoundCloud — SoundCloud использовал Go для разработки своей системы сборки и развертывания.
Google — Google использует Go в множестве внутренних проектов. Служба, запускающая dl.google.com —для Chrome, Earth, Android SDK, и др.— была переписана на Go.
Twitter — 5 миллиардов сессий приложения Twitter ежедневно проходят через Go, это колоссально.
Medium — база данных Neo4j управляется службой GoSocial и написана на Go.
GitHub — огромная часть инфраструктуры GitHub сейчас на Go, включая всю серверную часть Actions.
Вот полный список компаний, использующих Go по всему миру.
Просто попробуйте
Go прост в изучении, прост в чтении и очень мощный. Go уже разработал инструменты для вас. Вот почему многие компании мигрируют на Golang с других языков и разрабатывают эффективное программное обеспечение.
На настоящий момент сформировалась экосистема с множеством библиотек. Также существуют центральные модульные репозитории, такие как GoCenter, из которых можно загрузить публичные модули Go.
Кроме того, компании могут использовать такие инструменты, как Artifactory, позволяющие хранить частные модули, публичные модули и скомпилированные бинарные файлы.
Go сейчас находится во вдохновляющей стадии, его очень активное сообщество развивается с каждым днем. Код, написанный на Go, прост в обслуживании. Программисты Go пользуются большим спросом, и, как мы увидели, на этом языке написана большая часть инструментов DevOps. Go предсказуемо легко сочетается с миром DevOps и останется в нем надолго.
Читайте также:
А еще вы можете проверить ваши знания:
Перевод статьи Pavan Belagatti: Why Go is a great fit for DevOps