RSS Telegram YouTube Apple Яндекс Spotify Google Amazon Почта

30. Резульатыт опроса Go разработчиков, CGO-пакеты

17.12.2023

Скачать

К списку выпусков

Ссылки выпуска:

Go Developer Survey 2023 H2

Размер организации:

Вид бизнеса:

  1. 90% респондентов удовлетворены использованием Go.
  2. Доля пользователей Windows растет; особенно среди начинающий разработчиков. На первых местах по прежнему Linux (63%) и macOS (58%).
  3. Однако пальму первенства ожидаемо занимает Linux (96%) среди целевых ОС для деплоя.
  4. Самые популярные среды разработки: VS Code (44%), GoLand (31%) и Vim / Neovim (16%).
  5. Топ-3 облачные платформы: AWS (48%), GCP (29%), Microsoft Azure (14%). Последняя платформа популярная среди крупных компаний (>1000 сотрудников).
  6. Топ СУБД: PostgreSQL (59%), Redis (38%), MySQL (30%), sqlite (29%), MongoDB (22%), MariaDB (12%). Крупные компании используют cloud-specific СУБД.
  7. Пророчества, что protobuf заменит JSON пока не сбывается: JSON по прежнему крайне популярный формат данных (96%). Далее: YAML (54%), CSV (45%), Protocol buffers (44%), XML (21%), TOML (17%).
  8. Другие популярные технологии среди опрошенных: gRPC (47%), Terraform (26%), Apache Kafka (22%), ElasticSearch (21%), GraphQL (17%), RabbitMQ (17%).

Особо акцентированные проблемы среди опрошенных - это структурирование проекта (54%) и лучшие практики (47%). Большинство разработчиков на Go при создании нового проекта начинают с нуля (37%), либо копируют базовую структуру проекта из похожего проекта (33%).

“Finding an appropriate structure and the right abstraction levels for a new project can be quite tedious; looking at high-profile community and enterprise projects for inspiration can be quite confusing as everyone structures their project differently” — Professional Go developer w/ 5 – 9 years of Go experience

Решение проблемы - предложение структуры проекта с примерами, подключением к СУБД, тестами.

Обработка ошибок - по прежнему дебатируемая тема. Тут наблюдается некоторый раскол. Чуть больше половины (55%) удовлетворено обработкой ошибок в Go. Однако, значительная доля опрошенных считает обработку ошибок слишком многословной (43%). 31% опрошенных предлагает рассмотреть упрощение, например, оператор ? в Rust (31%).

ML/AI стремительно адаптируется сообществом для (список не полный):

  1. написания тестов (49%);
  2. автокомплита (47%);
  3. написания документации (36%);
  4. кодогенерации (20%);
  5. объяснения что делает код (18%);
  6. конвертация из других ЯП (15%).

В этом году команда Go решила в опросе измерить как много опрошенных разработчиков использует микросервисы. Разработчики из больших компаний (>1000 сотрудников) преимущественно адаптируют микросервисную архитектуру. 43% опрошенных ответили положительно. 28% применяют как микросервисную архитектуру, так и монолиты. 21% работают над монолитами.

Интересны результаты по количеству микросервисов. 4% имеют всего один микросервис (мкрсв) в своем приложении. 2-5 мкрсв у 40% опрошенных. 6-10 мкрсв у 20%. 10+ мкрсв у 37%. Мне очень хотелось бы узнать у разработчиков, у которых 10 и менее микросервисов почему они выбрали эту архитектуру.

Самые большие проблемы (данные опроса) этой архитектуры - это тестирование, отладка (46%), инфрастуктура (38%), консистентность данных (30%).

Чаще всего вместе в микросервисном решении помимо Go используют Python (33%), Node.js (28%), Java (26%). 26% пишет только на Go.

Модели коммуникации в микросервисной архитектуре (не полный список):

  1. request - response (RPC, HTTP, REST) (72%)
  2. очереди сообщений (14%)
  3. pub/sub (9%)
  4. GraphQL (2%)

go-sqlite

Вышла стабильная версия пакета https://github.com/zombiezen/go-sqlite для работы с SQLite3. Главная особенность пакета - нет зависимости от C, т.е. сборка без CGO. Это не единственный проект. Я знаю по крайней мере 3 таких. Однако, исторически сложилось так, что самый популярный - это https://github.com/mattn/go-sqlite3. И это CGO пакет.

Чем же плох CGO?

До версии 1.21 Go еще и отличался очень медленным C FFI (foreign function interface) оверхедом. 500 млн запросов к C функции в Go выполнялся медленнее других ЯП: 36 секунд. В Go 1.21 это время сократилось до 7 секунд, что все еще медленно по сравнению даже с java.

JetBrains предлагает AI Assistant

К списку выпусков