SlideShare una empresa de Scribd logo
1 de 50
9-я конференция .NET разработчиков 
12 октября 2014 
dotnetconf.ru 
От авгиевых конюшен к 
звездам 
Гончаров Лев 
ByndyuSoft 
ultralisc@gmail.com
2 
Описание проекта
3 
Задача 
Максимальная отказоустойчивость 
при минимальном бюджете
4 
Crawlers
5 
Crawlers 
• Скачать 
• Обработать 
• Сохранить
6 
Crawlers
7 
Crawlers. Их много, ты один 
• Упростить развертывание 
• Ввести метрики эффективности работы 
• Сбор ошибок 
• Необработанные исключения тоже надо 
собирать
8 
MsSQL
9 
MsSQL 
Описание: 
• Хранит данные за пол года 
• БД до 1ТБ
10 
MsSQL Cluster 
• Общее хранилище 
• Transactions logs 
• Log shipping 
• AlwaysOn 
• Mirroring
11 
MsSQL медленно работает 
• Проверить CPU/RAM/ DISK queue 
• Посмотреть статистику запросов 
• Посмотреть профайлером 
• Оптимизировать запросы
12 
Найди затык по графику
13 
База стала узким местом 
Временное решение: SSD 
Решение: Message Queue
14 
Message Queue
15 
Message Queue
16 
Message Queue 
• В БД пишется только результат 
• Снижение нагрузки на БД 
• Масштабируемость
17 
Message Queue 
Варианты резервирования: 
• Холодный резерв 
VM Replica 
• Горячий резерв 
Cluster
18 
WEB
19 
WEB 
• Генерирует контент 
• Отдает статику
20 
WEB перестал справляться
21 
WEB Static
22 
WEB Static 
Описание: 
• Хранит изображения из статей 
• Конвертирует 
• При необходимости скачивает с источника 
• Будет до 2ТБ изображений
23 
WEB Static
24 
WEB Static 
Варианты синхронизации файлов: 
• На уровне железа (СХД) 
• На уровне ОС (DFS) 
• На уровне приложения (Сохранять 
краулером на все сервера)
25 
WEB Static 
Планировали DNS Round Robin
26 
WEB Static 
Получилось NLB
27 
WEB CDN
28 
WEB CDN 
• Уменьшает нагрузку на наши сервера 
• Может иметь странности 
• Можно положить на тестах
29 
WEB Balancer
30 
WEB Balancer
31 
WEB Balancer 
Варианты реализаций: 
• Аппаратный балансировщик 
• IIS + ARR 
• Nginx 
• Haproxy
32 
WEB Balancer
33 
WEB Balancer 
Проблема: Пользователь должен попадать 
на тот сервер где был раньше 
Решение: приложение выставляет Cookie
34 
MongoDB
35 
CAP Теорема 
• Consistency (Согласованность) 
• Availability (Доступность) 
• Partition tolerance (Устойчивать к 
разделению) 
Выберите два
36 
MongoDB 
Проблема: SQL не справляется на запись 
Решение: NoSQL, т.к данные поддаются 
разделению
37 
MongoDB Cluster
38 
MongoDB проблемы 
• Backups 
• Upgrades 
• BUGS
39 
Backups
40 
Backups 
Админы делятся на тех, кто: 
• Делает бэкапы 
• Делает бэкапы в географически разные 
места(правило 3-2-1) 
• Проверяет бэкапы
41 
Как это заливать Все?
42 
Обычная заливка 
• Миграции 
• Сайты 
• Краулеры
43 
Заливка 
Проблема: сложный и неочевидный 
процесс заливки, правя конфиги 
Решение: трансформации, скрипты заливки
44 
Заливка 
Проблема: монстрообразные скрипты 
Решение: переход к объектам – можно 
выбирать что залить
45 
Monitoring
46 
Monitoring 
• Отрицание 
• Гнев 
• Смирение
47 
Monitoring 
Система лучше или хуже работает после 
заливки?
48 
Monitoring 
А всем ли удобно читать письма?
49 
Заключение 
2012 2014 
Серверов 3 60 
RAM GB 72 800 
SSD GB 200 10 000 
MsSQL GB 150 700 
MongoDB GB 0 700 
Статей за 
сутки 
10 000 150 000
50 
Спасибо за внимание 
Гончаров Лев 
ByndyuSoft 
ultralisc@gmail.com 
http://vk.com/ultral

Más contenido relacionado

La actualidad más candente

Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Olga Lavrentieva
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ontico
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Ontico
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Ontico
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 

La actualidad más candente (20)

Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
Настройка kubernetes: tips and tricks / Михаил Прокопчук (Avito)
 
Sql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migrationSql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migration
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
DevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System AdministratorDevOps в проекте Upsource. Андрей Сизов, System Administrator
DevOps в проекте Upsource. Андрей Сизов, System Administrator
 
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
Опыт миграции между дата-центрами / Михаил Тюрин, Сергей Бурладян (Avito)
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCityDevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
DevOps в команде TeamCity. Евгений Кошкин, Senior Software Developer, TeamCity
 
Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack Борис Павлович - Производительность и масштабируемость OpenStack
Борис Павлович - Производительность и масштабируемость OpenStack
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?
 

