Обновить

Бэкенд

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

Как устроен финтех изнутри

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

Однажды на собеседование на enterprise архитектора мне дали тестовое задание - нарисовать верхнеуровнево как я вижу банк и как общаются компоненты внутри него. Я соорудил нечто странное. Работу я, конечно же, не получил. Схема непонятна, элементы названы не по общепринятым наименованиям, а как я их видел и в целом получилось перегружено. Эта статья призвана выполнить это тестовое задание на текущем уровне моего развития как архитектора. 

Читать далее

Отсекая лишнее: как сократить бинарный код программы на C++ и не потерять нужную функциональность

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

Во всех устройствах YADRO, будь то системы хранения данных, серверы или коммутаторы, есть система BMC, через которую администраторы гибко управляют серверами. 

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

Меня зовут Максим Гончаров, и я расскажу, как мы оптимизировали кодовую базу на C++ по размеру конечного образа, чтобы новые фичи были доступны на всех уже работающих у заказчиков серверах.

Читать далее

Единый SSL, или Автоматизация Let's Encrypt на HAProxy

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

Привет, Хабр! На связи Алексей Холодаев из Cloud4Y. Наверняка вам знакома типичная архитектура — несколько бэкенд-серверов, один HAProxy на входе и куча поддоменов — app.example.com, api.example.com, admin.example.com. Классический подход к SSL заставляет вас либо покупать дорогой Wildcard-сертификат, либо мучительно поддерживать отдельные сертификаты для каждого поддомена на каждом бэкенде…

А что, если я покажу вам способ получше?

Давайте настроим получение и, что критично, полностью автоматическое продление одного SSL-сертификата от Let's Encrypt прямо на HAProxy. Этот единственный сертификат будет защищать все ваши поддомены сразу. Больше не нужно возиться с SSL на каждом бэкенде — весь трафик шифруется и расшифровывается на балансировщике, а до бэкендов идёт уже по защищённому внутреннему каналу.

Читать далее

Enterprise мониторинг с нуля: Prometheus + Grafana для FastAPI приложения

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

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

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

Читать далее

Cloud Castle HTTP Router: Быстрый и гибкий роутер для PHP-приложений

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

Привет, Хабр! В мире PHP-разработки роутинг — это основа любого веб-приложения. От простых API до сложных микросервисов, правильный роутер может стать ключом к производительности и масштабируемости. Сегодня я хочу представить вам Cloud Castle HTTP Router — мою библиотеку, которая сочетает скорость, простоту и мощь. Это не просто инструмент, а решение для разработчиков, которые хотят оставить позади громоздкие фреймворки и сосредоточиться на коде. Давайте разберем ее по полочкам: технические фичи, маркетинговый потенциал и архитектурные преимущества. А в конце — сравнение с конкурентами и реальные тесты из документации.

Читать далее

Как я распознавание лиц к Yandex Disk-у прикручивал

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

«Крошка сын к отцу пришел и спросила крошка...»

Ну не сын на самом деле, а дочка, но пришла и спросила: «Паааап, у подруги тут ДР, вытащи мне из фотоархива все фото где мы с ней вместе». Да легко!

Читать далее

10 вопросов на собеседовании Junior Python-разработчика. Часть 1

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

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

Читать далее

Асинхронные цепочки задач в Рег.облаке: как повысить отказоустойчивость облачной платформы без потерь

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

Привет, Хабр! На связи Александр Усачёв, системный аналитик в группе облачных продуктов Рунити. В основе нашей облачной платформы Рег.облако лежит микросервисная архитектура: каждый сервис отвечает за свой участок бизнес-логики — от биллинга до управления сетями. Между собой они обмениваются задачами через брокер сообщений. 

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

Читать далее

Интегрируем ресивер Триколора с «Домом с Алисой» с помощью Java и Spring

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

