• Go для больших данных

    • Перевод

    В этом посте мы расскажем об использовании библиотеки ускорения аналитики данных Intel Data Analytics Acceleration Library (Intel DAAL) с языком программирования Go для пакетной, интерактивной и распределенной обработки.
    Читать дальше →
  • Go быстрее Rust, Mail.Ru Group сделала замеры

      С такой фразой мне кинули ссылку на статью компании Mail.Ru Group от 2015 «Как выбрать язык программирования?». Если кратко, они сравнили производительность Go, Rust, Scala и Node.js. За первое место боролись Go и Rust, но Go победил.

      Как написал автор статьи gobwas (здесь и далее орфография сохранена):
      Эти тесты показывают, как ведут себя голые серверы, без «прочих нюансов» которые зависят от рук программистов.
      К моему большому сожалению, тесты не были эквивалентными, ошибка всего лишь в 1 строчке кода поставила под сомнение объективность и вывод статьи.
      Восстановим справедливость?
    • Очередное решение HighLoadCup на Go

      Я думаю уже многие пользователи хабра знают что на прошлой недели закончился HighLoadCup от Mail.ru (из-за обилия количества статей от участников). Я хотел бы также поделиться своим решением с сообществом.
      Читать дальше →
      • +22
      • 4,1k
      • 1
    • Docker, или Туда и обратно

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


        Но в какой-то момент в production у наших клиентов начал появляться докер, и наш автодетект перестал работать. Процессу, который запускается через докер, проставляются различные namespace (mnt, net, user, pid), это достаточно сильно усложняет работу извне контейнера с файлами и сетью внутри контейнера.


        Под катом я расскажу, как мы решали эту проблему, какие варианты пробовали, и что в итоге заработало.

        Читать дальше →
        • +27
        • 10,6k
        • 9
      • Как написать хорошее решение для Highload Cup, но недостаточно хорошее чтобы выйти в топ

        На прошлой неделе закончилось соревнование HighLoad Cup, идея которого заключалась в реализации HTTP сервера для сайта путешественников. О том как за 5 дней написать решение на Go, которое принесет 52 место в абсолютном зачете из 295, читайте под катом.

        Читать дальше →
        • +23
        • 4,4k
        • 8
      • Как перейти на gRPC, сохранив REST

        • Tutorial

        Многие знакомы с gRPC — открытым RPC-фреймворком от Google, который поддерживает 10 языков и активно используется внутри Google, Netflix, Kubernetes, Docker и многими другими. Если вы пишете микросервисы, gRPC предоставляет массу преимуществ перед традиционным подходом REST+JSON, но на существующих проектах часто переход не так просто осуществить из-за наличия уже использующихся REST-клиентов, которые невозможно обновить за раз. Нередко общаясь на тему gRPC можно услышать "да, мы у нас в компании тоже смотрим на gRPC, но всё никак не попробуем".


        Что ж, этой проблеме есть хорошее решение под названием grpc-rest-gateway, которое занимается именно этим — автогенерацией REST-gRPC прокси с поддержкой всех основных преимуществ gRPC плюс поддержка Swagger. В этой статье я покажу на примере как это выглядит и работает, и, надеюсь, это поможет и вам перейти на gRPC, не теряя существующие REST-клиенты.


        Читать дальше →
      • Реклама помогает поддерживать и развивать наши сервисы

        Подробнее
        Реклама
      • Пишем оператора для Kubernetes на Golang

        • Перевод
        Прим. перев.: Операторы (operators) — это вспомогательное ПО для Kubernetes, призванное автоматизировать выполнение рутинных действий над объектами кластера при определённых событиях. Мы уже писали об операторах в этой статье, где рассказывали об основополагающих идеях и принципах их работы. Но если тот материал был скорее взглядом со стороны эксплуатации готовых компонентов для Kubernetes, то предлагаемый теперь перевод новой статьи — это уже видение разработчика/DevOps-инженера, озадаченного реализацией нового оператора.



        Этот пост с примером из реальной жизни я решил написать после своих попыток найти документацию по созданию оператора для Kubernetes, прошедших через изучение кода.

        Пример, который будет описан, таков: в нашем кластере Kubernetes каждый Namespace представляет окружение-песочницу какой-то команды, и мы хотели ограничить доступ к ним так, чтобы команды могли играть только в своих песочницах.
        Читать дальше →
      • RustGo: вызов Rust из Go с почти нулевым оверхедом

        • Перевод

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


        Но писать код на ассемблере, всё же, сложно, анализировать его ещё сложнее, а криптография ошибок не прощает. Разве не было бы замечательно иметь возможность писать эти функции на каком-нибудь более высокоуровневом языке?


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

        Читать дальше →
        • +32
        • 3,9k
        • 2
      • Готовим сборку Go-приложения в продакшн

          В июне на конференции РИТ++ мы с коллегой Игорем Должиковым делились опытом автоматизации процесса разработки сервисов на Go — от первого коммита и до релиза в продакшн-окружение Kubernetes (да-да, видео начинается с 07:16, и нам тоже это не нравится). С момента публикации мастер-класса время от времени я получаю вопросы по тем или иным темам, затронутым в нем. Пожалуй, самые горячие вопросы достойны отдельного рассмотрения, и сегодня я хотела бы поговорить о процессе сборки приложения. Затрагиваемые темы актуальны не только при подготовке сервисов, но и вообще для любых приложений, написанных на Go.

          Всё, что описано в этой статье, актуально для текущей версии Go — 1.9.
          Читать дальше →
        • Создатель Node.js: «Для серверов я не могу представить другой язык кроме Go»

          • Перевод
          Перевод отрывка из интервью с создателем Node.js Раяном Далом (Ryan Dahl) в котором обсуждается модель программирования и язык Go.

          — Расскажи нам, как проходила начальная разработка Node? Это ведь уже было достаточно давно, ты создал Node в 2009.

          Райан: — Я думаю для себя лично, что нет лучшего момента в жизни, когда ты, как это говорится, «в потоке» и у тебя есть идея, в которую ты сильно веришь. И при этом есть время, чтобы сесть и на самом деле работать над ней. И я думаю, Node была именно такой идеей, которая ждала, чтобы её кто-то ухватил, и если бы не я, то это бы сделал кто-то другой. Но так случалось, что я был тогда достаточно свободен от работы и имел время, и мог работать нон-стоп несколько месяцев, которых как раз были нужны, чтобы выкатить начальную версию. Так что да, это был отличный период.

          — Отлично, супер. Node построена на идее «полностью асинхронной» модели программирования. Удачна ли она была для Node?
          Читать дальше →
        Самое читаемое