Destacado

Destacado (8)

Inversion of Control в .NET
Inversion of Control в .NETInversion of Control в .NET
Inversion of Control в .NET
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NET
 
Внутреннее устройство GC
Внутреннее устройство GCВнутреннее устройство GC
Внутреннее устройство GC
 
Know Your Security Model
Know Your Security ModelKnow Your Security Model
Know Your Security Model
 
Машинное обучение на платформе .NET
Машинное обучение на платформе .NETМашинное обучение на платформе .NET
Машинное обучение на платформе .NET
 
Customer satisfaction для программистов
Customer satisfaction для программистовCustomer satisfaction для программистов
Customer satisfaction для программистов
 
Design & Process Models
Design & Process ModelsDesign & Process Models
Design & Process Models
 

Similar a от авгиевых конюшен к звездам

CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 

Similar a от авгиевых конюшен к звездам (20)

CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагр...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Docker in Production with AWS ECS
Docker in Production with AWS ECSDocker in Production with AWS ECS
Docker in Production with AWS ECS
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQL
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 

от авгиевых конюшен к звездам

  • 1. 9-я конференция .NET разработчиков 12 октября 2014 dotnetconf.ru От авгиевых конюшен к звездам Гончаров Лев ByndyuSoft ultralisc@gmail.com
  • 3. 3 Задача Максимальная отказоустойчивость при минимальном бюджете
  • 5. 5 Crawlers • Скачать • Обработать • Сохранить
  • 7. 7 Crawlers. Их много, ты один • Упростить развертывание • Ввести метрики эффективности работы • Сбор ошибок • Необработанные исключения тоже надо собирать
  • 9. 9 MsSQL Описание: • Хранит данные за пол года • БД до 1ТБ
  • 10. 10 MsSQL Cluster • Общее хранилище • Transactions logs • Log shipping • AlwaysOn • Mirroring
  • 11. 11 MsSQL медленно работает • Проверить CPU/RAM/ DISK queue • Посмотреть статистику запросов • Посмотреть профайлером • Оптимизировать запросы
  • 12. 12 Найди затык по графику
  • 13. 13 База стала узким местом Временное решение: SSD Решение: Message Queue
  • 16. 16 Message Queue • В БД пишется только результат • Снижение нагрузки на БД • Масштабируемость
  • 17. 17 Message Queue Варианты резервирования: • Холодный резерв VM Replica • Горячий резерв Cluster
  • 19. 19 WEB • Генерирует контент • Отдает статику
  • 20. 20 WEB перестал справляться
  • 22. 22 WEB Static Описание: • Хранит изображения из статей • Конвертирует • При необходимости скачивает с источника • Будет до 2ТБ изображений
  • 24. 24 WEB Static Варианты синхронизации файлов: • На уровне железа (СХД) • На уровне ОС (DFS) • На уровне приложения (Сохранять краулером на все сервера)
  • 25. 25 WEB Static Планировали DNS Round Robin
  • 26. 26 WEB Static Получилось NLB
  • 28. 28 WEB CDN • Уменьшает нагрузку на наши сервера • Может иметь странности • Можно положить на тестах
  • 31. 31 WEB Balancer Варианты реализаций: • Аппаратный балансировщик • IIS + ARR • Nginx • Haproxy
  • 33. 33 WEB Balancer Проблема: Пользователь должен попадать на тот сервер где был раньше Решение: приложение выставляет Cookie
  • 35. 35 CAP Теорема • Consistency (Согласованность) • Availability (Доступность) • Partition tolerance (Устойчивать к разделению) Выберите два
  • 36. 36 MongoDB Проблема: SQL не справляется на запись Решение: NoSQL, т.к данные поддаются разделению
  • 38. 38 MongoDB проблемы • Backups • Upgrades • BUGS
  • 40. 40 Backups Админы делятся на тех, кто: • Делает бэкапы • Делает бэкапы в географически разные места(правило 3-2-1) • Проверяет бэкапы
  • 41. 41 Как это заливать Все?
  • 42. 42 Обычная заливка • Миграции • Сайты • Краулеры
  • 43. 43 Заливка Проблема: сложный и неочевидный процесс заливки, правя конфиги Решение: трансформации, скрипты заливки
  • 44. 44 Заливка Проблема: монстрообразные скрипты Решение: переход к объектам – можно выбирать что залить
  • 46. 46 Monitoring • Отрицание • Гнев • Смирение
  • 47. 47 Monitoring Система лучше или хуже работает после заливки?
  • 48. 48 Monitoring А всем ли удобно читать письма?
  • 49. 49 Заключение 2012 2014 Серверов 3 60 RAM GB 72 800 SSD GB 200 10 000 MsSQL GB 150 700 MongoDB GB 0 700 Статей за сутки 10 000 150 000
  • 50. 50 Спасибо за внимание Гончаров Лев ByndyuSoft ultralisc@gmail.com http://vk.com/ultral

