SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Денис Колошко 
HHDDCCOONNFF
Докладчик 
Денис Колошко 
Технический директор компании Айти Бэнд (ITBand.by) 
 12+ лет работы в промышленной разработке ПО 
 Системный архитектор 
 Технический консультант 
 Активный разработчик 
 Тренер 
mobile: +375 29 774 89 05 
E-mail: denis@koloshko.com 
Skype: d.koloshko 
Blog: http://it-consulting.koloshko.com 
LinkedIn: http://www.linkedin.com/pub/denis-koloshko/14/89a/862
Айти Бэнд (IT-Band.by) 
 Сервис по разработке 
 .NET, Node.js 
 От защищённых бизнес систем до 
производительных интернет систем 
 Консалтинг 
 Анализ безопасности веб-систем 
 Оптимизация производительности 
 Анализ архитектур
GoneTooSoon.org
Статистика 
 50 млн документов в No-Sql 
 14 млн фотографий и аудио файлов 
 800 000 пользователей 
 200 000 мемориалов 
 Couchbase – до 5-7k операций в 
секунду 
 Пик – 2 млн пользователя в месяц 
 До 50 тыс. фотографий у некоторых 
пользователей
Развитие архитектуры 
Первая 
архитектура 
2007 
Новый стек 
(Amazon) 
2013 
Смена провайдера 
(Amazon+Hetzner) 
2014
Первоначальный стек 
PHP 
PostgreSQL 
NFS, GlusterFS 
Apache 
Nginx
Старый стек. Проблемы 
Производительность 
Сложность 
масштабирования
Август 2013. Атрибуты качества 
новой архитектуры 
 Высокая производительность 
 Высокая масштабируемость 
 Высокая доступность
Вызов 
 2.5 месяца на первый релиз 
 Высокая производительность 
 Горизонтальное масштабирование 
 Бесшовная миграция и переключение 
пользователей  
 Живая среда 
 Трансформация реляционной модели в 
документо-ориентированную модель
Новый стек 
 Couchbase 2.2.0 
 RabbitMQ 3.1.5 
 ElasticSearch 0.90.5 
 ASP.NET WebAPI, ASP.NET MVC5, .NET 4.5 
 Amazon EC2 (виртуальные сервера) 
 Amazon CloudFront (CDN) 
 Amazon S3 (файловое хранилище) 
 Amazon Route 53 (DNS) 
 Amazon Load Balancer (балансировщик) 
 Amazon CloudWatch (Мониторинг) 
 Windows Server 2012 Standard Edition 
 Ubuntu Server 14
Хостинг 
 Front-end Windows сервер: c1.medium, 2 cores, 
RAM 1.7 Gb 
 Сервер данных: m2.2xlarge, 4 cores, RAM 34.2GB, 
EBS 100Gb 
 Стоимость: 
 Всего: 1200 – 1400 USD 
 80% всей стоимости 5 виртуальных серверов 
 Подписка на зарезервированные инстансы 
серверов
Немного о дата миграции
SPA дизайн 
 KnockoutJs 
 Лучшим решением 
был бы AngularJS 
 Routing на клиентской 
стороне 
 SignalR для получения 
от сервера сообщений 
 Шаблонизатор Razor 
 Кэширование всех 
шаблонов в памяти 
ASP.NET процесса
Организация очереди 
 Любые операции 
выполняющиеся > 0.5 сек 
 С внешним миром общается 
только WorkHorse 
 Обратная связь организуется 
на базе SignalR (временное 
открытие) 
 WorkHorse масштабирование: 
 На уровне потоков 
 Новые инстансы на новых 
машинах 
 От 20 до 40 одновременных 
обработчиков на каждую 
очередь
Откуда требование в 0.5 секунды
WorkHorse 
 ASP.NET MVC, IIS 
 Конфиги одинаковые 
 Master 
 Выполнение 
запланированных задач 
 Периодические платежи 
 Генерация SiteMaps
