5 самых известных проектов, написанных на Golang

image

О языке программирования Golang, созданном корпорацией Google, на Хабре рассказывали много и подробно, так что мы не будем в очередной раз обсуждать достоинства этого инструмента. Лучше поговорим об известных проектах, которые написаны на Go — они являются доказательством если не универсальности, то разносторонности языка и его возможностей.

Кроме того, упомянем и самые известные компании, которые работают с Go. Кто знает, возможно, кто-то из читателей Хабра там уже работает, и сможет рассказать подробности. Как всегда, все самое интересное — под катом. Статья написана совместно с Никитой Кузнецовым, старшим разработчиком в компании Мегафон и преподавателем курса «Go-разработчик PRO» в Skillbox.

Docker


Это один из наиболее известных и сложных продуктов, написанных на Go. Менее чем за год эта система для запуска изолированных виртуальных машин с кастомизируемой средой стала чрезвычайно популярной.

Команда Docker решила взять на вооружение Go по нескольким причинам:

  • Статическая компиляция без зависимостей;
  • Мощная стандартная библиотека;
  • Полноценная среда разработки;
  • Возможность создания проектов для разных архитектур с минимальными (по сравнению с другими языками) затратами времени и ресурсов.


У самого Docker можно выделить три основных преимущества:

  • Возможность изоляции запущенного приложения. То есть его можно отделить от ОС хоста, работая как с управляемым приложением;
  • Относительно простой процесс разработки, тестирования и развертывания приложений;
  • Среда для запуска уже есть, ее не нужно конфигурировать, все необходимое поставляется вместе с приложением.


Kubernetes


Если говорить о Docker, то невозможно не упомянуть и другой, тесно связанный с ним проект — Kubernetes. Он тоже написан на Golang, причем его писали, фактически, создатели этого языка — разработчики из Google. Вместе с ними над Kubernetes работали представители других крупных компаний, включая IBM и Microsoft.

Перед тем, как приступить к созданию Kubernetes, разработчики из Google рассматривали возможность использования других языков, а именно C / C ++, Java и Python.

Золотой серединой в итоге стал именно Go, о чем рассказал Джо Беда, соучредитель и экс-технический руководитель проекта. Сейчас он работает в команде Vmware.

CoreOS


Конечно, нельзя сказать, чтобы вся эта ОС с открытым исходным кодом на базе ядра Linux была написана на Golang. Но основные компоненты этой системы — да, написаны. Предназначена ОС для создания инфраструктуры компьютерных кластеров, причем особое внимание уделено автоматизации, упрощению внедрения приложений, безопасности, надежности.

CoreOS предоставляет возможности для развертывания приложений внутри программных контейнеров, плюс средства обнаружения и передачи настроек.

Так вот, на Golang написаны оба демона этой ОС: etcd и fleet. Fleet позволяет обращаться с кластером CoreOS так, как если бы он имел общую систему инициализации. А etcd представляет собой распределенное хранилище ключей и значений, а также обеспечивает синхронизацию настроек между приложениями Docker и экземплярами CoreOS. Распространяются они под открытой лицензией Apache License 2.0. На Go их написали потому, что язык «предоставляет отличную кроссплатформенную поддержку, обширную экосистему и сообщество».

Istio


Это — отличная open-source технология от IBM, которая позволяет разработчикам подключать и управлять целыми сетями микросервисов. Также разработчики могут обеспечивать безопасность этих микросервисов вне всякой зависимости от платформы, источника или производителя. По словам команды, Istio — один из самых быстро развивающихся проектов с открытым исходным кодом. Его главная движущая сила — сообщество и участники Github.

Важно отметить, что Istio — часть экосистемы Kubernetes. При помощи этого инструмента разработчики могут не только соединять сервисы друг с другом, но и давать им доступ во внешний мир. При помощи Istio разработчики получают программируемую сервисную сетку, сетевые прокси между каждым контейнером в кластере Kubernetes и внешним миром.

Golang выбрали потому, что с его помощью можно создавать децентрализованные распределенные сетевые проекты, чем и является Istio.

Traefik


Это еще один сетевой проект, написанный на Go. Он представляет собой обратный прокси-сервер и балансировщик нагрузки для сетевых сервисов. Инструмент создавался для работы с широким спектром вариантов оркестровки, от Kubernetes и Docker Swarm до Amazon ECS и Azure Service Fabric. Traefik автоматически создает маршруты, необходимые микросервисам, работающим под управлением этих оркестраторов, для связи с внешним миром. Он также генерирует данные трассировки и статистику, подходящие для вашего оркестратора.

Вот основные возможности обратного прокси-сервера:

  • обеспечение сокрытия структуры внутренней сети и подробностей о находящихся в ней сервисах;
  • осуществление балансировки нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами;
  • обеспечение зашифрованного (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси. Между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети;
  • организация контроля доступа к сервисам (аутентификацию клиента), а также установить файрволл (брандмауэр).


В качестве вывода можно сказать, что Golang обеспечивает высокую производительность, подобно C и C++, работу с параллелизмом, как Java и удобство работы с кодом, аналогично Python. Golang может работает и на недорогом, медленном железе, что дает возможность бизнесу экономить на аппаратном обеспечении.

© Habrahabr.ru