Команда Juno: за последние годы разработчики распробовали язык программирования Go

19 июля 2017, 10:49

Язык Go быстро завоёвывает доверие инженеров — за прошедший год он поднялся с 54 на 13 место в индексе TIOBE (в настоящий момент 10-е место) и получил звание «язык года». Чем же он так привлекателен и какие возможности в нём есть? Об этом можно будет узнать 21 июля в SPACE на первом в Центральной и Восточной Европе событии, полностью посвящённом языку Go — GoWayFest. dev.by побывал в гостях у команды Juno, поддержавшей мероприятие, и поговорил о будущем языка, его возможностях и использовании в бэкенде каршерингового продукта.

Читать далее...

Почему в бэкенде Juno — Go?

По словам архитектора Juno Михаила Гузелевича, выбирая технологический стек и архитектуру бэкенда, основатели компании учитывали свой богатый предыдущий опыт. Основное, чего они хотели избежать в новом проекте, — монолитная архитектура, С++ или языки на базе виртуальных машин. При большой нагрузке использование последних часто выливается в «тонкий тюнинг внутренностей виртуальной машины», а не в программирование. 

Учитывая эти вводные данные, выбор языка для фаундеров значительно сократился. «Go хоть и был молодым языком, но уже широко использовался инженерами, да и в интернете не было дефицита информации. К тому же у этого языка есть достаточно сильные преимущества для построения микросервисной архитектуры и размещения готового продукта в облаке. Основатели не боялись использовать новые языки и технологии, и это помогло нам найти заинтересованных людей», — говорит Михаил Гузелевич.

Бекенд-специалист уверен, что Go хорош для высоконагруженных систем, какой является Juno, поскольку в нём большой выбор низкоуровневых возможностей и хорошая утилизация ресурсов.

«Несколько лет назад, когда разговор заходил про Go, для ответа на многие вопросы нужно было лезть в потроха самого языка или в немногочисленные проекты, каждый из которых следовал своему чувству прекрасного. Теперь на Github можно как образец читать код известных проектов, тонкие моменты рассматриваются в многочисленных технических блогах. У нас тоже есть свои опенсорс-библиотеки, но в связи со спецификой бизнеса в общий доступ выкладывается далеко не всё. Каршеринг и логистика — очень конкурентная отрасль, но мы с удовольствием делимся решениями общего назначения. Например, библиотекой для работы с платёжными системами», — говорит собеседник.

Возросший интерес к новому языку Google он объясняет тем, что разработчики за последние годы «распробовали» его, и в интернете накопилась «критическая масса кода». Если раньше даже самые простые вещи Go-разработчику нужно было реализовывать самому, то теперь в этом нет необходимости. А это существенный бонус для захвата рынка. К тому же многие крупные игроки — Docker, Avito, Uber — сделали выбор в пользу этого языка.

Go-код Juno: нетипичное использование и собственный фреймворк

По словам Михаила Гузелевича, Juno нетипичным образом использует Go.

Обычная область применения этого языка — это консольные утилиты, сервера, работающие с потоком сетевого трафика или быстро раздающие контент. А команда Juno «замахнулась» на создание целого продукта. Найти подходящий фреймворк оказалось невозможно, поэтому все «велосипеды» — собственные — разработчики собирали и переделывали их по несколько раз.  

Код Juno представлен в виде микросервисной архитектуры, написан с помощью собственного фреймворка, в котором введены абстракции протокольного и транспортного уровня, изолированы работы с логированием, СУБД, трейсингом. Благодаря этому поверх фреймворка каждый микросервис получается очень простым.

При этом Go не единственный язык, используемый в Juno: на фронтенде — JavaScript, автоматизация тестирования бэкенда выполняется на Python. На нём же разрабатываются и все части, связанные с Data science, аналитикой, «биг-датой» и машинным обучением. Для остального бэкенда — эти системы являются своего рода «чёрными ящиками», предоставляющими API. Что касается мобильной разработки, то для Android — это Kotlin, а для IOS — Swift.

«В целом наше понимание микросервисной архитектуры близкое к классическому: никакого обмена через базы данных, всё общение — через API. Но есть и особенности. Например, у нас своеобразное понимание gateway. Он у нас максимально Simple и Stupid, ничего не знает о бизнес-логике, за исключением знания о пользователях, его правах и протоколах взаимодействия. Мы широко используем очереди сообщений для коммуникации между микросервисами. А сами микросервисы оборачиваем в Docker-контейнеры и деплоим их на Amazon», — поясняет архитектор Juno.