Поиск. ElasticSearch 
 Lucene.NET -> Solr -> ElasticSearch 
 2 млн документов (профили 
пользователей, мемориалы, форум) 
 AutoComplete 
 Отдельная бизнес-модель для поиска 
(только необходимые поля с 
метаинформацией) 
 Boosting полей 
 Фильтрация, сортировка
Хранилище. Couchbase 
 Couchbase 2.0: Membase (memcached + file sync) + 
CouchDB 
 Использование как key-value хранилища и как 
документ-ориентированного хранилища 
 > 50 млн документов 
 Кластер 60 Gb из 2 машин (ограничение – 
Сouchbase версии Enterpise на 2 прод. машины) 
 Средняя нагрузка – 500 запросов/сек 
 Максимальные пики –5-7K запросов/секунду 
 Дата миграция – 70К запросов/секунду 
 Пик – 250К запросов/секунду
Couchbase. Немного статистики 
 Обычный режим 
 Дата миграция
Couchbase. Оптимизация размеров 
 [JsonProperty("ldf")] 
 [JsonIgnore]
Couchbase. Индексирование 
 50 индексов в 20 дизайн документах 
 Разработка индексов в дизайн тайме на Javascript 
 Размер индексов ~6 гигабайт
Подсистема для SEO
Переезд
Причины 
 Изначальная подписка у Амазона была на 1 год, и 
она заканчивается. Продление подписки нет. 
 Нехватка размера памяти на дата серверах 
 Оптимизация расходов
Переключение пользователей
Хостинг 
 Front-end сервера (Windows): ex40ssd, Intel Core™ 
i7-4770 (8 ядер), RAM 32 Gb, 2x240 SSD RAID 1 
 Cервер баз данных (Linux): px90ssd, Intel Xeon E5- 
1650 v2 (12 ядер), RAM 64 Gb, 2x240 SSD RAID 1 
 Стоимость: 
 700-800$ в месяц 
 Достижение: уменьшили стоимость на 40-50% с 
увеличением мощности системы
Выученные уроки 
 Amazon балансировщик не поддерживает прямых TCP 
соединений => проблема с websocket-ами 
 Couchbase требует как минимум 2 сервера – любой 
потерянный пакет в сети => сервер помечается как dead 
на 10 секунд 
 Couchbase обновляет индексы не сразу (в течение 5 
секунд или 5000 обновлённых документов) 
 Окончание подписки на Amazon увеличивает цену на 
EC2 в 3-4 раза 
 Необходимо разделение документов по бакетам в 
Couchbase, индексирование новой вьюхи – около 1 часа 
нестабильной работы всей системы
? 
denis@koloshko.com

Más contenido relacionado

La actualidad más candente

MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
fudz1k
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..
webhostingguy
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Mikhail Tabunov
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 

La actualidad más candente (17)

Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..Lobanov_Cloud-Comput..
Lobanov_Cloud-Comput..
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
 
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей ФроловКРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяцКак мы строили аналитическую платформу на несколько миллиардов событии в месяц
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанку
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 

Destacado

Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Ontico
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
Vsevolod Polyakov
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Tanya Denisyuk
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
Омские ИТ-субботники
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Ontico
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ontico
 

Destacado (20)

ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup MinskElacticSearch в связке с MODX Revo - MODX Meetup Minsk
ElacticSearch в связке с MODX Revo - MODX Meetup Minsk
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в GrammarlyПуть мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
 
Использование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайтуИспользование Elasticsearch для организации поиска по сайту
Использование Elasticsearch для организации поиска по сайту
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
 
ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010ElasticSearch at berlinbuzzwords 2010
ElasticSearch at berlinbuzzwords 2010
 
Автоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе ElasticsearchАвтоматизация анализа логов на базе Elasticsearch
Автоматизация анализа логов на базе Elasticsearch
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
 
