Pull to refresh
19
0
Vladimir @mvs

Creator, founder, developer

Send message

Хочешь стать техлидом? Возможно, что не стоит

Level of difficultyEasy
Reading time10 min
Views11K

Привет! Меня зовут Абакар, я работаю главным техническим лидером разработки в Альфа-Банке.

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

Читать далее

Как мы реализовали SCA при помощи SBOM

Reading time7 min
Views962

Чем больше микросервисов в компании, тем веселее жизнь у тех, кто отвечает за безопасность. Количество зависимостей растёт, и в какой-то момент становится нереально уследить, откуда в коде может вылезти критичная уязвимость — будь то старая библиотека или транзитивная зависимость, о которой никто даже не помнит.

Решение этого — SCA (Software Composition Analysis) автоматический анализ зависимостей, который помогает вовремя вылавливать уязвимые библиотеки и понимать, что с ними делать.

Меня зовут Эрик Шахов, я AppSec-инженер в Циан. В этой статье расскажу, как мы перестроили систему SCA, изменили её архитектуру и какие инструменты теперь используем для контроля зависимостей. Поделюсь реальным опытом внедрения SBOM (Software Bill of Materials) и тем, как он помогает нам держать код в порядке.

Читать далее

Проксирование из коробки: сравнительный анализ HAProxy, Envoy, Nginx, Caddy и Traefik

Level of difficultyMedium
Reading time23 min
Views19K

Всем привет, меня зовут Стас, я техлид в Mish Product Lab.

Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно объективный ответ — это протестировать и сравнить различные варианты на практике.

Именно так родилась идея провести сравнительный анализ производительности HAProxy, Envoy, Nginx, Caddy и Traefik с поддержкой SSL/TLS. Мы хотели понять, какой из инструментов «из коробки» предоставляет наилучшую производительность и минимальные накладные расходы, особенно при обработке SSL-трафика, который, как известно, требует дополнительных ресурсов из-за шифрования и дешифрования.

Читать далее

Выбор индексов в базах данных для highload-систем

Level of difficultyHard
Reading time27 min
Views14K

Индексы – это «ускорители» доступа к данным в базах данных. Правильно выбранные индексы могут многократно ускорить запросы, что особенно критично в highload-системах с большими объёмами данных и большим числом запросов. Однако за ускорение чтения приходится платить усложнением записи и дополнительным расходом памяти. В этой статье мы подробно рассмотрим, как работают разные типы индексов в реляционных СУБД, как выбирать индекс под конкретный запрос, обсудим подводные камни (например, блоат, переиндексация, избыточные индексы) и затронем индексацию в NoSQL (MongoDB, Cassandra). Завершим чеклистом, который поможет выбрать оптимальный индекс под вашу задачу.

Читать далее

Лучшие практики создания отказоустойчивых систем

Level of difficultyMedium
Reading time23 min
Views12K

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

Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.

Читать далее

Postman скрипт для обновления токена авторизации

Level of difficultyEasy
Reading time4 min
Views5.3K

Недавно по работе занимался тестирование очередного апи и столкнулся с таким неудобством, что все запросы требуют авторизации, а токен живёт всего 5 минут. Из-за этого приходилось постоянно делать запрос авторизации и обновлять токен вручную.

В какой-то момент мне это надоело, и я задумался как это дело автоматизировать. Узнал, что можно написать Pre-request скрипт для коллекции в постмане, который будет выполняться перед каждым запросом, а уже в этом скрипте делать запрос токена авторизации.

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

Мне неожиданно помогла локально запущенная лама, которая мощно сходу дала мне хорошую подсказку, как сделать в скрипте постмана запрос с телом urlencoded и сохранить из него ответ в переменные. Чем я собственно и хотел поделиться.

Итак исходное положение. Имеем некую коллекцию запросов в постмане и все креды для авторизации сохранённые в переменных.

У нас есть запрос Auth, который получает токен авторизации.

Читать далее

Принцип каскадного снижения связанности

Reading time9 min
Views6.8K

Часто ли вы слышите о новом принципе проектирования IT-архитектуры? А об обновлении классических принципов? Попробую вас удивить и привнести что-то новое. 😎

У вас никогда не вызывало недоумения, что связанность и прочность (или связность) — это про примерно одно и то же (и то, и другое — это некая связь), но одно — хорошо, а другое — почему-то плохо? 🙂
Но давайте по порядку.

Читать далее

Путеводитель по когнитивной перегрузке

Reading time23 min
Views7.2K

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

О том, что такое “когнитивная перегрузка” с точки зрения нейробиологии и когнитивных исследований, о влиянии цифровой среды и том, как снизить негативные последствия — в статье. 

Читать далее

Почему мы построили монолит на чистой архитектуре. И почему это взбесило системных аналитиков

Level of difficultyMedium
Reading time12 min
Views19K

Привет! Меня зовут Павел Лукьянов, я заместитель CTO в AGIMA. На одной из прошлых работ мы с ребятами попробовали внедрить так называемую чистую архитектуру на монолитном проекте. И это был интригующий опыт. Во-первых, мы начали намного рациональнее подходить к оценке задач. Во-вторых, заметно сократили time-to-market. А в-третьих, сильно разозлили наших аналитиков. Считаю, такими впечатляющими результатами стоит делиться.

