Библиотека программиста | программирование, кодинг, разработка
81.5K subscribers
2.77K photos
118 videos
87 files
6.08K links
Все самое полезное для программиста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/a32a0d94

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
🐳 Ключевые концепции Docker в одной диаграмме от Ивана Величко: на заметку разработчику

#инфографика
This media is not supported in your browser
VIEW IN TELEGRAM
🔒 Блокировки баз данных: ключевые различия

Блокировка — временное ограничение на выполнение некоторых операций обработки данных. Она предотвращают одновременный доступ к данным для обеспечения целостности и консистентности данных.

📌 Основные типы блокировок:

🔷 Shared Lock: позволяет нескольким транзакциям одновременно читать ресурс, но не модифицировать его
🔷 Exclusive Lock: позволяет транзакции как читать, так и модифицировать ресурс
🔷 Update Lock: используется для предотвращения взаимоблокировки, когда транзакция намеревается обновить ресурс
🔷 Schema Lock: используется для защиты структуры объектов базы данных
🔷 Bulk Update Lock: используется во время массовых вставок
🔷 Key-Range Lock: используется в индексированных данных для предотвращения фантомных чтений
🔷 Row-Level Lock: блокирует конкретную строку в таблице
🔷 Page-Level Lock: блокирует конкретную страницу (фиксированный блок данных) в базе данных
🔷 Table-Level Lock: блокирует всю таблицу

👉 Источник

#инфографика
📑 Пагинация страниц при проектировании API: основные методы

🔹 На основе смещения:
GET /orders?offset=0&limit=3

🔹 На основе курсора:
GET /orders?cursor=xxx

🔹 На основе страницы:
GET /items?page=2&size=3

🔹 На основе ключа:
GET /items?after_id=102&limit=3

🔹 На основе времени:
GET /items?start_time=xxx&end_time=yyy

🔹 Гибридная пагинация:
GET /items?cursor=abc&start_time=xxx&end_time=yyy

👉 Читать подробнее о достоинствах и недостатках

#проектирование_систем #инфографика
🛠 Технический стек Netflix: обзор инструментов CI/CD пайплайна

☑️ Планирование работы: Jira + Confluence
☑️ Разработка: Java + другие языки для различных юзкейсов
☑️ Сборка: Gradle + Gradle-плагины
☑️ Packaging: Amazon Machine Image
☑️ Хаос-тестирование
☑️ Деплой: Spinnaker для Canary rollout deployment
☑️ Мониторинг: Atlas + Kayenta
☑️ Инциденты: PagerDuty

👉 Источник

#инфографика
🚀 8 ключевых стратегий масштабирования систем:

☑️ Проектирование stateless сервисов, которые не зависят от данных конкретного сервера и проще масштабируются
☑️ Расширение количества серверов для распределения нагрузки
☑️ Использование балансировщика нагрузки для равномерного распределения входящих запросов по серверам
☑️ Автоматическое масштабирование для автоматической корректировки ресурсов в реальном времени
☑️ Кэширование для уменьшения нагрузки на базу данных и обработки повторяющихся запросов
☑️ Репликация данных на нескольких узлах для масштабирования операций чтения и повышения отказоустойчивости
☑️ Распределение данных по нескольким инстансам для масштабирования операций записи и чтения
☑️ Перенос трудоемких задач на фоновые рабочие процессы с использованием асинхронной обработки

👉 Источник

#инфографика
🚀 История девятимесячного пути к горизонтальному шардированию стека Postgres Figma и ключ к открытию (почти) бесконечной масштабируемости: по мотивам статьи из блога Figma

Стек базы данных Postgres, с ростом пользовательской базы на 200% с 2018 года до 3 миллионов пользователей в месяц, вырос почти в 100 раз.

📌 Как команде это удалось?

🔷 Вертикальное масштабирование и репликация: они обновили базу до крупнейшего инстанса Amazon RDS и создали несколько реплик для масштабирования чтения, используя PgBouncer для управления соединениями.
🔷 Вертикальное разделение: перенесли высоконагруженные таблицы в отдельные базы данных, управляемые несколькими PgBouncer.
🔷 Горизонтальное шардирование: для больших таблиц внедрили горизонтальное шардирование, создавая новый сервис DBProxy для маршрутизации и выполнения запросов.

👉 Подробнее
👉 Источник

#проектирование_систем #инфографика
🛠 Коллекция инструментов для разработчика на любой случай жизни

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

👉 Источник

#инфографика
🤩 Почему PostgreSQL — лучшая СУБД по мнению разработчиков в соответствии с Stackoverflow Developer Survey?

Потому что это единая СУБД, которая охватывает почти все кейсы, в которых нуждаются разработчики:

☑️ OLTP (Online Transaction Processing)
☑️ OLAP (Online Analytical Processing)
☑️ Потоковая обработка с PipelineDB
☑️ Геопространственные возможности с PostGIS
☑️ Данные временных рядов с Timescale
☑️ Распределенные таблицы с Citus

👉 Источник

#инфографика
📌 Семантическое версионирование (SemVer): наглядная иллюстрация

Семантическое управление версиями — это формальное соглашение для определения номера версии новых выпусков ПО. Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:

1️⃣ МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API
2️⃣ МИНОРНУЮ версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости
3️⃣ ПАТЧ-версию, когда вы делаете обратно совместимые исправления.

Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к формату МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ.

👉 Источник

#инфографика