Elasticsearch in 15 minutes
Elasticsearch in 15 minutesElasticsearch in 15 minutes
Elasticsearch in 15 minutes
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
Scaling an ELK stack at bol.com
Scaling an ELK stack at bol.comScaling an ELK stack at bol.com
Scaling an ELK stack at bol.com
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
Curso completo de Elasticsearch
Curso completo de ElasticsearchCurso completo de Elasticsearch
Curso completo de Elasticsearch
 

Similar a Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon, Open-Source

Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
Media Gorod
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
HappyDev
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
Anton Volkov
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Ontico
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
IBS
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Ontico
 
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
JSFestUA
 
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектамIForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
SECL
 

Similar a Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon, Open-Source (20)

Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
Технологии больших веб проектов завтра и послезавтра
Технологии больших веб проектов завтра и послезавтраТехнологии больших веб проектов завтра и послезавтра
Технологии больших веб проектов завтра и послезавтра
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 
2056
20562056
2056
 
Hl Nekoval
Hl NekovalHl Nekoval
Hl Nekoval
 
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
Тестирование и оптимизация 1С-Битрикс (Александр Демидов, Олег Бунин)
 
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими рукамиАндрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
JS Fest 2019. Игорь Березин и Николай Крещенко. Эволюция архитектуры многогра...
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
разработка Metro style приложений
разработка Metro style приложенийразработка Metro style приложений
разработка Metro style приложений
 
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектамIForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
IForum 2016: Никита Семенов. Серьезный подход к серьезным проектам
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 

Más de Tanya Denisyuk

Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Tanya Denisyuk
 
Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "
Tanya Denisyuk
 
Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»
Tanya Denisyuk
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Tanya Denisyuk
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Tanya Denisyuk
 

