Все потоки
Поиск
Написать публикацию
Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров5.8K

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

Читать далее

Регулярные выражения в PostgreSQL

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров4.5K

Регулярные выражения (или regex) — это особые текстовые строки, используемые для описания поискового шаблона. В PostgreSQL regex становится незаменимым инструментом, особенно при работе с большими объёмами неструктурированных строковых данных.

Возможно, у кого‑то есть вопрос: «А для чего нам регулярные выражения в БД?» И мы вам ответим:

Регулярные выражения (regex) позволяют описать сложные текстовые шаблоны компактно и гибко.

Читать далее

Какой Python-фреймворк выбрать: Django, Flask или FastAPI?

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.7K

Команда Python for Devs подготовила перевод статьи о том, какой фреймворк выбрать для веб-разработки на Python: Django, Flask или FastAPI. Django берёт надёжностью и готовой функциональностью, Flask — гибкостью и минимализмом, FastAPI — скоростью и современными возможностями. А какой из них ближе вам?

Читать далее

Баги носят данные. Проверка Apache NiFi

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.1K

Сбор, обработка и перемещение данных — ключевые процессы в IT. Но что, если они нарушатся из-за коварных багов в коде? Рассказываем об ошибках, найденных статическим анализатором в проекте Apache NiFi.

Читать далее

Как мы собрали личный кабинет на микросервисах и избавили клиентов от бюрократии

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.4K

Привет, Хабр! Я Катя Саяпина, менеджер продукта МТС Exolve. Наша онлайн-платформа — это конструктор омниканальных диалогов для бизнеса, доступный из личного кабинета. Как и почему мы раньше работали без него, что сподвигло нас на перемены и как мы справились с трудностями разработки, расскажу в этом материале.

Читать далее

Genkit Go 1.0: AI-фреймворк для продакшена

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4K

Команда Go for Devs подготовила перевод статьи о релизе Genkit Go 1.0 — open source AI-фреймворка от Google для экосистемы Go. Теперь можно быстро и безопасно создавать продакшен-ready AI-приложения с типобезопасными флоу, поддержкой RAG, вызова инструментов и богатым локальным тулчейном.

Читать далее

UUIDv7 в PostgreSQL 18

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров9.2K

Совсем скоро (в конце сентября) выйдет PostgreSQL 18. Релиз готовит важные обновления — от асинхронного I/O до EXPLAIN с показателями CPU и WAL. 

Довольно громкая новинка — нативная поддержка UUIDv7, нового стандарта уникальных идентификаторов, идеально подходящих для B-tree индексов. 

В новом переводе от команды Spring АйО рассказывается, почему это важно, как работает UUIDv7 и чем он лучше UUIDv4 для современных распределённых систем.

Читать далее

Pro Деньги. JSR-354

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.3K

Достаточно часто в реализации сервисов есть необходимость оперировать денежными единицами, хранить их в БД, обмениваться по API и выполнять конвертацию

Читать далее

Визуализация управления памятью в Python: что творится внутри?

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров9.4K

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

Идея сделать приложение-визуализатор пришла после чтения книги CPython Internals. Там подробно объясняется, как устроены арены, пулы и блоки. Но пока читаешь текст, всё это воспринимается слишком абстрактно. Захотелось увидеть механику своими глазами: как память выделяется, как освобождается и почему иногда остаётся занята. Так и появился MemoryMonitorApp, а вместе с ним — эта статья.

Читать далее

Алистер Коберн «Гексагональная (порты и адаптеры) архитектура»

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров2.4K

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

Читать далее

Пока все отвечали: «Это не ко мне», релиз приближался

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

«Учтите в учёте соответствующим образом» — эту фразу я однажды получила в бизнес-требованиях от заказчика. Нет, с той стороны не издевались, даже наоборот — очень льстили и мне, и команде, искренне считая нас магами и мудрецами, которым лишние объяснения не нужны.

В их представлении IT-специалист — это такая фея, которая по умолчанию разбирается в юриспруденции, финансах, всех федеральных законах, а в перерывах пишет код.

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

Я уже несколько лет пытаюсь искать свои способы наладить этот «глухой телефон», и получается далеко не всё.

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 3

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1.9K

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в третьей и заключительной части, рассмотрим мониторинг со стороны devops на дашбордах SLI/Apdex, поколдуем над статистическими методами для прогноза снижения производительности, поговорим об автоматических уведомлениях Grafana. Оценим перспективы развития, сравнительный анализ выбранного подхода и выводы по нашему опыту.

Читать далее

Архитектура LPU и будущее AI без задержек

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.8K

