2. Зачем митапы?
Поделиться с разработчиками Splitmetrics
Поделиться со всеми разработчиками
Обкатать новый курс для техлидов
Пообщаться
3. Для кого митапы?
Для разработчиков
Для тестировщиков
Для сочувствующих и интересующихся
Знание нескольких принципов освобождает от
знания многих фактов
4. Мы на новом месте
Зарегистрировались 157 человек
После митапа идем в Simple общаться
5. Кто проводит митапы
Компания Splitmetrics
37 человек, все в офисе в Минске
2 продукта в области рекламы, 5 лет
Продажи SaaS из РБ на запад
Python, PostgreSQL, MongoDB, Redis, Kafka,
RabbitMq, Celery, Angular, React, Redux…
6. План митапов
1. Software Craftsmanship & Agile.
Как не делать говно?
2. Принципы хранения данных
3. Обзор баз данных
4. Очереди сообщений
5. Кэши и файловые хранилища
7. План митапов
6. Как Software Craftsmanship фиксит проблемы
Agile
7.
8.
9.
10.
8. Software Craftsmanship
Working software over
comprehensive documentation
Responding to change over
following a plan
Individuals and interactions
over processes and tools
Customer collaboration over
contract negotiation
Not only working software, but
also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and
interactions, but also a
community of professionals
Not only customer collaboration,
but also productive
partnerships
9. План этого митапа
1. Кэши
2. Кэши в микросервисах
3. Несколько задач на архитектуру
There are only two hard things in Computer
Science: cache invalidation and naming things
Phil Karlton
10. Что такое кэш?
Компонент, который хранит ответы на будущие
запросы
Кэш заменяет собой хранилище данных,
доступ к которым дорогой, или вычисление
которых дорого
11. Что дает кэш?
Временно хранит объекты, которые нужны
чаще чем другие
Уменьшает время отдачи объектов, которые
нужны чаще чем другие
Уменьшает время отклика всей системы,
снижает нагрузку
12. Кэш или буфер?
Буфер уменьшает количество передач данных,
делая несколько больших передач вместо
многих маленьких
Кэш использует концепцию буфера
13. Read и Write кэши
Read cache
Заполняем кэш заранее, отдаем по запросу
Write cache
Сохраняем в кэше, скидываем в хранилище
порциями
Увеличивает throughput
14. Типы по размещению
В текущем процессе
В памяти текущей машины
Распределенные
Реплицированные
28. Кэш страниц сайта
Есть наиболее популярные страницы
LFU
Все популярные страницы влазят в кэш – цель
выполнена
Какой формальный критерий популярности
страницы?
29. Кэш предагрегированных отчетов в
бд
Есть куски наиболее популярных отчетов
Подготовить отчет легко
В бд все отчеты, иначе их расчет отнимет
большое время
30. Кэш в PostgreSQL
Кэш кусков таблиц, индексов, метаинформации
Эффективность – минимизация обращений к
диску
Используется ML для увеличения
эффективности
31. Кэш в жадных алгоритмах
Кэш вычисленных значений
Нужно хранить все полученные значения
Алгоритм конструируется так, чтобы сделать
объем кэша реалистичным
35. Какой eviction выбрать?
Locality of reference
Время устаревания
Размер кэша
Количество объектов всего
Особенности предметной области
Случайный eviction – если сложно