Как стать автором
Обновить
Сначала показывать

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

Время на прочтение6 мин
Количество просмотров3.8K

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

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

Читать далее
Всего голосов 50: ↑50 и ↓0+50
Комментарии0

SQL в DjangoORM

Время на прочтение12 мин
Количество просмотров24K

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

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

Читать далее
Всего голосов 48: ↑47 и ↓1+51
Комментарии3

Загрузка Linux с VHD на компьютере с UEFI

Время на прочтение5 мин
Количество просмотров12K

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

Читать далее
Всего голосов 46: ↑45 и ↓1+52
Комментарии1

20 лучших практик по работе с Dockerfile

Время на прочтение13 мин
Количество просмотров37K

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

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

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

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

Читать далее
Всего голосов 38: ↑36 и ↓2+40
Комментарии22

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

Время на прочтение6 мин
Количество просмотров13K

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

Читать дальше →
Всего голосов 31: ↑27 и ↓4+27
Комментарии11

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

Время на прочтение4 мин
Количество просмотров26K

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

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

Вляпаться
Всего голосов 29: ↑29 и ↓0+29
Комментарии10

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

Время на прочтение14 мин
Количество просмотров7.7K

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

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

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

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

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

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

Читать далее
Всего голосов 33: ↑33 и ↓0+33
Комментарии3

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

Время на прочтение4 мин
Количество просмотров14K

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

Читать далее
Всего голосов 29: ↑28 и ↓1+31
Комментарии20

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

Время на прочтение6 мин
Количество просмотров13K

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

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

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

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

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

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии0

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

Время на прочтение5 мин
Количество просмотров7.8K

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

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1+21
Комментарии11

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

Время на прочтение5 мин
Количество просмотров12K

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 35: ↑35 и ↓0+35
Комментарии9

Сэмплирование Томпсона

Время на прочтение13 мин
Количество просмотров11K

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

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

Читать далее
Всего голосов 49: ↑48 и ↓1+53
Комментарии1

Загрузка Linux с VHD на компьютере с BIOS

Время на прочтение7 мин
Количество просмотров21K

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

Читать далее
Всего голосов 77: ↑77 и ↓0+77
Комментарии11

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

Время на прочтение7 мин
Количество просмотров14K

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

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

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

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

Рассмотрим его подробнее
Всего голосов 54: ↑51 и ↓3+54
Комментарии29

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

Время на прочтение5 мин
Количество просмотров5.1K

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

Читать далее
Всего голосов 42: ↑39 и ↓3+39
Комментарии1

Шесть принципов создания производительных веб-приложений

Время на прочтение5 мин
Количество просмотров12K

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

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

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

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

Читать далее
Всего голосов 28: ↑22 и ↓6+17
Комментарии9

Хаос на практике: зачем ломать production?

Время на прочтение6 мин
Количество просмотров6.6K

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

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

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии0

Мониторинг NetApp Volumes через HTTP

Время на прочтение9 мин
Количество просмотров3.4K

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

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии3

Три проблемы быстрой проверки гипотез

Время на прочтение6 мин
Количество просмотров7.5K

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

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

Читать далее
Всего голосов 30: ↑29 и ↓1+33
Комментарии11

11 друзей Sanic’а – собираем асинхронное веб-приложение на Python

Время на прочтение9 мин
Количество просмотров16K
Рано или поздно маленькие приложения разрастаются до нагруженных production-решений, поэтому программисту необходимо заранее продумать стек технологий. Для Python концептуальный выбор стоит между синхронными и асинхронными фреймворками. После появления библиотеки asyncio популярность асинхронных Python-фреймворков сильно выросла, потеснив таких монстров, как Django и Flask, и стало намного проще писать веб-приложения, способные пережить высокий RPS.

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

Статья поможет новичкам посмотреть, как можно использовать вместе различные асинхронные библиотеки. А опытные программисты могут сравнить представленное ниже решение со своими наработками и конструктивно покритиковать.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии10

Информация

Сайт
domclick.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Dangorche