Más de Tanya Denisyuk (20)

Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
 
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
 
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
 
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
 
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
 
Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "
 
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
 
Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»
 
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
 
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
 
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
 
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 

Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon, Open-Source

  • 2. Докладчик Денис Колошко Технический директор компании Айти Бэнд (ITBand.by)  12+ лет работы в промышленной разработке ПО  Системный архитектор  Технический консультант  Активный разработчик  Тренер mobile: +375 29 774 89 05 E-mail: denis@koloshko.com Skype: d.koloshko Blog: http://it-consulting.koloshko.com LinkedIn: http://www.linkedin.com/pub/denis-koloshko/14/89a/862
  • 3. Айти Бэнд (IT-Band.by)  Сервис по разработке  .NET, Node.js  От защищённых бизнес систем до производительных интернет систем  Консалтинг  Анализ безопасности веб-систем  Оптимизация производительности  Анализ архитектур
  • 5.
  • 6. Статистика  50 млн документов в No-Sql  14 млн фотографий и аудио файлов  800 000 пользователей  200 000 мемориалов  Couchbase – до 5-7k операций в секунду  Пик – 2 млн пользователя в месяц  До 50 тыс. фотографий у некоторых пользователей
  • 7. Развитие архитектуры Первая архитектура 2007 Новый стек (Amazon) 2013 Смена провайдера (Amazon+Hetzner) 2014
  • 8. Первоначальный стек PHP PostgreSQL NFS, GlusterFS Apache Nginx
  • 9. Старый стек. Проблемы Производительность Сложность масштабирования
  • 10. Август 2013. Атрибуты качества новой архитектуры  Высокая производительность  Высокая масштабируемость  Высокая доступность
  • 11. Вызов  2.5 месяца на первый релиз  Высокая производительность  Горизонтальное масштабирование  Бесшовная миграция и переключение пользователей   Живая среда  Трансформация реляционной модели в документо-ориентированную модель
  • 12. Новый стек  Couchbase 2.2.0  RabbitMQ 3.1.5  ElasticSearch 0.90.5  ASP.NET WebAPI, ASP.NET MVC5, .NET 4.5  Amazon EC2 (виртуальные сервера)  Amazon CloudFront (CDN)  Amazon S3 (файловое хранилище)  Amazon Route 53 (DNS)  Amazon Load Balancer (балансировщик)  Amazon CloudWatch (Мониторинг)  Windows Server 2012 Standard Edition  Ubuntu Server 14
  • 13.
  • 14.
  • 15. Хостинг  Front-end Windows сервер: c1.medium, 2 cores, RAM 1.7 Gb  Сервер данных: m2.2xlarge, 4 cores, RAM 34.2GB, EBS 100Gb  Стоимость:  Всего: 1200 – 1400 USD  80% всей стоимости 5 виртуальных серверов  Подписка на зарезервированные инстансы серверов
  • 16. Немного о дата миграции
  • 17. SPA дизайн  KnockoutJs  Лучшим решением был бы AngularJS  Routing на клиентской стороне  SignalR для получения от сервера сообщений  Шаблонизатор Razor  Кэширование всех шаблонов в памяти ASP.NET процесса
  • 18. Организация очереди  Любые операции выполняющиеся > 0.5 сек  С внешним миром общается только WorkHorse  Обратная связь организуется на базе SignalR (временное открытие)  WorkHorse масштабирование:  На уровне потоков  Новые инстансы на новых машинах  От 20 до 40 одновременных обработчиков на каждую очередь
  • 20. WorkHorse  ASP.NET MVC, IIS  Конфиги одинаковые  Master  Выполнение запланированных задач  Периодические платежи  Генерация SiteMaps
  • 21. Поиск. ElasticSearch  Lucene.NET -> Solr -> ElasticSearch  2 млн документов (профили пользователей, мемориалы, форум)  AutoComplete  Отдельная бизнес-модель для поиска (только необходимые поля с метаинформацией)  Boosting полей  Фильтрация, сортировка
  • 22. Хранилище. Couchbase  Couchbase 2.0: Membase (memcached + file sync) + CouchDB  Использование как key-value хранилища и как документ-ориентированного хранилища  > 50 млн документов  Кластер 60 Gb из 2 машин (ограничение – Сouchbase версии Enterpise на 2 прод. машины)  Средняя нагрузка – 500 запросов/сек  Максимальные пики –5-7K запросов/секунду  Дата миграция – 70К запросов/секунду  Пик – 250К запросов/секунду
  • 23. Couchbase. Немного статистики  Обычный режим  Дата миграция
  • 24. Couchbase. Оптимизация размеров  [JsonProperty("ldf")]  [JsonIgnore]
  • 25. Couchbase. Индексирование  50 индексов в 20 дизайн документах  Разработка индексов в дизайн тайме на Javascript  Размер индексов ~6 гигабайт
  • 26.
  • 29. Причины  Изначальная подписка у Амазона была на 1 год, и она заканчивается. Продление подписки нет.  Нехватка размера памяти на дата серверах  Оптимизация расходов
  • 30.
  • 32. Хостинг  Front-end сервера (Windows): ex40ssd, Intel Core™ i7-4770 (8 ядер), RAM 32 Gb, 2x240 SSD RAID 1  Cервер баз данных (Linux): px90ssd, Intel Xeon E5- 1650 v2 (12 ядер), RAM 64 Gb, 2x240 SSD RAID 1  Стоимость:  700-800$ в месяц  Достижение: уменьшили стоимость на 40-50% с увеличением мощности системы
  • 33. Выученные уроки  Amazon балансировщик не поддерживает прямых TCP соединений => проблема с websocket-ами  Couchbase требует как минимум 2 сервера – любой потерянный пакет в сети => сервер помечается как dead на 10 секунд  Couchbase обновляет индексы не сразу (в течение 5 секунд или 5000 обновлённых документов)  Окончание подписки на Amazon увеличивает цену на EC2 в 3-4 раза  Необходимо разделение документов по бакетам в Couchbase, индексирование новой вьюхи – около 1 часа нестабильной работы всей системы