Команда AI for Devs подготовила перевод статьи о том, как Groq пытается устранить главное «бутылочное горлышко» современного ИИ — задержку. Их специализированный процессор LPU обещает скорость в реальном времени и открывает путь к новым приложениям: от финансовых систем до Coding AI-ботов. Но за пределами маркетинга остаются вопросы: что с большими контекстами, какова конкуренция с Cerebras и GPU, и выдержит ли бизнес-модель такие вызовы?

Читать далее

Ближайшие события

За пределами отладчика: полное руководство по отладке Go-приложений

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1.4K

Команда Go for Devs подготовила перевод статьи о том, как отлаживать приложения на Go. Автор показывает, что баги бывают разными: воспроизводимые, случайные, гейзенбаги и конкурентные. А в арсенале Go-разработчика должны быть — TDD, стратегическое логирование, Delve, git bisect и даже онлайн-отладчик GoTutor.

Читать далее

Как мы освободили 20 ГБ в PostgreSQL без удаления данных

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров11K

Команда Python for Devs подготовила перевод статьи о том, как можно освободить десятки гигабайт места в PostgreSQL без удаления данных и индексов. TL;DR: удаляем неиспользуемые индексы, чистим bloat, пересобираем таблицы и используем частичные индексы, чтобы хранить только то, что реально нужно.

Читать далее

Опыт вайбкодинга: как заставить нейросеть работать эффективно

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров8.3K

Данная статья написана и отредактирована мной вручную, специально, чтобы подчеркнуть ценность ручного труда в эпоху нейросетей.

Сегодня, в начале XXI века, искусственный интеллект уже стал частью нашей повседневности. Мы спокойно спрашиваем у Алисы прогноз погоды, видим тексты и советы от ИИ в поиске, а изображения или даже видеоролики, созданные нейросетью, никого не удивляют.

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

Ниже я расскажу про собственный опыт работы с такими технологиями, который мы ежедневно применяем в реальных проектах ★5УГЛОВ для наших клиентов.

Читать далее

Создание Системы генерации ответов на истории тикетов поддержки (часть 2)

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

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

Меня зовут Анатолий, занимаюсь автоматизацией бизнес-процессов и применением Искусственного Интеллекта в бизнесе.

Кейсовая задача - создать Систему генерации ответов на основе существующей истории тикетов. При этом Система должна работать в закрытом контуре.

В этой части переходим к семантическому поиску, контекстному сходству и SentenceTransformer.

Читать далее

Миграция без боли и даунтайма: как мы перевозили данные с MongoDB на PostgreSQL

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров6K

Всем привет! Меня зовут Андрей, я бэкенд‑разработчик ядра Яндекс Диска. В индустрии я уже около 15 лет и повидал некоторое ПО. Последние три года занимаюсь ядром файловой системы — всем, что связано с метаданными о файлах.

Однажды мы в Диске переносили общие данные из шардированного MongoDB в шардированный же PostgreSQL. После переноса пользовательских данных у нас осталась часть данных про общие папки.Их было сложно изолировать внутри шарда пользователя, и они остались в общей БД на MongoDB, которую мы так и назвали — CommonDB. Спустя время мы заметили, что общая БД не справляется с нагрузкой: все запросы перед выполнением должны были сначала получить информацию об общих папках, и только после этого они начинали работать. Поэтому надо было дублировать информацию ближе к другим данным пользователей — на их шарды.

Однако при дублировании важно было избежать распределённых транзакций, так как они снижают общую производительность. Также проблемой был сам процесс перехода: у нас сотни миллионов пользователей, которые не должны были ощущать процесс перехода и потерять доступ к своим данным. При этом надо было выкатывать изменения не сразу на 100%, а частично, с возможностью в любой момент отключить функциональность. При выкатке также нельзя было допустить даунтайм.

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

Замигрировать

Autumn vibes. Как я с кодингом с помощью LLM знакомился

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.1K

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

Сегодня хочу поделиться своим опытом работы с локальными LLM (Large Language Models). Это что-то вроде GitHub Copilot, только без подписки, оффлайн и с контролем над своими данными.

Читать далее

О «залипании» процесса checkpoint и archive_timeout в Postgres

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

Добрый день, коллеги!

Недавно мы столкнулись со следующей проблемой при тестировании СУБД PostgresPro под высокой нагрузкой: процесс представлял собой массированную многопоточную заливку данных на протяжении многих часов,а данных было около 20 ТБ, потоков — 75.

В процессе загрузки наблюдалось следующее явление: через некоторое время процесс checkpointer переставал делать контрольные точки в зависимости от других параметров БД либо сразу, либо через 2-3 часа.

Читать далее