Рубрика «golang» - 2

Дисклеймер

ВАЖНО: Это учебная статья для начинающих

Данный материал — первая часть цикла, где мы поэтапно изучаем net/http.

Код в этой статье сознательно упрощён для ясности изложения и тНЕ является production-ready.

Что опущено в этой части (будет в следующих):

  • Меры безопасности (CSRF, security headers, валидация)

  • Graceful shutdown и таймауты

  • Structured logging (slog)

  • Полноценная архитектура

Цель данной статьи: показать базовые механизмы net/http на практическом примере.

Не используйте этот код в production без доработок.

Введение

Читать полностью »

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе?

Разработка больших сервисов неизбежно приводит к необходимости управлять множеством зависимостей. В этом контексте мы говорим о долгоживущих компонентах, чья работа обеспечивается отдельными горутинами: как правило, это блокирующий метод (например, Start), внутри которого крутится цикл обработки.

Примерный сценарий жизненного цикла сервиса выглядит так:

При запускеЧитать полностью »

«Жизнь требует движения» (Аристотель)

«Жизнь требует движения» (Аристотель)

Привет! Это моя первая статья тут, я надеюсь получилось читабельно и интересно :-)

Читать полностью »

Привет! В данной статье хотел бы раскрыть тему - почему на 'младших' стендах api работает стабильно, но в проде начинаются проблемы: рост памяти, кол-во горутин множится, и через несколько часов - просадка производительности, gc не справляется, out of memory killer и т. д.

Давайте разберемся, что разработчику может помочь, чтобы он мог спать спокойно после деплоя своего решения. Попробуем детально разобраться в природе утечек ресурсов, научимся находить их с помощью профилировщиков и построим систему защиты от самых распространённых паттернов утечек.

Что внутри

Разобьем на несколько частей, в 1-ой части:

Всем привет! Меня зовут Яна Курышева, и я тимлид одной из команд разработки бэкенда в Спортсе’’.

Мы – спортивное медиа. Наш продукт – это сайт и приложения со спортивной статистикой, новостями, редакционным и пользовательским контентом, пушами, рекомендациями и комментариями. 

За 25+ лет развития архитектура Спортса’’ стала достаточно разнообразной под капотом: десятки микросервисов на Go соседствуют с монолитными Perl- и PHP-приложениями, которые мы планомерно переводим на новый стек.

Чтобы вся система оставалась управляемой, мы активно используем трейсинг с помощью Elastic APMЧитать полностью »

Не нашел перевод этой статьи, решил сделать, ногами не бейте

Оригинал: Understand Go pointers in less than 800 words or your money back
Автор: Дэйв Чейни
Дата: 26 апреля 2017 г.

Проще говоря, указатель — это значение, которое указывает на адрес другого значения. Это определение из учебников, но если вы пришли из языка, который не позволяет работать с адресами переменных, эта фраза может показаться магической.

Давайте разберемся.

Что такое память?

Читать полностью »

«Rust — это когда ты контролируешь каждый байт.
Go — это когда ты делаешь сервис, а не борешься с компилятором.»

Введение

Rust и Go часто оказываются по разные стороны инженерных холиваров.
Кто‑то называет Go «языком для продакшна», кто‑то утверждает, что Rust — «единственный способ спать спокойно после деплоя».

Я работал с обоими языками: писал микросервисы на Go, системы обработки событий и сетевые агенты на Rust.
В этом посте — не теоретическое сравнение, а практическое: где Rust реально оправдан, а где Go дает фору по скорости разработки и стабильности.


Производительность

Читать полностью »

Привет! Меня зовут Павел Агалецкий, я ведущий инженер в платформе Авито. Эта статья на одну из самых холиварных тем, о которой вы могли слышать или читать множество раз. При обсуждении Go, особенно новичками или представителями других языков программирования, камнем преткновения обычно становится проверка ошибок — if err != nil.

Рассказываю, какие есть особенности и нюансы, сравниваю обработку ошибок в Go и других языках. Говорим о подходах к изменению обработки ошибок и обсуждаем последний proposal от Яна Тейлора. А еще разбираемся, почему все предложения отклонялись.

Читать полностью »

Всем привет! Меня зовут Алексей Майшев, я работаю Go-инженером в Авито. В этой статье рассказываю, как мы с командой независимых разработчиков 9 месяцев проектировали и разрабатывали кэш-библиотеку следующего поколения для Go — otter

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js