🔥 CAP-теорема 📍 Теорема CAP утверждает, что распределенная система не может одновременно обеспечивать более двух из этих трех гарантий: (C)onsistency – согласованность, во всех серверах в один момент времени данные не противоречат друг другу. (A)vailability - доступность, любой запрос к системе завершается корректным откликом, однако, без гарантии, что ответы всех серверов системы совпадают. (P)artition Tolerance - устойчивость к разделению, разделение системы на несколько изолированных секций...
Backend Notes 🧠 👨💻
Для связи: @DevPython3 📌 Backend-разработка 📌 System Design 📌 Архитектура 📌 Проектирование
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
18 из 18🎤 Вебинар × ArchDays Ребят, нас уже около 2к, это круто, спасибо вам! 🎉🎉🎉 Приглашаю всех на вебинар "Проектирование БД: от NF к денормализации данных". Расскажу о том, с чем я столкнулся с ростом проекта относительно Базы Данных. Приходите, задавайте вопросы…
🔥 Consistent Hashing 💡 Хеш-таблица - структура данных, которая обеспечивает быстрый доступ к объектам по их ключам. Ключи проходят через хеш-функцию, которая преобразует их в индексы для доступа к данным в таблице. 1⃣ Distributed hashing (распределенное хеширование) Если хеш-таблица большая, ее можно разнести по нескольким серверам (шардам). 📌 У нас N серверов, на какой сервер попадут данные? ✅ server_index = hash(key) mod N Хеш-функция преобразует key в число, от которог...
🔥 Rate Limiting Rate Limiting — это стратегия ограничения сетевого трафика. Устанавливается ограничение на то, как часто кто-то может повторять запросы в течение определенного периода времени. Например, если мы выставляем какое-то внешнее API и хотим ограничить RPS для пользователей, чтобы предотвратить DDoS (Distributed Denial-of-Service). 🛡️ Запросы сверх ограничения (квоты) могут быть отклонены с ошибкой "429 Too Many Requests". ⚙️Алгоритмы, по которым может работать Rate Limiter, допустим,...
🎤 Вебинар × ArchDays Ребят, нас уже около 2к, это круто, спасибо вам! 🎉🎉🎉 Приглашаю всех на вебинар "Проектирование БД: от NF к денормализации данных". Расскажу о том, с чем я столкнулся с ростом проекта относительно Базы Данных. Приходите, задавайте вопросы 😊 🗓 Когда: 1 августа(вторник) в 19:00 по Мск 📍Регистрация: https://archconf.ru/meetup_01082023 Вход свободный :) Запись будет в youtube :) 💡 Возможно у вас есть предложения по темам для контента, пишите в комменты ⬇️ #webinar #archda...
🔥 Логи, Метрики, CI/CD 1️⃣ Logging - это запись (обычно хронологическая) событий, которые происходят в системе. Мониторинг логов важен, поскольку помогает выявлять ошибки, проблемы и узкие места (bottleneck) в системе. Вы можете отслеживать журналы ошибок…
🔥 А что, если очередь сообщений уйдет в offline? 🆘 ⚙️ Допустим, у нас есть требование по высокой доступности (high availability), а наша очередь сообщений ушла в offline, а мы хотим писать в нее, что делать? :) ⬇️ Мой вариант решения ⬇️ Реализуем паттерн Outbox - сохранение сообщений в хранилище данных (как правило, в таблице outbox в базе данных), прежде чем они будут в конечном итоге переданы в брокер сообщений. Если бизнес-объект и соответствующие сообщения сохраняются в рамках одной транза...
🔥 Шардирование БД Шардирование (sharding) - это подход к хранению данных, при котором данные разбиваются на более мелкие части, называемые шардами. Каждый шард использует одну и ту же схему, хотя фактические данные в каждом шарде уникальны для шарда. Шард может быть размещен на разных физических/виртуальных машинах. ⚙️ На первой картинке показано как данные размещаются в шарды на основе идентификаторов пользователей, с использованием хеш-функции: user_id % 4. Допустим, мы хотим вставить новую з...
🙂 Первый и завершающий пост в 2024 году! 🎉 Этот год стал для меня насыщенным и ярким в плане профессионального роста и публичных выступлений. Я с удовольствием делился своим опытом на конференциях и подкастах, однако не делился в своем tg-канале 😬 🔑 Ключевые темы, о которых я рассказывал Оркестрация бизнес-процессов с помощью Temporal: 🔹 Обзор Temporal и его практическое применение: "Как Temporal помогает не потерять вашу пиццу" 🔹 Архитектурное применение Temporal в system design: "System ...
🔥 Downtime budget 📌 Высокая доступность (High availability) — это способность системы непрерывно работать в течение длительного периода времени. Высокая доступность измеряется в процентах, где 100 % означает, что система имеет 0 простоев. 📌 Время простоя (downtime) — интервал с момента неработоспособности сервиса до момента возобновления его работы. ⚙️ Время простоя прописывается в соглашении об уровне предоставления услуг — SLA (Service Level Agreement). ℹ️ Например, если SLA равен 99%, прос...