Golang для мобильной разработки: почему это хорошее решение
Go (Golang) — это статически типизированный компилируемый язык программирования с открытым исходным кодом. Go разработали Роберт Гриземер, Роб Пайк и Кен Томпсон для Google в 2007 году, но широкой аудитории он стал доступен в 2009-м.
Этот язык программирования был задуман как более простая в освоении альтернатива C# и очень быстро завоевал доверие разработчиков по всему миру. На нём написаны Kubernetes и Docker, самые популярные инструменты для контейнеризации и оркестрации приложений. Cloudflare, Netflix и Dropbox также выбрали Go для решения своих задач.
А ещё на сегодня Go — один из наиболее часто изучаемых языков программирования: опытные разработчики осваивают его и используют в проектах наряду с Python, PHP и Java.
Более 12 лет команда Surf занимается созданием IT-решений для стартапов и крупных компаний из таких отраслей как финтех, фудтех и e-commerce. Мы знаем, на что обращать внимание при выборе языка программирования, как выпустить сильный продукт, уложиться в бюджет и сроки. В статье проведём краткий экскурс по Go и расскажем, подходит ли он для разработки мобильных приложений.
За что разработчики ценят Golang
Низкий порог вхождения. Новый программист middle+ может подключиться к работе над проектом на Golang после нескольких недель обучения. Благодаря простоте этого языка, команде не придётся отвлекаться на онбординг. Далеко не все языки программирования возможно освоить, и тем более — начать применять в такие сжатые сроки.
Чистый и понятный код. Благодаря инструментам Go, написать чистый код проще и быстрее, чем на других языках, при этом мы не теряем в функциональности.
Высокая производительность. Go использует в пять раз меньше памяти, чем, например, Java, а ещё у него есть эффективный сборщик мусора. Это помогает добиться высокой производительности приложения и ускорить процесс его создания.
Известные компании выбирают данный язык программирования для обработки миллионов одновременных запросов.
Например, Bitly перешла с Python на Go, поскольку компании был нужен простой язык с высокой производительностью. Вскоре они заметили, что для той же рабочей нагрузки требуется меньшее количество серверов, время отклика системы сократилось почти вдвое, копирование файлов в Google хранилище значительно ускорилось — при этом процессор загружен меньше, чем раньше.
Превосходный уровень совместимости с микросервисной архитектурой. Go справляется с высокими нагрузками на систему и способен поддерживать сложную микросервисную архитектуру. Это огромное преимущество для крупного бизнеса — и особенно ценное, когда количество микросервисов исчисляется в сотнях и тысячах.
Банк Monzo использует более 1600 микросервисов в разработке своих платформ. Go выбрали как один из ведущих языков программирования для бэкенда и не разочаровались.
Senior разработчик, Monzo
Масштабируемость. По мере развития проекта код на Golang легко писать и поддерживать. Вам не придётся задумываться о смене тех стека на каком-либо этапе его роста.
Многопоточность. У Go есть горутины, благодаря которым достигается многопоточность. Этот язык программирования имеет собственный планировщик задач, который помогает сделать расход ресурсов эффективнее и снизить стоимость создания многопоточного приложения.
Twitch использует Go для разработки высоконагруженных сервисов, и он отлично справляется с такими задачами. Миллионы одновременно транслирующихся видео и миллиарды сообщений пользователей каждый день не являются препятствием.
Высокая скорость исполнения. Golang — компилируемый язык. Компилятор переводит целую программу с языка высокого уровня на язык более низкого уровня, преобразуя её в исполняемый код. В интерпретируемых языках преобразование проходит построчно, что существенно замедляет скорость исполнения программы.
Быстрое обнаружение багов. Go — статически типизированный язык программирования. Любая переменная известна во время компиляции. Компилятор выполняет всевозможные проверки, за счёт этого баги легко обнаружить на ранней стадии работы над проектом.
Высокий уровень безопасности. Какой бы язык программирования вы ни выбрали, важно понимать, что сам по себе он не предназначен для защиты данных. Однако у каждого языка есть особенности, которые помогают разработчикам обеспечить высокий уровень безопасности.
Например, в Go есть база данных контрольных сумм. С ней разработчикам проще убедиться, что ранее зафиксированные модули не были изменены, обнаружить неправильное поведение прокси или исходных серверов.
А ещё сообщество Go разработчиков регулярно создаёт дополнительные инструменты для повышения уровня безопасности. Ими могут пользоваться все желающие. Зная об этих преимуществах Golang, язык нередко выбирают банки и финтех-компании, для которых вопрос защиты данных стоит особенно остро.
Возможность кроссплатформенной разработки. Программист может создавать исполняемые файлы для всех платформ, поддерживающих Go — например, UNIX, Linux, Windows. При этом процесс тестирования существенно упрощается, а для распространения пакетов доступ к конкретной платформе не требуется.
Большой выбор инструментов и библиотек. С Go программист может использовать сотни открытых библиотек, баз данных, фреймворков и других инструментов. Это помогает оптимизировать и существенно ускорить процесс создания приложения.
Развитое сообщество разработчиков по всему миру. У Go молодое и активное комьюнити, это упрощает работу с языком программирования, позволяет разработчикам внедрять новые инструменты в свою работу и обмениваться опытом.
Подходит ли Go для разработки мобильных приложений
По своему опыту можем уверенно сказать, что Golang — одно из самых эффективных решений для разработки бэкенда приложений. В Surf мы часто комбинируем собственные решения на базе Java, Kotlin, BaaS и, конечно же, используем Go.
Golang универсален. Его можно применять для программирования баз данных, автоматизации, DevOps, для создания мобильных и веб-приложений. Он отлично справляется как с простыми, так и со сложными мультимедийными приложениями, такими как платформы потокового видео и ERP-системы.
Вместе с Flutter — кроссплатформенным фреймворком для разработки фронтенда мобильных и веб-приложений — они составляют своего рода лучший «технический альянс», который одновременно обеспечивает быструю разработку и нативную производительность. Оба кроссплатформенные, оба разработаны Google и позволяют создавать приложения для самых разных сфер бизнеса.