Notas del editor

  1. Концепт в тестовом окружении превращается в продакшин
  2. -качаем статьи с инета -анализируем -сохраняем в удобном нам виде -и выдаем пользователю...
  3. Все решают одну задачу, но у каждого свой бюджет и свое понимание максимальной отказоустойчивости, в нашем случае это означало, что -система может потерять в производительности -может до получаса быть частично недоступна -в случае катоклизма в ДЦ, приелим простой в пару дней
  4. По мере повестовавния что бы было понятней, расскажу про то как менялся каждый из элементов системы по отдельности, но стоит держать в уме, что это был процесс растянутый примерно на 2 года
  5. -изначально они были на 2 разных серверах -простой не критичен проблема: из-за переориентации проекта необходим рост поставки с 10-20 тысяч до 200 тысяч решение: развернуть дополнительные краулеры.. автоматизация процесса конфигурирования нового краулера Собираем ошибки в sentry, письмо на почту при эксепшене
  6. SSD решает
  7. рассматривалось несколько вариантов -sql mirroing -windows failover cluster - отпад т.к. требует san/nas -alwayson - отпал т.к. надо было развернуться еще вчера, а технология новая и необкатанная hot standby с SQL была проблема, рассматривали вначале автоматическое переключение между серверами, при помощи 3 стороны witness, но т.к. у нас база в асинхронном режиме, то решили использовать скрипт, который переключает в одном направление primary сервер, а восстаналивать потом ручками, вдруг конфликты будут.
  8. рассматривалось несколько вариантов -sql mirroing -windows failover cluster - отпад т.к. требует san/nas -alwayson - отпал т.к. надо было развернуться еще вчера, а технология новая и необкатанная hot standby с SQL была проблема, рассматривали вначале автоматическое переключение между серверами, при помощи 3 стороны witness, но т.к. у нас база в асинхронном режиме, то решили использовать скрипт, который переключает в одном направление primary сервер, а восстаналивать потом ручками, вдруг конфликты будут.
  9. проблема: начал тупить сиквел решение: -отлов тяжелых запросов, их оптимизация
  10. Но проблемы порой не очевидны Оптимизировали запросы по диску, а оказалось, что памяти не хватает
  11. т.к. отсуствие очереди в течении минут 15 не критично, да и потеря сообщений не страшна, то решили деражть реплику виртуалку и стартовать ее когда настал апокалипсис cold standby -у рабита утекает память, параг гб за пол года, в день десятки млн сообщений На данный момент подумываем о перенастройки кластера hot standby
  12. первый наш CDN падал, в итоге перешли на cloudfare но там была проблема, что брался один из из списка, в итоге на picture store навешали NLB что бы внешний IP был общий
  13. IIS – тяжеловесный Nginx – не проверяет когда нода отпала Аппаратный - дорого остановились на связке Haproxy т.к. самый легковесный
  14. помимо haproxy еще установлен heartbeat, который контролирует, что все IP, на которых весит сайт находятся на живой ноде. т.е. в случае падение одной из проксей, внешний упавшей IP будет авотматически поднят на другой проксе Пришлось компилировать из сорцов т.к. https не поддерживался
  15. Во время построения индексов монга не отвечает проблема: логи монги сильно растут, блокнотом сложно их смотреть рещение: ротация логов монги бэкапы монги -Снимал снапшотом -> veeam шардинг падает в монге, баг в монге не пофикшенный пересинхронизация
  16. проблема: бэкапы хранятся в том же ДЦ решение: реализация правила 3-2-1 ТРИ резервные копии, которые должны быть сохранены в ДВУХ различных физических форматах хранения, причем ОДНА из копий, должна быть передана на внеофисное хранение
  17. Требование заказчика что стг сам деплоится, а хостинг только отвественным лицами
  18. Кол-во сайтов выросло Кол-во окружений выросло проблема: 2 окружений не хватает, либо тестировать - либо делать новый функционал решение: развертывание 3его окружения staging-preprod-hosting
  19. проблема: скрипты заливки сильно сложные, сложно вносить изменения в код для разных окружений решение: powershell + ооп , борьба с дублирование
  20. Система большая стала под 70 серверов, за всем уследить нельяза
  21. -ничего не мониторить, пользователи сами сообщат когда у них упадет веб/1с -мониторить все что-то только можно и нельзя, оповещать всех, включая не очень заинтересованных что на веб сервере 30 секунд была нагрузка на проц 95% -бизнесу пофиг на процессор/память/диски, больше интересует, лучше или хуже стало после заливки. Надо работать на упреждение в мониторинге велика роль заказчика, только он знает, какие метрики реально важны для бизнеса
  22. 6 проблема: система что-то делает, но ее эфективность(кол-во статей) можно посомтреть только SQL запросом решение: мониторить поставку
  23. 8 проблема: сильно много алертов в скайпе решение: не обязательно писать все подряд, бизнесу пофиг что проц в 100% главное что статьи качаются проблема: есть пропуск значений при мониторинге решение: не заббикс собирает данные, а забиксу их шлет, можно делать тяжелые запросы теперь
  24. Изначально это было 3 пк под столом, Стало 7 серверов в ДЦ Планируйте Держите руку на пульсе Запаситесь терпением