Главное Авторские колонки Вакансии Образование
275 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как мы открыли для себя Go, перевели на него почти все проекты и что из этого получилось

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

Еще год назад языками программирования, которые мы в ЛДБИТ использовали для бэкенда, были Python, Java и PHP. Если представить в процентном соотношении, то картина выглядела следующим образом:


ЛДБИТ, используемые языки программирования на июль 2022 года

Java мы предпочитали остальным, Python использовали из-за большого количества старых проектов на Django, на PHP выполняли простые рядовые задачи (типа презентационных сайтов на WordPress) и развлекались по мелочи (Laravel, Yii 2).

Но шло время: появлялись новые проекты, готовые проекты развивались. Вместе с тем росли и серверные мощности, ну и конечно счета. В один ужасный момент мы перешагнули психологический барьер наших финансовых затрат относительно хостинга. Лицензировать новые проекты не успевали, на горизонте начинали маячить проблемы относительно безопасности: банальной кражи кода и нарушений правил интеллектуальной собственности, плюс потенциальные риски для заказчиков.

Мы задумались о переезде.

Поиск нового решения

Переезде на другой язык программирования.

Основными критериями при поиске решения (нового для нас языка программирования) являлись:

  1. Компиляция в нативный код;
  2. Минимальное использование ресурсов для работы;
  3. Большое комьюнити;
  4. Большое количество библиотек для быстрой разработки решений.

В результате многодневных поисков мы пришли к следующему выбору: Rust или Golang. Rust показался нам слишком «тяжелым» для быстрого освоения и долгим для перевода команды на него. А вот с Golang ситуация оказалась диаметрально противоположной.

Ради эксперимента мы переписали несколько наших имеющихся продуктов на Go. В результате замеров выяснилось, что потребление ресурсов снизилось почти на 70% (В сравнении с предыдущим решением на Django 2). После мы решили посчитать финансовую экономию решения. Снижение суммы платежа на VDS для одной инсталляции этого проекта на 43% еще больше укрепило наше понимание, что мы движемся в верном направлении.

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

Еще одним нашим удивлением было то, что наши сотрудники с Java и Python на Go перешли буквально за пару недель без каких-либо проблем (разумеется переход с Java был более быстрым и легким, чем с Python, но и питонисты не подкачали). Проще всего, естественно, переход дался тем сотрудникам, кто до этого имел дело с C++.

Что имеем сейчас

Сейчас мы практически перестали разрабатывать решения на Java/Python/PHP и стараемся решать поставленные задачи с помощью Golang, благо с каждым новым проектом они становятся интереснее и сложнее. Разумеется, есть проекты и сфера деятельности (да здравствует «кровавый энтерпрайз»), где Java доминирует. Тут без вариантов. Java так Java. Ну и если клиент настаивает на решении задачи с помощью Python и переубедить его не удается — берем «питона». Простые задачи продолжаем решать на PHP.

Планируем ли мы мигрировать дальше и вкатываться в Rust? Пока мы не видим для себя сильно значимых аргументов для этого. Поэтому сейчас продолжаем по-максимуму использовать Golang.

И в заключении — наш текущий стек бэкенд-языков:


ЛДБИТ, используемые языки программирования на июль 2023 года

Про сам язык программирования Go мы расскажем в одной из следующих нашей статей.

Ну а пока желаем всем продуктивной рабочей недели. Увидимся.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.