Читать далее

Build Checks в Docker: как проверять конфигурацию сборки

Level of difficultyEasy
Reading time5 min
Views3.5K

Build Checks — это новая функция, представленная в Dockerfile 1.8, которая позволяет проверять конфигурацию сборки перед её выполнением. Эта функция работает как расширенная форма линтинга для Dockerfile и параметров сборки, помогая выявлять потенциальные проблемы и антипаттерны до начала фактической сборки.

Читать далее

Один выгоревший сеньор или два джуна с горящими глазами?

Level of difficultyEasy
Reading time7 min
Views12K

На Highload++ 2024, в рамках конкурса за VR-шлем, попался вопрос из заголовка статьи. Я без сомнений ответил, что сеньор, и вот почему...

Читать далее

Почему JWT — не панацея: разбор проблем сессий и безопасности

Level of difficultyMedium
Reading time6 min
Views26K

JWT для сессий: удобство или головная боль?

JSON Web Token (JWT) приобрёл популярность как удобный способ аутентификации и передачи данных между клиентом и сервером. Его ценят за простоту, stateless-подход и гибкость. Однако большинство гайдов рассказывают только о плюсах, забывая о недостатках.

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

Читать далее

Взгляд на JWT как на инструмент построения стройной архитектуры приложения

Level of difficultyMedium
Reading time11 min
Views7.9K

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

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

Читать далее

Секреты стройности монолита: подходы по снятию нагрузки с БД

Level of difficultyEasy
Reading time16 min
Views13K

Привет! Меня зовут Олег Кретинин, и я разработчик в команде общих компонентов в Яндекс Еде. Сегодня я расскажу о том, как мы смогли успешно снять нагрузку с нашей базы данных, а также уменьшить её размер.

Помимо сервисов, написанных на C++, Go и Python, у нас есть монолит, он же «кора», на PHP, который всё ещё представляет огромную кодовую базу, хранит кучу логики и предоставляет данные по API для 120 сервисов.

После обновления фреймворка и версии PHP мы принялись за решение другой проблемы, которая всё чаще и чаще давала о себе знать. В тот период у нас возросло количество инцидентов, связанных с базой данных, и нам нужно было что‑то придумать, чтобы стабилизировать проект максимально быстро. Случалось, что всё сыпалось во время праздничных дней, когда количество заказов увеличивалось на 30–40%, или во время разовых массовых операций, например когда однажды в большую сеть ресторанов добавлялся бесплатный соус к каждой позиции меню.

Читать далее

Сальваторе Санфилиппо возвращается в Redis

Level of difficultyEasy
Reading time9 min
Views1.1K

Друзья, как будто мы пропустили интересное и важное событие! В декабре 2024 года Сальваторе Санфилиппо - автор Redis - спустя 4 с половиной года отсутствия в проекте возвращается к своему детищу.

Для меня редис - это по-прежнему простой и эффективный элемент разрабатываемых систем. Возможно еще и поэтому я с большим интересном и даже удовольствием прочитал пост antirez-а о возвращении. Под катом взгляд Сальваторе на проблемы лицензирования, раскол в сообществе редис, нейронные сети и LLM, векторный поиск и, конечно, дальнейшие планы по работе над Redis и всё, что с этим связано.

Приятного чтения!

Заговор разработчиков против корпораций: архитектура и принципы

Level of difficultyMedium
Reading time14 min
Views14K

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

— Нет никакой организации! — вопили они.

Подозреваю, что слежка велась через мой телеграм-канал.

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

Узнать тайны, о которых молчали

Создаем мультитенантные Symfony-приложения с помощью Ecotone

Level of difficultyMedium
Reading time19 min
Views1.3K

Способ реализации мультитенантности (multitenancy, мультиарендности) зависит от сферы деятельности, в которой мы работаем. В некоторых случаях нам может хватать одной общей базы данных, а в некоторых нам могут потребоваться отдельные базы данных для полной изоляции. У нас может быть всего пара арендаторов (tenants, тенантов) или же наоборот сотни, нам может потребоваться замедлить или ускорить производительность для конкретного арендатора. Все это создает уникальную среду, в которой мультитенантность является не только техническим вопросом, но и вопросом бизнес‑логики.

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

Читать далее

Agile умер: из-за своего сострадания к product- и project-менеджерам (с) Фридрих Ницше

Level of difficultyEasy
Reading time8 min
Views43K

Agile — бог управления проектами последних лет. И неужели он умер? Или многочисленные прожект- и продакт-менеджеры убили его? Разбираемся, почему прозрачность Agile зачастую приводит к хаосу и анархии, а не гибкости и высокой ценности продукта. 

Читать далее

Горизонтальное масштабирование базы данных. Репликация. Партицирование. Шардирование

Level of difficultyEasy
Reading time11 min
Views20K

В современном мире данных нагрузка на базы данных стремительно растёт. Когда один сервер перестаёт справляться с объёмом запросов, встаёт вопрос о масштабировании: как эффективно распределить нагрузку, сохранив высокую производительность и доступность?

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

Читать далее

Как обратная связь кандидатов меняет правила игры?

Reading time3 min
Views2.3K

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

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

Исследовать дальше

Information

Rating
Does not participate
Date of birth
Registered
Activity