Михаил считает, что у «детища» Google хорошее будущее. «Целиком заменить другие языки он вряд ли сможет, но вот создать и занять свою нишу — вполне. Он может потеснить VM-based языки в тех местах, где нужен лучший перформанс. Но, например, некоторые ниши функциональных языков (документооборот, финансовая аналитика, налоговая отчётность) ему в ближайшее время не занять», — говорит собеседник.

«Контрибьютить в развитие языка — задача каждого из нас»

По словам представителя Juno Яны Лашкевич, популярность Go растёт семимильными шагами уже несколько лет. Многие компании контрибьютят в его развитие, например, недавно JetBrains выпустила среду разработки для языка Go. На просторах СНГ среди русскоязычного контента появляются такие проекты, как подкасты от GolangShow, Slack-канал Go-сообщества. Но несмотря на все эти шаги, мероприятий по Go очень мало. 

«На конференции JavaDay доклады по Go вызвали резонанс как в твиттере, так и среди участников, которые пришли послушать про Java, а в итоге интересовались Go. Поэтому мы решили, что есть смысл организовать отдельную конференцию по Go, — рассказывает Яна. — Инженеры Juno выступили в качестве программного комитета: помогли составить хорошую программу конференции и пригласили докладчиков из разных городов».      

По её словам, через несколько лет событий по Go станет значительно больше. Уже в этом году мероприятие «1.8 Release Party» прошло одновременно в нескольких сотнях городов мира. «Мы гордимся тем, что первое событие такого размаха в Центральной и Восточной Европе проходит именно в Минске. Контрибьютить в развитие языка — задача не отдельной компании, а каждого из нас», — говорит Лашкевич.

На вопрос «зачем Juno поддержка таких мероприятий?» она отвечает: «Мы придерживаемся позиции: чем бы мы ни занимались, нужно облагораживать среду, в которой находимся. Поскольку в нашей стране нет лазурного берега, которым можно привлечь иностранцев, нужно делать это в рамках нашей индустрии, с точки зрения инжиниринга: приглашать людей на такие ивенты и конференции».

Доклады на GoWayFest: kubernetes, garbage collection, scheduler и pipelines

Конференция будет состоять из нескольких тематик на русском и английском языках. Архитектор Gett Эйял Пост и сооснователь Juno Игорь Магазиник расскажут о бизнесе, почему крупные игроки выбирают Go, как они переходят на этот стек, какие преимущества в итоге получает и команда, и компания.

В хардкорных технических докладах спикеры расскажут о том, как устроен язык. Ребята из Англии, например, расскажут про работу «сборщика мусора» (garbage collection), спикеры из Avito — как они используют kubernetes в работе с сервисами в dev-среде, разработчик из Украины — о визуализация concurrency в Go, лидер российского Go-комьюнити — о профилировании. Ведущая подкаста GolangShow проведёт воркшоп, как писать на Go и доводить проект до продакшена.  

Стас Афанасьев из Juno расскажет про pipelines на базе стандартных интерфейсов io.Reader и io.Writer. Этот доклад будет интересен тем, кто уже познакомился с языком и тем, кто не до конца понимает концепцию io.Reader/io.Writer.   

Философский доклад Миши Кабищева из Juno будет посвящён дизайну кода.

«Про Go часто говорят, что он настолько прост, что даже не нужно заморачиваться, просто излагайте свой поток мыслей в виде кода, и он заработает. Но в большой команде это приводит к неудобствам и сложностям — код становится неподдерживаемый и нечитабельный. Поэтому я расскажу о том, как этого избежать и приведу примеры того, как на языке Go некоторые задачи лучше не решать в лоб», — сказал разработчик.     

«Конференция — место для сообщества инженеров, а не пиара решений отдельных компаний. Поэтому темы, о которых будут рассказывать спикеры, в том числе и наши ребята, не имеют отношения к Juno. Но мы всегда с радостью и гордостью делимся «своей кухней» — для этого приглашаем участников конференции на pre-party в наш офис накануне в четверг. В наших стенах можно будет пообщаться с архитекторами и инженерами бэкенда Juno, а также с нашими гостями из компании Gett и узнать поподробнее о том, что и как мы делаем», — приглашает на препати Яна Лашкевич.
 

Обсуждение