Работаете с микросервисами? Идём в сторону Go
Разработчики приложений с микросервисной архитектурой обращаются к Golang не только как к основному языку, но и как к вспомогательному — в дополнение к другим, более сложным. А мы решили обратиться к спикеру курса «Golang-разработчик» Виталию Лихачеву, Senior Software Engineer в Avito, чтобы он нам рассказал, почему лично он выбрал бы Go.
Go любит ваше железо
Если мы говорим о других популярных языках программирования — о тех же Python или PHP — то можем упомянуть стоимость оборудования: под них требуется гораздо больше железа, а железо сейчас дорогое. Go позволяет на относительно высоком уровне эффективно использовать ресурсы типа CPU и RAM. На хорошем железе, где работает PHP-приложение и обрабатывает условные 1000 RPS, приложение на Go сможет обработать до 100k RPS там же (цифры условные для понимания порядка разницы).
Go проще других популярных языков и с ним сложнее что-то сломать
Например, C++ достаточно сложный, у него нет такого удобного автоматического управления памятью (да, есть smart pointers, но это не то же самое), с чем может быть связан миллион самых разных ошибок, в том числе и критических, из-за которых приложение может упасть. В приложениях, написанных на Go, такое тоже может случиться, но для этого нужно сильно постараться — к примеру, неудачно поработать с памятью (например, unsafe). Go runtime упрощает менеджмент памяти и тебе не требуется постоянно думать: «А не рухнет ли оно в следующие 15 минут?».
Если мы возьмем тот же JavaScript, то способов ошибиться и выстрелить себе в ногу будет гораздо больше. А PHP позволяет выкатить частично работающее приложение, и разработчик не сразу заметит проблему (да, есть разные линтеры, но и они могут не все поймать).
Go позволяет писать более надежные приложения, и это суперважно, когда имеем дело с большими нагрузками и любая ошибка потенциально аффектит миллионы пользователей. Приложение с ошибками просто не скомпилируется, и его не получится выкатить в прод.
В Go будут свои проблемы, связанные с конкурентностью. Нужно понимать как использовать встроенные механизмы — горутины, каналы — корректно, чтобы избежать дедлоков или эффекта гонок, но изучить эти проблемы, чтобы знать как с ними правильно работать, не так уж сложно.
Посмотрим на сравнение Go с другими популярными языками:
Зачем используют Go?
Как только начинаешь писать не простенькие приложения, а сервисы, обрабатывающие большое количество запросов, то нужно учитывать все особенности того, как эти сервисы устроены.
Базу изучить не сложно. Мало кто использует Go как первый язык, обычно все начинают с чего-то более популярного. К примеру, на PHP, Python или Java можно полностью от и до сделать сервис, а на Go дописать микросервисную архитектуру.
То есть Go — не для новичков?
Да нет, с Golang вполне себе можно начать изучение языков программирования. Работодатели, правда, берут на работу новичков в Go только в том случае, если у них есть опыт в других языках.
Важно учесть, что Go в сравнении с другими языками имеет совсем другую модель работы — он может задействовать все ресурсы, все ядра процессора, и для этого не надо совершать много манипуляций — достаточно запустить много горутин. Не требуется совершать какие-то магические действия, чтобы запустить 10 потоков, обрабатывающих ту или иную задачу, и не надо задумываться (по крайней мере слишком глубоко), как работает в этом случае переключение контекста.
Но если изучить ещё два-три языка, то особенности каждого конкретного уже становятся не столь существенными.
Российский рынок активно ищет разработчиков на Go
И ритейл, и финтех в своей работе активно использует Go и ищет разработчиков в свои команды: Ozon, Avito, Tinkoff, Lamoda, Wildberries и многие другие.
Главное:
— Go — язык для микросервисов.
Разработчики приложений с микросервисной архитектурой предпочитают использовать Go. Не только в качестве основного языка программирования, но и как вспомогательный, дополняя им более сложные языки.
— Эффективно использует ваши ресурсы.
По сравнению с другими популярными языками, приложения на Go могут обрабатывать значительно большее количество запросов на том же оборудовании.
— Он простой и безопасный.
Go считается более простым языком программирования по сравнению с некоторыми другими, например, с C++. Его runtime упрощает управление памятью, что делает код на Go менее подверженным к критическим ошибкам.
— Позволяет создавать более надежные приложения.
Ошибки в коде обнаруживаются на этапе компиляции, что предотвращает выкатывание приложений с серьезными проблемами в продакшн.
— Подходит для высоконагруженных сервисов.
Go используется для создания надежных и производительных сервисов, особенно в условиях высокой нагрузки. Разработчики могут эффективно использовать встроенные механизмы, такие как горутины и каналы, чтобы избежать проблем с конкурентностью.
— Спрос на Go-разработчиков высок.
Российский рынок, в том числе ритейл и финтех, активно ищет разработчиков, специализирующихся на Go. Крупные компании, такие как Ozon, Avito, Tinkoff, Lamoda и Wildberries, активно используют Go в своей работе.
А если надумаете изучить Go — под катом вас ждёт приглашение на курс Виталия и специальные условия для читателей Хабра.
Посмотреть →
На практикуме Golang-разработчик изучаем основные концепции и актуальные подходы в разработке на Go, рассказываем как эффективно решать разные сложности и создаем реальный проект для вашего портфолио.
Курс подойдет:
Бэкенд-разработчикам уровня middle/middle+ на другом языке (Java, PHP, Python, etc.),
Джуниор-разработчикам на Go.
Для читателей Хабра скидка 10% на курс по промокоду HABRGO до 30.01.2024