Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Переход от монолитной архитектуры к распределенной

Переход от монолитной архитектуры к распределенной

More Decks by Александр Бындю

Other Decks in Technology

Transcript

  1. 2 Обо мне 1. Владелец компании ByndyuSoft http://byndyusoft.com 2. Консультант

    по вопросам разработки приложений и организации работы IT компаний, Certified CIAgile Professional 3. Внештатный сотрудник Академии АйТи 4. Технический блог http://blog.byndyu.ru 5. Преподаю в ЮУрГУ и ЧелГУ 6. Тренер на AgileCamp 7. Организую конференции .NET-разработчиков http://dotnetconf.ru 8. Веду группу по проблемам разработки приложений https://groups.google.com/forum/?hl=ru&fromgroups#!forum/dotnetconf
  2. 3 Требования рынка 1. Много данных 2. Много пользователей 3.

    Быстрое масштабирование 4. Быстрое внесение изменений
  3. 6 Какие реализации? Consistency + Availability (MSSQL на сервере) Consistency

    + Partition tolerance (MSSQL на кластере с транзакцией) Availability + Partition tolerance (NoSQL решения)
  4. 8 1. Создаем UI 2. Сборку BL 3. Сборку DAL

    4. Создаем DB 5. … 6. Profit! UI Services BL DAL DB
  5. 11

  6. 13 Что делать? 1. Оптимизировать скрипты выборки 2. Убираем ORM

    для лучшей оптимизации 3. Убираем весь код выборки в хранимки 4. Оптимизируем индексы 5. Денормализуем данные
  7. 14 Денормализация v1.0 Создать дополнительные колонки в текущих таблицах SELECT

    pt.Code FROM Products p INNER JOIN ProductType pt ON p.ProductTypeID = pt.ProductTypeID WHERE p.ProductID = 20
  8. 16 Денормализация v3.0 Создать еще одну БД (хранилище) c «плоскими»

    данными для чтения 1. Отдельная реляционная БД с «плоскими» данными без связей 2. Различные NoSQL 3. Поисковые системы
  9. 17 cRud 1. «Плоский» SQL 2. NoSQL 3. Поисковые системы

    4. Кэши 5. … «Плоские» данные UI Только выборка
  10. 18 CrUD 1. Domain-driven design (DDD) 2. N- tier, onion,…

    architecture 3. ORM (NHibernate, Entity Framework,…) Приложение База данных Presenter UI Domain Model Validation ...
  11. 19 Отделяем чтение от записи Приложение MongoDB Command UI Domain

    Model Validation ... Query Query Model База данных Redis Sphinx ...
  12. 22 ложение MongoDB Domain Model Validation ... Query Model База

    данных ? Redis Sphinx ... Как синхронизировать хранилища?
  13. 24 Приложение MongoDB mmand Domain Model Validation ... uery Query

    Model База данных Redis Sphinx ... С о б ы т и е С о б ы т и е Ш и н а д а н н ы х Обновляем асинхронно
  14. 25 BASE-архитектура Availability + Partition tolerance 1. Basically Available (сбой

    в некоторых узлах не приводит к отказу в обслуживании) 2. Soft-state (не согласованное состояние) 3. Eventually consistent (в конце концов информация будет консистентна)
  15. 31 DB 1. Сервисы сбора данных 1. Сервисы сбора данных

    Сервис1 1. Сервисы сбора данных 1. Сервисы сбора данных Сервис2 1. Сервисы сбора данных 1. Сервисы сбора данных Сервис3 1. Сервисы сбора данных 1. Сервисы сбора данных ... Шина сообщений Событие Событие Событие Событие
  16. 32 Инструменты для очереди Утилиты: 1. RabbitMQ 2. NServiceBus 3.

    ActiveMQ Облачные инструменты: 1. IronMQ, SQS 2. Windows Azure Queues
  17. 34

  18. 35

  19. 36 1. Сервисы сбора данных 2. Скачивание HTML 3. Создание

    сущностей 4. Анализ данных DB + Fulltext Search Sphinx Веб-приложение
  20. 37 1. Сервисы сбора данных 1. Сервисы сбора данных 1.

    Сервисы сбора данных 1. Сервисы сбора данных 1. Сервисы сбора данных 2. Скачивание HTML 3. Создание сущностей 4. Анализ данных DB Fulltext Search Sphinx Веб-приложение Шина сообщений (IronMQ) AWS S3
  21. 38 1. Сервисы сбора данных 1. Сервисы сбора данных 1.

    Сервисы сбора данных 1. Сервисы сбора данных 1. Сервисы сбора данных 2. Скачивание HTML 3. Создание сущностей 4. Анализ данных DB Веб-приложение Шина сообщений (IronMQ) AWS S3 Sphinx Sphinx Sphinx Sphinx Redis Redis Redis
  22. 39 Полезные ссылки 1. Eventually Consistent – Revisited, Werner Vogels

    2. If You Have Too Much Data, then 'Good Enough' Is Good Enough, Pat Helland 3. Ошибки в системах баз данных, согласованность "в конечном счете" и теорема CAP , Майкл Стоунбрейкер 4. CAP theorem, Wikipedia 5. Reporting Database, Martin Fowler 6. BASE: An Acid Alternative, Dan Pritchett