• Moby/Docker в продакшене. История провала

    • Перевод

    Примечание переводчика: в предыдущей статье о подготовке к девопс-конференциям, Gryphon88 задал резонный вопрос: как отличить cutting-edge и хайп? Нижеследующая статья наполнена сочной незамутненной истерикой, которую так приятно читать с утра, попивая чашечку кофе. Минус в том, что она написана в ноябре 2016, но нетленка не стареет. Если после прочтения захочется добавки, есть комментарии на Hacker News. А у тебя, юзернейм, такой же ад? Пиши в комментариях. Итак, начнем.


    В первый раз я встретился с Докером в начале 2015. Мы экспериментировали с ним, чтобы понять, для чего бы его можно употребить. В то время нельзя было запустить контейнер в фоне, не было команд чтобы посмотреть что запущено, зайти под дебагом или SSH внутрь контейнера. Эксперимент оказался быстрым, Докер был признан бесполезным и более похожим на альфу или прототип, чем на релиз.


    Промотаем нашу историю до 2016. Новая работа, новая компания, и хайп вокруг докера поднялся безумный. Разработчики уже выкатили докер в продакшен, так что сбежать с него не удастся. Хорошая новость в том, что команда run наконец-то заработала, мы можем запускать и останавливать контейнеры. Оно шевелится!


    У нас 12 докеризованных приложений, бегающих на проде прямо в момент написания этой заметки, размазанные на 31 хост на AWS (по одному приложению на хост, дальше объясню — почему).


    Эта заметка рассказывает, как мы путешествовали вместе с Докером — путешествие полное опасностей и неожиданных поворотов.

    Читать дальше →
  • Математика на пальцах: мендосинский двигатель и теорема Ирншоу

      Постановка задачи


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

      Вот на этом видео крайне подробно описан (на русском языке) принцип работы:



      Но ещё больше самого двигателя мне показалась любопытной следующая вещь. В описании этого видео Дмитрий Коржевский написал следующую вещь: «Боковую опору заменить магнитом НЕВОЗМОЖНО!!! Не задавайте больше этот вопрос!»

      Читать дальше →
    • Подходы к проектированию RESTful API


        Автор: Вячеслав Михайлов, Solutions Architect.

        В этой статье я поделюсь опытом проектирования RESTful API — на конкретных примерах покажу, как делать хотя бы простые сервисы красиво. Также мы поговорим, что такое API и зачем он нужен, поговорим об основах REST — обсудим, на чем его можно реализовывать; коснемся основных веб-практик, которые зависят и не зависят от этой технологии. Также узнаем, как составлять хорошую документацию, затрачивая на это минимум усилий, и посмотрим, какие существуют способы нумерации версий для RESTful API.

        Часть 1. Теория


        Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими

        Почему хороший API — это важно?

        • Простота использования и поддержки. Хороший API просто использовать и поддерживать.
        • Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
        • Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
        • Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
        • Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.


        Теперь посмотрим, какие бывают виды API.

        Виды API по способу реализации:
        • Web service APIs
          • XML-RPC and JSON-RPC
          • SOAP
          • REST

        • WebSockets APIs
        • Library-based APIs
          • Java Script

        • Class-based APIs
          • C# API
          • Java



        Виды API по категориям применения:

        • OS function and routines
          • Access to file system
          • Access to user interface

        • Object remoting APIs
          • CORBA
          • .Net remoting

        • Hardware APIs
          • Video acceleration (OpenCL…)
          • Hard disk drives
          • PCI bus



        Читать дальше →
      • Почему нельзя пускать программистов на сервера, или Почему девопсы еще не вымерли, хотя об этом много говорили



          Привет, Хабр!

          Сегодня у нас необычный материал. Мы не будем публиковать туториал или рассматривать новые фреймворки, а просто дадим слово коллеге, которому есть, что сказать.

          Мнение автора может не отражать позицию компании и других коллег.

          Знакомьтесь — Александр Ефимов, Configuration manager/DevOps

          Есть у меня знакомый, который, будучи первоклассным сисадмином, мечтает стать программистом. По его словам, хочет творить, а не использовать уже существующий… не очень хороший софт. В чем-то я его понимаю: «чистое» творчество — безусловно, круто. Но давайте разберемся, что и как происходит на самом деле.
          Читать дальше →
        • Некоторые репозитории в помощь изучающим и преподающим Python и машинное обучение



            Привет сообществу!

            Я Юрий Кашницкий, раньше делал здесь обзор некоторых MOOC по компьютерным наукам и искал «выбросы» среди моделей Playboy.

            Сейчас я преподаю Python и машинное обучение на факультете компьютерных наук НИУ ВШЭ и в онлайн-курсе сообщества по анализу данных MLClass, а также машинное обучение и анализ больших данных в школе данных одного из российских телеком-операторов.

            Почему бы воскресным вечером не поделиться с сообществом материалами по Python и обзором репозиториев по машинному обучению… В первой части будет описание репозитория GitHub с тетрадками IPython по программированию на языке Python. Во второй — пример материала курса «Машинное обучение с помощью Python». В третьей части покажу один из трюков, применяемый участниками соревнований Kaggle, конкретно, Станиславом Семеновым (4 место в текущем мировом рейтинге Kaggle). Наконец, сделаю обзор попавшихся мне классных репозиториев GitHub по программированию, анализу данных и машинному обучению на Python.

            Читать дальше →
          • Памятка евангелиста PostgreSQL: критикуем MySQL грамотно

            image

            Привет, Хабр! Эта публикация — попытка развеять некоторые популярные мифы и легенды о MySQL. Я не ошибся с хабом, так как поводом для написания послужила публикация varanio Возможности PostgreSQL, которых нет в MySQL, и наоборот отсюда же. Сама публикация в части критики MySQL хоть и неидеальна, но вполне корректна, а вот комментарии к ней наводят на грустные размышления.

            Вообще говоря, я собирался написать публикацию о возможностях MySQL, которые не реализованы или реализованы в PostgreSQL хуже. Но для того, чтобы не мешать много тем в одну публикацию, и учитывая довольно нелёгкую работу по сравнению того, что я знаю очень хорошо (MySQL) с тем, что я знаю очень плохо (PostgreSQL), такую публикацию я решил отложить на потом и для начала ответить сразу на многие комментарии из публикации varanio.
            Читать дальше →
          • Как мы поднимали IT-инфраструктуру [со дна]

              Всем здравствуйте!

              Спустя ровно год после написания статьи «Опыт работы эникейщиком/системным администратором в бюджетной организации» и 2,5 лет после написании моим зам. директора подразделения статьи «Реанимация ИТ инфраструктуры» я хотел бы продолжить данный рассказ.



              Помню, в одном из комментариев я встретил фразу:
              Поэтому всё же посоветую обоим хабраюзерам из этой помойки собраться с духом и свалить — ничего вы в этом болоте не разгребёте и ещё через два года, а сидеть страдать фигней за 12 тысяч — это очень идиотский способ убить время.
              Но, как ни странно, из того, что мы делали все-таки что-то получилось, и я хотел бы рассказать как далеко мы зашли:
              • создан домен Active Directory Domain Services с автоматическим управлением учетными записями и подразделениями (OU);
              • внедрен Office 365;
              • развернут Spacewalk (ПО для управления *nix операционными системами);
              • создан HA MySQL Server master-master (Active-Passive);
              • развернута хостинг-панель Ajenti;
              • настроен SSL доступ к веб-ресурсам компании;
              • мигрирован VMware vCenter с 4.0 на 5.1U3;
              • внедрен ESET NOD32 Business Edition ver. 5;
              • внедрена авторизации в сети на базе МСЭ Cisco ASA 5525-X NGFW c CDA;
              • разрешены проблемы с кондиционированием в серверной.
              Всплываем!
            • Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache





                В продолжение статьи:

                Ускорение и оптимизация PHP-сайта. Какие технологии стоит выбирать при настройке сервера под PHP




                В отличии от предыдущего материала, в этой статье сделан упор на сравнение скорости отклика и интерпретации кода для различных версий PHP, включая PHP 7 beta3.

                Для ранних версий PHP, проведено тестирование между оптимизаторами кода apc, xcache и opcaсhe.
                Эта статья не содержит тестов на производительность, таких как нагрузочные тесты ab и siege. Возможно, об этом я напишу в одной из следующих статей.
                В данном случае, меня не интересует сколько страниц за секунду способна сгенерировать та или иная версия php-интерпретатора, скорее то, с какой скоростью она сгенерирует мне страницу и с какой задержкой.
                В данном случае разница в том, что тесты производительности замеряют отношение скорости интерпретатора к общим ресурсам сервера, а так же подготовленности других связанных компонентов web-системы к работе на повышенных нагрузках.
                Остановимся на скорости и отклике. Очевидно что производительность зависит от скорости, но высокая скорость не может гарантировать высокую производительность. Это, возможно, связанно с тем, что недостаточно хорошо настроен web-сервер или база данных, а также с какими-то не было ограничениями, например сетевого стека.
                Что бы не заниматься попыткой объять необъятное, мы просто замерим скорость и отклик работы интерпретаторов php, на мощном сервере без нагрузки, с одинаковыми конфигурациями web-сервера, базы данных и операционной системы для всех испытуемых. Используем конфигурацию php-fpm + nginx. База данных MariaDB. Все технические детали скрыты под спойлером ниже.

                Читать дальше →
              • Ускорение и оптимизация PHP-сайта. Какие технологии стоит выбирать при настройке сервера под PHP



                  Эта статья поможет ответить на вопросы владельцев, разработчиков и системных администраторов PHP-сайтов:



                  • Как оптимизировать сайт и ускорить его работу?
                  • С какой скоростью будет и может работать сайт, в соответствии с теми технологиями на которых он будет запущен?
                  • Какие технологии следует использовать настраивая сервер или VPS?


                  Типичная проблема:
                  В какой-то момент сайт начинает открываться и работать слишком медленно. Бывает, что хостинговая компания блокирует сайт за превышение нагрузки или перерасход ресурсов. Что же делать в такой ситуации?

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

                  И если говорить о серверах для PHP, то такой проблемой является способ исполнения php кода, ровно как и другие значимые настройки окружения на сервере.
                  Не зависимо от того, есть ли проблема в вашем коде или её нет, высокая у вас посещаемость или нет, от настроек сервера зависит очень многое. Что бы все сказанное не звучало пустыми словами и была написана эта статья.

                  В этом обзоре я протестирую только что установленный сайт на одном из самых распространённых движков управления контентом Drupal 7.33.

                  Для теста выбрана лишь одна составляющая php-хостинга. Мы будем тестировать web-серверы Nginx и Apache2, модули mod_php и php-fpm, версии php php53 и php56, посмотрим, как влияют оптимизаторы apc и opcache на скорость работы сайта.

                  Читать дальше →
                • Генерация и решение лабиринта с помощью метода поиска в глубину по графу

                  image

                  В этой статье речь пойдет о самом простом в реализации алгоритме генерации «идеального» лабиринта и его применении для поиска пути.

                  Мы рассмотрим алгоритм, основанный на бэктрекинге, позволяющий создавать лабиринты без циклов, имеющие единственный путь между двумя точками. Алгоритм не самый быстрый, довольно требователен к ресурсам, по сравнению с алгоритмом Эйлера или Крускала, но очень прост в реализации и позволяет создавать ветвистые лабиринты с очень длинными тупиковыми ответвлениями.

                  Заинтересовавшихся — прошу под кат.
                  Читать дальше →