Найти в Дзене
Golang

⏳ Как Docker влияет на производительность вашего приложения Go

Вступление

В отличие от PHP, не существует «классического» способа развертывания вашего приложения Go. В 2022 году Docker/Kubernetes станет золотым стандартом для развертывания веб-приложений. Кроме того, некоторые разработчики предпочитают создавать и развертывать приложения Go на «голом железе» (например, с помощью Supervisor). Давайте выясним, существует ли большая разница между производительностью приложения, работающего на «голом железе», и того же приложения, которое работает как контейнер Docker.

Написание тестов

Я думаю, что лучший способ смоделировать активность приложения — это выполнить что-то, что использует память, процессор и файловую систему. Я решил написать код, который: читает большой файл (около 1 ГБ) JSON со сложной структурой и декодирует этот JSON. У нас есть следующая структура :

И код, который будет декодировать файл:

Давайте запустим код!

Я буду использовать go 1.18.1

Прежде всего, я соберу основную версию. На следующем шаге я докеризую приложение, добавив Dockerfile и создав образ.

Итак, я знаю о кэшировании файла с помощью json. Чтобы предотвратить кэширование, я буду запускать свое приложение в следующем порядке:

  • код без контейнера
  • dockerized version
  • код без контейнера
  • dockerized version
  • код без контейнера
  • dockerized version

Один запуск приложения потребляет около 2,5 ГБ ОЗУ. Давайте запустим каждую версию приложения 30 раз, чтобы гарантировать правильную интерпретацию результатов.

Результаты

После завершения цикла мы можем увидеть результат 30 прогонов. По оси Y отложено время в секундах, затраченное на синтаксический анализ JSON объемом ~ 1 ГБ. Нестабильные результаты на старте были вызваны параллельной активностью на ноутбуке. После старта я оставил свой ноутбук в покое, чтобы не было фоновой активности.

Разницу вы можете увидеть на графике. Далее я возьму только вторую часть показателей (15–30-я итерация) и посчитаю разницу (в процентах) между производительностью «голого» приложения и докеризированной версии:

-2

Голые цифры :

-3

Вывод:

После расчета средней разницы в производительности я получил результат: докеризированное приложение Go на 25,09% медленнее, чем приложение, работающее на «голом железе». Я думаю, что Docker предоставляет нам универсальный и удобный способ запуска приложений и управления ими. Более того, большинство приложений тратят большую часть времени на ожидание операций БД и операций ввода-вывода. Для этих вещей очень хорошо подходит Docker.

Go tests

Golang

#golang #javascript #programming #python #java #php #coding #backend #developer #code

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Рекомендуем почитать
🐍📋 F-строки в Python для интерполяции и форматирования строк
Из этой статьи вы узнаете, как использовать f-строки — инструмент для быстрой интерполяции и форматирования строк, который превосходит по эффективности и читабельности классические подходы с применением оператора % и метода .format(). Данная статья является переводом. Ссылка на оригинал. К концу этого руководства вы поймете, почему f-строки – это мощный инструмент, которым необходимо овладеть разработчику на Python. В этом самоучителе вы узнаете, как: Для извлечения максимальной пользы от этого руководства, вы должны быть знакомы с типом данных строк Python...
Почему существует так много эмуляторов терминалов Linux: 5 причин
Одним из наиболее бросающихся в глаза аспектов Linux является огромное количество доступных эмуляторов терминалов. Существует множество вариантов, отличающихся по функциями, концепциям и уровням настройки. Это, естественно, вызывает вопрос: Почему так много вариантов? Истоки эмуляторов терминалов берут свое начало в далеких 60-х и 70-х годах, когда пользователи взаимодействовали с компьютерами с помощью физических машин телетайпов (TTY), а позже – с видеотерминалами, такими как VT100. С развитием...
9 Операционных систем с открытым исходным кодом, которые не связаны с Linux — откройте для себя настоящие альтернативы!
Когда слышишь словосочетание «открытый исходный код», сразу вспоминаешь Linux. Но это далеко не единственная ОС с открытым кодом. Сегодня существует множество других проектов, некоторые из которых появились задолго до Linux. Plan 9 от Bell Labs — название отсылает к культовому научно-фантастическому фильму Plan 9 From Outer Space. Эта ОС стала попыткой переосмыслить, какой может быть операционная система. Руководил проектом Роб Пайк вместе с другими членами первой команды Unix. В основе Plan 9 лежала...
Следующая статья
Документы, вакансии и контакты