Кэширование хранит часто используемые данные в быстром слое, обычно в памяти.
Это снижает нагрузку на базу данных и ускоряет ответы системы.
Один из самых эффективных способов улучшить производительность, масштабируемость и сократить расходы.
ПОЧЕМУ КЭШИРОВАНИЕ ВАЖНО
Экономит запросы к базе
Уменьшает задержку
Справляется с высоким количеством чтений
Укрепляет стабильность при нагрузках
Снижает стоимость инфраструктуры
1) CLIENT-SIDE CACHING
Хранение данных в браузере пользователя.
Используются cookies, localStorage, service workers.
Меньше повторных загрузок статических ресурсов.
2) CDN CACHING
Статические файлы лежат на глобальных edge-серверах.
CSS, JS, изображения, видео, шрифты.
Меньше задержка у глобальных пользователей и разгрузка основного сервера.
3) APPLICATION-LEVEL CACHING
Кэш внутри приложения.
Например, структуры в памяти вроде LRU cache.
Очень быстро, но работает в рамках одного сервера.
4) DISTRIBUTED CACHING
Общий кэш для множества серверов.
Инструменты: Redis, Memcached.
Подходит для горизонтального масштабирования и устраняет дублирование кэша.
5) DATABASE QUERY CACHING
Базы хранят результаты частых запросов.
MySQL Query Cache, Postgres внутренний кэш, MongoDB WiredTiger.
Ускоряет повторные чтения.
6) WRITE-BEHIND
Запись идет в кэш, а в базу — асинхронно.
Снижает задержку записи.
Подходит для систем с высокой нагрузкой на запись.
7) WRITE-THROUGH
Записи попадают в кэш и базу одновременно.
Гарантирует консистентность.
Немного медленнее из-за двойной записи.
8) CACHE-ASIDE
Приложение сначала проверяет кэш.
Если промах — идет в базу, затем помещает результат в кэш.
Гибкий и самый популярный вариант.
9) READ-THROUGH
Приложение всегда читает из кэша.
При промахе сам кэш получает данные из базы.
Кэш всегда остается обновленным.
10) TTL И ПОЛИТИКИ ИСТЕЧЕНИЯ
Каждая запись имеет срок жизни.
TTL, LRU, LFU, FIFO — разные режимы очистки данных.
11) INVALDATION
Ручное удаление ключей, удаление по шаблону, автоматическое истечение по TTL или лимиту памяти.
12) MULTI-LAYERED CACHING
Несколько уровней сразу: браузер, CDN, распределенный кэш, кэш приложения.
Полезно для глобальных систем с большим трафиком.
Совет
Кэширование помогает добиться высокой скорости, низкой нагрузки на базу и хорошей масштабируемости.
Стратегию нужно подбирать исходя из размеров системы, интенсивности запросов и требований к консистентности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Docker Volumes & Data Persistence
→ Контейнеры по умолчанию временные, их данные исчезают после остановки или удаления.
→ Docker даёт механизмы для постоянного хранения, чтобы данные переживали перезапуски.
→ Самый надёжный способ - использовать Docker volumes.
1. Почему важна устойчивость данных
→ Контейнеры часто пересоздаются при обновлениях и масштабировании.
→ Без персистентности пропадут логи, базы данных, загрузки пользователей, конфиги.
→ Docker volumes решают это, вынося данные за пределы файловой системы контейнера.
2. Варианты хранилищ в Docker
a) Volumes
→ Управляются Docker.
→ Хранятся в /var/lib/docker/volumes/.
→ Не зависят от контейнеров.
→ Лучший выбор для БД и долгоживущих данных.
b) Bind Mounts
→ Привязывают локальную директорию хоста к контейнеру.
→ Удобно в разработке.
→ Менее переносимые.
c) tmpfs Mounts
→ Данные только в памяти.
→ Очень быстрые, но непостоянные.
→ Для временных и чувствительных данных.
3. Что такое Docker Volume
→ Это область постоянного хранения, управляемая Docker.
→ Не удаляется при удалении контейнера.
→ Можно безопасно шарить между контейнерами.
Создать volume:
docker volume create mydata
Использовать:
Посмотреть:
4. Типы Volumes
a) Named Volumes
→ Создаются вручную.
→ Чистая изоляция от файлов системы хоста.
→ Лучший вариант для продакшена.
b) Anonymous Volumes
→ Без имени.
→ Могут удаляться вместе с контейнером.
→ Для временных задач.
5. Преимущества Docker Volumes
→ Данные переживают рестарты.
→ Легко бэкапить и переносить.
→ Работают при обновлении контейнеров.
→ Можно шарить между контейнерами.
→ Docker оптимизирует хранение под производительность.
6. Bind Mounts
→ Позволяют смонтировать директорию хоста:
→ Удобно в разработке (горячая перезагрузка кода).
→ В продакшене использовать аккуратно.
7. Persistency в Docker Compose
Compose автоматически управляет volumes.
Пример:
→ База сохраняет данные между перезапусками.
8. Бэкап и восстановление Volumes
Бэкап:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar czvf /backup/backup.tar.gz /data
Восстановление:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar xzvf /backup/backup.tar.gz -C /
9. Как выбрать способ хранения
→ Volumes - лучший вариант для продакшена.
→ Bind mounts - для разработки.
→ tmpfs - для временных и быстрых операций.
Quick tip
→ Docker volumes - основа устойчивости данных.
→ Даёт гибкость, скорость и надёжность.
→ Незаменимы для баз данных, stateful-сервисов и реальных продакшен-приложений.```
→ Контейнеры по умолчанию временные, их данные исчезают после остановки или удаления.
→ Docker даёт механизмы для постоянного хранения, чтобы данные переживали перезапуски.
→ Самый надёжный способ - использовать Docker volumes.
1. Почему важна устойчивость данных
→ Контейнеры часто пересоздаются при обновлениях и масштабировании.
→ Без персистентности пропадут логи, базы данных, загрузки пользователей, конфиги.
→ Docker volumes решают это, вынося данные за пределы файловой системы контейнера.
2. Варианты хранилищ в Docker
a) Volumes
→ Управляются Docker.
→ Хранятся в /var/lib/docker/volumes/.
→ Не зависят от контейнеров.
→ Лучший выбор для БД и долгоживущих данных.
b) Bind Mounts
→ Привязывают локальную директорию хоста к контейнеру.
→ Удобно в разработке.
→ Менее переносимые.
c) tmpfs Mounts
→ Данные только в памяти.
→ Очень быстрые, но непостоянные.
→ Для временных и чувствительных данных.
3. Что такое Docker Volume
→ Это область постоянного хранения, управляемая Docker.
→ Не удаляется при удалении контейнера.
→ Можно безопасно шарить между контейнерами.
Создать volume:
docker volume create mydata
Использовать:
docker run -v mydata:/app/data nginx
Посмотреть:
docker volume inspect mydata4. Типы Volumes
a) Named Volumes
→ Создаются вручную.
→ Чистая изоляция от файлов системы хоста.
→ Лучший вариант для продакшена.
b) Anonymous Volumes
→ Без имени.
→ Могут удаляться вместе с контейнером.
→ Для временных задач.
5. Преимущества Docker Volumes
→ Данные переживают рестарты.
→ Легко бэкапить и переносить.
→ Работают при обновлении контейнеров.
→ Можно шарить между контейнерами.
→ Docker оптимизирует хранение под производительность.
6. Bind Mounts
→ Позволяют смонтировать директорию хоста:
docker run -v /host/path:/container/path myapp→ Удобно в разработке (горячая перезагрузка кода).
→ В продакшене использовать аккуратно.
7. Persistency в Docker Compose
Compose автоматически управляет volumes.
Пример:
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
→ База сохраняет данные между перезапусками.
8. Бэкап и восстановление Volumes
Бэкап:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar czvf /backup/backup.tar.gz /data
Восстановление:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar xzvf /backup/backup.tar.gz -C /
9. Как выбрать способ хранения
→ Volumes - лучший вариант для продакшена.
→ Bind mounts - для разработки.
→ tmpfs - для временных и быстрых операций.
Quick tip
→ Docker volumes - основа устойчивости данных.
→ Даёт гибкость, скорость и надёжность.
→ Незаменимы для баз данных, stateful-сервисов и реальных продакшен-приложений.```
👍11🔥1
11 декабря(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Что добавили:
🔹 Анализ утечек ресурсов прямо в IDE - ошибки правятся на лету
🔹 ИИ-помощники: Junie и Claude Agent помогают писать и править код
🔹 Встроенная поддержка Terraform без плагинов
🔹 Удобный мониторинг Kubernetes-процессов
Подробности — jetbrains.com/go/whatsnew/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥2🥰1
Он сканирует директории и показывает, что именно съедает место, работая особенно шустро на SSD за счёт параллельной обработки. Есть TUI-интерфейс: можно стрелками ходить по каталогам, сортировать по размеру и удалять лишнее прямо из программы.
Установка максимально простая - есть готовые бинарники на GitHub, пакеты в репозиториях (AUR, Homebrew, Snap и др.), так что поставить и проверить свои диски можно за пару минут.
https://github.com/dundee/gdu
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1🔥1
🔥 Новый курс на Stepik: Linux - апгрейд твоих скиллов до уровня инженера
Хватит быть “кликавшим по GUI”. Пора понимать систему изнутри.
Что освоишь:
• Bash, grep, sed, awk - инструменты взрослых админов
• Процессы, сеть, права, логирование и починка поломок
• SSH, firewall, systemd, cron, автозапуск сервисов
После курса: Linux перестаёт быть загадкой - ты будешь работать с ним уверенно.
40% скидка на 48 часов
👉 Начни учиться на Stepik.
Хватит быть “кликавшим по GUI”. Пора понимать систему изнутри.
Что освоишь:
• Bash, grep, sed, awk - инструменты взрослых админов
• Процессы, сеть, права, логирование и починка поломок
• SSH, firewall, systemd, cron, автозапуск сервисов
После курса: Linux перестаёт быть загадкой - ты будешь работать с ним уверенно.
40% скидка на 48 часов
👉 Начни учиться на Stepik.
👍2🔥2🥰2
🚀 Spreak - мощный и удобный инструмент для перевода в Go
Если вы пишете приложения на Go и хотите добавить поддержку нескольких языков - библиотека Spreak упрощает эту задачу.
🔹 Поддерживает gettext-совместимые каталоги
🔹 Работает с plural-формами и контекстом
🔹 Позволяет хранить переводы в файлах или embed'ить их в бинарь
🔹 Имеет удобный API для извлечения сообщений и форматирования
Spreak помогает избежать ручного хардкода строк, оставаясь совместимым с существующими инструментами локализации.
🔗 GitHub: https://github.com/vorlif/spreak
Если вы пишете приложения на Go и хотите добавить поддержку нескольких языков - библиотека Spreak упрощает эту задачу.
🔹 Поддерживает gettext-совместимые каталоги
🔹 Работает с plural-формами и контекстом
🔹 Позволяет хранить переводы в файлах или embed'ить их в бинарь
🔹 Имеет удобный API для извлечения сообщений и форматирования
Spreak помогает избежать ручного хардкода строк, оставаясь совместимым с существующими инструментами локализации.
🔗 GitHub: https://github.com/vorlif/spreak
👍8❤1🔥1