• Липкие сессии для самых маленьких [Часть 2], или Как понять Kubernetes и преисполниться в своём познании

    • Tutorial

    Липкие сессии (Sticky-session) — это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы. Как правило, перед группой серверов находится балансировщик нагрузки (NginxHAProxy), который и устанавливает правила распределения трафика на доступные сервера.

    В первой части цикла мы уже разобрали как создавать липкие сессии с помощью Nginx. Во второй части разберем создание подобной балансировки средствами Kubernetes.

    Так как статьи в основном направлены на начинающих - придется коснуться основ kubernetes. Да-да, я знаю в интернете полно материала для изучения куба. Но здесь будет минимум душной теории и максимум практики. Лучше один раз развернуть тестовое приложение в кластере и понять основные принципы, чем читать тонну скучных мануалов.

    Преисполниться
  • Варианты создания интерактивной экскурсии для пользователей

      Доброго времени суток, уважаемые читатели!

      Меня зовут Евгений Когтев, я ведущий разработчик в команде Web Core в ДомКлик. Мы уже рассказывали подробнее о команде и стоящих перед ней задачах, если не читали, то рекомендую. А сегодня я расскажу, зачем нужен онбординг и как его реализовать в UI-kit.

      Читать далее
    • SQL в DjangoORM

        Меня зовут Алексей Казаков, я техлид команды «Клиентские коммуникации» в ДомКлик. В большинстве приложений, с которыми мне приходилось иметь дело, при взаимодействии с БД не ограничиваются лишь драйвером, который позволяет выполнять сырые запросы. Для удобства и избавления от SQL-запросов внутри, например, Python-кода дополнительно используют библиотеки (Object Relational Mapper, ORM).

        Это первая статья в серии, посвященной различным ORM. Начнём мы с DjangoORM.

        Читать далее
        • +26
        • 4,6k
        • 3
      • Загрузка Linux с VHD на компьютере с UEFI

        • Tutorial

        В статье о возможности загружать Linux с VHD был предложен способ загружать Linux на машине с Windows без необходимости разбивать диск на разделы. Но было одно существенное ограничение: рассматривался только вариант загрузки BIOS, т.е. legacy-загрузки. Сейчас появляется всё больше устройств без поддержки режима legacy (например, многие ноутбуки, выпущенные в 2020 году). Поэтому в этой статье будет рассмотрена загрузка Linux с VHD на компьютерах с UEFI.

        Читать далее
        • +28
        • 4,6k
        • 1
      • 20 лучших практик по работе с Dockerfile

        • Перевод
        • Tutorial

        Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.

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

        К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.

        Хорошо подготовленный Dockerfile исключает необходимость использовать привилегированные контейнеры, открывать порты, в которых нет необходимости, включать лишние пакеты и избегать утечки чувствительных данных. Старайтесь решить эти проблемы сразу, это поможет в дальнейшем сократить усилия на поддержку ваших приложений.

        Читать далее
      • Быть тимлидом, ч2: Технологии

          Всем привет, меня зовут Семён и я руковожу разработкой витрины объектов недвижимости в ДомКлик. В прошлой части этой серии статей мы поговорили про самую трудоёмкую область работы тимлида — работу с людьми. Сегодня я расскажу про не менее важную тему для любого тимлида — технологии. Насколько «крут» должен быть тимлид технически? Должен ли он писать код? Отвечает ли тимлид за техническое состояние своего «хозяйства»? Кого заинтересовал, прошу под кат.

          Читать дальше →
        • Липкие сессии для самых маленьких [Часть 1]

          • Tutorial

          Липкие сессии (Sticky-session) — это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы. Как правило, перед группой серверов находится балансировщик нагрузки (Nginx, HAProxy), который и устанавливает правила распределения трафика на доступные сервера.

          В первой части цикла мы посмотрим как создавать липкие сессии с помощью Nginx. Во второй же части разберем создание подобной балансировки средствами Kubernetes.

          Вляпаться
        • Выдерни шнур, выдави стекло

            Инструкция по диагностике проблем в работе баз данных в случае аварии.

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

            После одной из аварий я поймал себя на мысли, что диагностика причины недоступности сервиса заняла слишком много времени. Инженеры, задействованные в разрешении инцидента, действовали не совсем скоординированно: проверяли одни и те же гипотезы и тратили время на изучение совсем уж «фантастических» вариантов. В квалификации ребят никакого сомнения у меня нет, поэтому в рамках рефлексии я списываю это на стрессовую ситуацию аварии.

            Чтобы в следующий раз диагностика и устранение причин аварии происходили быстрее, мы совместно с DevOps-инженером Алексеем Поповым решили написать «план эвакуации при пожаре»: пошаговую инструкцию, которую можно было бы использовать для быстрого исследования инцидента.

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

            Я буду признателен за комментарии и описания аналогичных проблем, которые происходили у вас.

            Читать далее
          • Экосистема JavaScript: тренды в 2021 году. Всё ли так однозначно?

              В конце прошлого года на сайте State of JS 2020 было опубликовано исследование о состоянии экосистемы JavaScript в 2020 году с ретроспективой на предыдущие годы развития. Исследование основывалось на многочисленных опросах, в которых суммарно приняли участие более 23 тысяч человек из 137 стран мира.

              Читать далее
            • Метрики производительности WEB Vitals

              • Tutorial

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

              Какие существуют метрики производительности?

              Как оценить качество вашего приложения? 

              Как поднять метрики? 

              Какие инструменты позволяют оценить показатели производительности, и др. 

              Читать далее
            • Реализация конечного автомата для автоматизации процессов

                Каждый уважающий себя техлид \ архитектор ПО \ руководитель разработки,

                должен написать в своей жизни хотя бы одну CRM

                народная мудрость

                Читать далее
              • PGHero — дашборд для мониторинга БД PostgreSQL

                • Tutorial

                Всем привет. Сегодня я бы хотел поделиться рецептом установки утилиты PGHero с подключением нескольких баз данных. PGHero — это простенькая утилита, написанная на Ruby, с минималистичным дашбордом для мониторинга производительности БД PostgreSQL.

                Что может показать нам PGHero:

                статистику по запросам: количество вызовов, среднее и суммарное время выполнения (с возможностью хранения истории);

                активные в данный момент запросы;

                информацию о таблицах: занимаемое на диске место, даты последних запусков VACUUM и ANALYSE;

                информацию об индексах: занимаемое на диске место, наличие дублируемых/неиспользуемых индексов. Также может порекомендовать добавить индекс при наличии сложных запросов с Seq Scan;

                статистику по открытым подключениям к БД;

                вывод основных настроек БД, влияющих на производительность (shared_buffers, work_mem, maintenance_work_mem и т.д.)

                Читать далее
                • +35
                • 5,2k
                • 6
              • Сэмплирование Томпсона

                • Перевод

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

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

                Читать далее
              • Загрузка Linux с VHD на компьютере с BIOS

                • Tutorial

                Загрузка Linux с VHD может пригодиться в различных сценариях, например, когда на компьютере установлена Windows и есть необходимость в Linux, но WSL или виртуальной машины с Linux недостаточно, а разбивать диск на разделы нет желания. Microsoft позволяет грузить Windows с VHD «из коробки» начиная со старших редакций Windows 7. Но что делать, если возникла необходимость загрузить таким способом Linux?

                Читать далее
              • Обрезаем большую таблицу PostgreSQL в production

                  Всем привет. Сегодня я хотел бы поделиться рецептом по обрезанию большой таблицы PostgreSQL в production.

                  Пример: мы имеем в БД достаточно большую таблицу (несколько сотен миллионов строк) с устаревшими данными, которые нам уже не нужны. Точнее, они мешают — БД долго дампится, а индексы становятся неэффективными.

                  Решение в лоб (delete from table where id < 1234567) работает очень долго из-за большого количества индексов и ограничений в таблице и нас не устраивает.

                  Более быстрый способ рассмотрим в этой статье.

                  Рассмотрим его подробнее
                • Почему нужно автоматизировать эксплуатацию

                  • Перевод

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

                  Читать далее
                  • +39
                  • 4,1k
                  • 1
                • Шесть принципов создания производительных веб-приложений

                  • Перевод

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

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

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

                  И последнее: чтобы сохранять баланс между оптимизацией и своевременной поставкой функционала, всегда делитесь и переиспользуйте свой код, точнее — компоненты. Это можно делать с любым репозиторием безо всякой специальной подготовки, достаточно лишь воспользоваться инструментом вроде Bit (Github).

                  Читать далее
                  • +17
                  • 9,8k
                  • 9
                • Хаос на практике: зачем ломать production?

                    Всем привет! Меня зовут Олег Сидоренков, и я отвечаю за IT-инфраструктуру в компании ДомКлик.

                    Ломать — не строить! Так обычно говорят люди, пытаясь показать деструктивный процесс простым, не требующим усилий. Сегодня я хочу вам рассказать о пользе Chaos Engineering (хаос-инженерия), зачем это нужно, и приведу несколько примеров из личного опыта.

                    Читать далее
                  • Мониторинг NetApp Volumes через HTTP

                    • Tutorial

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

                    Читать далее
                    • +23
                    • 1,1k
                    • 3
                  • Три проблемы быстрой проверки гипотез

                      Меня зовут Иван Кесель, я владелец продукта сделок с недвижимостью в ДомКлик, а раньше был владельцем продукта мобильного приложения «Спасибо от Сбербанка». В Sbergile работаю уже три года. Выручка от продажи сервисов нашей команды измеряется сотнями миллионов рублей, а количество сделок с недвижимостью — десятками тысяч в год. 

                      Я расскажу о том, как запустить продукт при ограниченном количестве ресурсов и времени. Но сразу предупрежу: если необходимых ресурсов нет, то и продукт вы не запустите. Волшебной пилюли не существует. Хватит верить в сказки. Но если вам нужны практические советы, то читайте дальше. Мы рассмотрим три основные проблемы, которые могут возникать при быстрой проверке гипотез. Рассказывать буду на примерах конкретных запусков продуктов нашей командой. 

                      Читать далее

                    Самое читаемое