Привет! Меня зовут oldzoomer, и я хочу рассказать, как я подключил приёмник Триколор к экосистеме Яндекса, чтобы управлять им голосом через Алису. Всё сделано на Java 21, Spring Boot и официальном Stingray TV API - без хаков и модификаций прошивки.

Читать далее

Анализ дампа: с чего начать

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

Всем привет! Меня зовут Виктор, и я программист. Восемь лет работаю в команде Т-Банка и все это время вместе с коллегами занимаюсь проектом «Т-Телефония». Моя команда разрабатывает сервисы, которые обеспечивают голосовую коммуникацию внутри и вне банка. 

Звонки — один из основных способов связи с нами, поэтому система критична для бизнеса с высоким требованием к доступности. Она обрабатывает более 2 млн звонков в день. Если происходит сбой в любой пользовательской системе и нашим клиентам плохо, количество звонков сразу увеличивается, а нагрузка на систему повышается в два-три раза.

Когда мне прилетела первая задача с дампом, единственным инструментом, который я знал, был WinDbg. Я потратил несколько дней, чтобы хоть немного разобраться в нем. С развитием проекта приходилось все чаще снимать дампы, и теперь я знаю о них намного больше.

В статье покажу, что такое дампы, какие есть инструменты для работы с ними и какие у них особенности, покажу наши примеры проблем, расскажу, как мы их решали.

Читать далее

Можно ли было обнаружить бэкдор XZ при более продуманной работе с пакетами в Git и Debian?

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

Обнаружение бэкдора в XZ Utils весной 2024 года поразило опенсорс-сообщество и подняло серьёзные вопросы о безопасности цепочки поставок ПО. В этом посте мы изучим, могло ли улучшение практик работы с пакетами Debian помочь в выявлении этой угрозы, приведём руководство по аудиту пакетов и предложим улучшения на будущее.

Бэкдор XZ в версиях 5.6.0/5.6.1 быстро попал во многие крупные дистрибутивы Linux наподобие Debian и Fedora, но, к счастью, не добрался до многих реальных пользователей, потому что благодаря героическому усердию Андреса Фройнда релизы с бэкдором были быстро удалены. Нам крайне повезло, что мы выявили регрессию производительности SSH в полсекунды, уделили время её трассировке, обнаружили зловредный код в загружаемой SSH библиотеке XZ и быстро сообщили о нём различным командам безопасников для принятия быстрых координированных мер защиты.

Этот эпизод заставил разработчиков ПО задаться следующими вопросами:

Почему ни один из упаковщиков дистрибутивов Linux не заметил ничего странного при импорте новой версии XZ 5.6.0/5.6.1 из апстрима?
Легко ли проводить аудит современной цепочки поставок в самых популярных дистрибутивах Linux?
Возможно ли наличие других подобных бэкдоров, которые мы пока не выявили?

Я разработчик Debian Developer, поэтому решил провести аудит пакета xz в Debian, поделиться в этом посте своей методологией и находками, а также предложить способы повышения безопасности цепочки поставок конкретно в Debian.

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

Читать далее

Парсинг HH.ru: от /vacancies до асинхронных очередей и боли с ConversationHandler'ами

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

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

Думаю, у каждого, кто искал работу, есть этот "любимый" запрос на hh. Вбиваешь "Python Developer", ставишь фильтр "нет опыта", а тебе вываливается 500 вакансий "Senior Analyst", где в требованиях "базовое знание SQL, Python будет плюсом".

Ручной разбор этой каши убивает время и мотивацию. Мой друг Роман (он IT-рекрутер и карьерный консультант) постоянно рассказывает, как кандидаты выгорают еще до первого собеса именно на этом этапе.

Я решил, что хватит. Пора автоматизировать рутину. Казалось бы, 30-минутная задача: дернул API, отфильтровал, откликнулся. Как же я ошибался. Сегодня расскажу, на какие грабли наступил, пока пилил «Аврору» - свой инструмент для автоматизации этого ада.

Читать далее

Пишем чат на Rust

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

