Pull to refresh
71.42
Слёрм
Учебный центр для тех, кто работает в IT

Работаете с микросервисами? Идём в сторону Go

Level of difficultyEasy
Reading time4 min
Views6.1K

Разработчики приложений с микросервисной архитектурой обращаются к 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

Tags:
Hubs:
Total votes 19: ↑10 and ↓9+1
Comments5

Articles

Information

Website
slurm.io
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Антон Скобин