Очередной чат, и к тому же на rust?! Да, yet another. И да, в этой статье не будет каких-то новых откровений системного программирования с написанием своего фреймворка для работы со сетью на уровне драйверов или других испытаний. Этот альманах про мой первый опыт в веб-разработке, который может быть полезен для других новичков, ведь тут мы затронем помимо злосчастного rust такие вещи, как devcontainer, REST API, идентификацию-аутентификацию-авторизацию, WebSockets, SSE, юнит и интеграционные тесты, некоторые паттерны, логирование и прочее.

Читать далее

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

Cursor: Обзор и возможности

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

Cursor — это не просто новая IDE, а умная среда разработки с полноценными AI-агентами, способная понимать проект, анализировать код и помогать разработчикам, аналитикам и продакт-менеджерам работать быстрее и точнее. В этой статье я подробно расскажу, как Cursor помогает ускорять разработку, автоматизировать рутину и улучшать качество кода за счёт интеграции искусственного интеллекта в повседневные процессы.

Читать далее

Чем вообще занимается человечество?

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

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

в github, vscode и windows абсолютно каждое обновление уже несколько лет связано только с "ИИ", при этом ни один реальный показатель этих программ не стал лучше. В каждый поисковой запрос встроен ИИ, а качество поиска в гугле стало хуже (считал ли кто-то, сколько электричества ушло на это?)

Компилятор go переписывают на go, JavaScript существует больше 20 лет, появился TypeScript, но он... Всё также компилируется в обычный JavaScript, даже более объёмный, чем написанный вручную. До сих пор все оптимизации передачи джаваскрипта по сети не пошли дальше удаления пробелов из исходного текста, хотя на поверхности лежит трансляция TypeScript в бинарный JS, который позже напрямую быстрее интерпретируется и тратит в разы меньше сетевого трафика

Недавно я зашёл в браузер хром и решил поискать небольшую фразу в довольно объёмном файле.

Читать далее

Не обижайте Django

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

Чем популярнее становится FastAPI, тем сильнее критикуют Django. И не просто критикуют. Брезгуют? Пренебрегают? Всего понемножку. Всё чаще слышу, что Django — пережиток прошлого. Любой проект на Django — устаревший мусор. Любой «джанговод» — просто не знает, что тоже устарел. Объективно ли это? Нет, не объективно. Если отвёртка плохо забивает гвозди, это не значит, что отвёртки устарели — просто это не их задача.

Читать далее

Инжиниринг платформ: не CFEngine единым

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

Привет, Хабр! Мы только что получили из типографии топовую DevOps-новинку этого года — книгу Камиль Фурнье и Иэна Ноуленда «Инжиниринг платформ: техническое и управленческое руководство». Промокод для читателей Хабра (скидка 32%) - fournier. Она продолжает и конкретизирует тему облачного развёртывания и дальнейшей поддержки приложений любой сложности, на которую мы ранее перевели отличную книгу Кифа Морриса «Программирование инфраструктуры» и сейчас обновляем её до 3-го издания (готовый перевод ожидается до конца года, затем пойдёт редактура). Также у нас в работе есть для вас книга «Terraform Cookbook» — за сроками выхода следите в разделе «Скоро!» у нас на сайте. Под катом же предлагаем вам перевод статьи, которую Камиль Фурнье написала около года назад, подробно изложив в ней, зачем и о чём она пишет книгу «Инжиниринг платформ», и какое место эта книга займёт на полке умелого девопса.

Читать далее

Обзор нововведений в C# 14

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

Грядёт новая версия C#, а это значит, что мы вновь выпускаем наш ежегодный обзор нововведений. Этот год принёс нам не так много изменений, как прошлый. Возможно, некоторым они покажутся совсем незначительными, но так ли это на самом деле? Давайте же взглянем на них.

Читать далее

Шина данных поверх Kafka — когда каждому хочется иметь своё число консьюмеров для топика

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

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

Читать далее

Масштабирование кластера Valkey до 1 миллиарда запросов в секунду

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

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

Читать далее