Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Micro-services, Упрощаем монолитные приложения
-
Upload
rinat-abdullin -
Category
Software
-
view
1.619 -
download
3
description
Transcript of Micro-services, Упрощаем монолитные приложения
Ринат Абдуллин HappyPancake
twitter.com/abdullin
8-я конференция .NET разработчиков 6 апреля 2014 dotnetconf.ru
Micro-servicesУпрощаем монолитные приложения
Обо мне• До 2014 - .NET Tech Lead в lokad.com
• C 2014 - разработчик в HappyPancake
• Блог - abdullin.com / twitter.com/abdullin
• Подкасты
• BeingTheWorst.com
• DistributedPodcast.com
• Happy Friday : RD.HappyPancake.com
• Я еще только учусь
План
• Что такое micro-services?
• Опыт применения в .NET компании
• Опыт применения в !.NET компании
Архитектура в .NETN-Layered Architecture
А в другой галактикеMicro-services holy wars raged
Martin Fowlerhttps://twitter.com/
martinfowler Programmer at ThoughtWorks
Micro-ServicesЧто это такое?
Монолит vs Компоненты
Весь функционал в одном процессе
Каждый элементв отдельном процессе
Монолит vs КомпонентыМасштабирование
Это уже было!• Service-Oriented Architecture
• Enterprise Integration Patterns
• SOAP, WS-*, ESB
!
• Или “micro-services с вредными привычками”
Micro-services
• Новое название для старого подхода
• Просто нормальный Service-oriented design
• Без фанатичного использования технологий
Архитектураэто “побочный эффект”
Нас интересует процесс
Micro-services - это лишь результат
Как разбить монолит?“Protective bubble”
Разбить непросто
Методики• Domain-driven analysis
• Event storming
• Transaction boundaries
• Technological requirements
• Существующие команды
• Существующие продукты
Где узнать больше?• Fred George: http://vimeo.com/79866979
• James Lewis: http://vimeo.com/74452550
• Martin Fowler: http://martinfowler.com/articles/microservices.html
• Stefan Tilkov : http://www.infoq.com/presentations/Breaking-the-Monolith
Опыт в Lokad.com
Lokad.com• Основана в 2008 в Париже
• BigData аналитика для торговых сетей
• ~6 разработчиков
• ~5 продуктов
• ~15 git repositories
• .NET & Windows Azure
История одного приложения
Lokad.HUB
Что такое Lokad HUB• Регистрация
• Управление аккаунтами
• Статистика
• Авторизация
• Биллинг
• Администрирование
• Платформа + Web UI
• Windows Azure
• API : JSON + HTTP
• ~99% SLA
• ~10 запросов в секунду
• 99% < 18ms
• 200000 events
• Простая как пень
Lokad Hub 2008ASP.NET + SQL
Проблемы 2008
• SQL + CRUD
• Угадайте, где бизнес логика
• Монолитная архитектура - сложно менять
• Не любит Windows Azure
Решение
• Domain-Driven Design
• CQRS + EventSourcing
• Event-Driven Design
• Lokad.CQRS
Процесс
• Отчаянное прототипирование
• Отчаянное разделение на Bounded Contexts
• Общаются между собой сообщениями
• Каждый BC - строится из кирпичиков
Кирпичики Lokad.CQRSЭто сработало, но было ошибкой
1. Aggregate with ESИсточник событий
2. ProjectionПроецирует события во вьюхи
3. ProcessРеализация бизнес-процессов
4. WorkflowСвязывание раздельных контекстов
–Из опыта
“Детали реализации каждого компонента - это только его собачье дело.”
Lokad Hub 2011Lokad.CQRS + Windows Azure
Lokad Hub 2011• 5 bounded contexts
• Event Sourcing rules
• Команда обожает Views
• Быстрые итерации
• Работает как локально так и в Azure
• Про проект написали в Microsoft P&P CQRS Journey
Проблемы
• Все еще монолит
• Плохая производительность
• Функционал повторяется в других системах
• Building blocks все усложняют
• Команда ругается
Решение
• Разбить все на компоненты
• Пусть компоненты общаются по HTTP
• Дизайн каждого компонента - это его дело
• Компоненты должны быть простыми
Lokad Hub 2013
Простой StackТолько самое нужное
Простой дизайн
Код == дизайн
Компоненты просты
Самый сложный компонентВсе остальные - проще
Жизнь компонентаУ каждого - свой путь
Плюшки• Fiddler + wrk + weighttp
• Авто-генерируемая документация
• Полная статистика
• Разработчикам очень просто начать работать
• Апгрейды без отключений
Узнать большеhttp://beingtheworst.com
Опыт за пределами .NET
HappyPancake
HappyPancake.com
• Крупнейшая сеть знакомств в Швеции
• Каждый 10-й швед в сети
• Норвегия и Финляндия
• Бесплатная, доход за счет рекламы
• С 2014г - 3 разработчика
HPC 2013Работает
Проблемы
• ASP.NET + SQL
• Бизнес-логика - сами знаете где
• Плохо масштабируется
• Сложно разрабатывать
Требования• Простая архитектура из небольших компонентов
• 99% запросов (без кэша) - быстрее 25ms
• при 25000 запросов в секунду
• в виртуализированной среде
• Linux
• event-sourcing (для аналитики)
HPC 2014В разработке
Stack• Ubuntu 12 LTS
• Go
• FoundationDB
• Sublime / Vim
• Docker
• Statsd + Librato Metrics
• Logsd + Logentries
Sublime IDEили vim/emacs
Design• Вся логика - в одном сервере
• Несколько экземпляров сервера за load balancer
• Сервер состоит из компонентов
• FoundationDB кластер для хранения
• Event-driven design + CQRS + Domain-driven design
Хотелки
• Подключение новых компонентов “на лету”
• Feature toggling
• Ghost mode
• Ramp up
HPC 2015В планах
Планируется
• + NanoMsg
• + ETCD
• + Drone.io
• + Quay.io
Узнать большеhttp://rd.happypancake.com
Вопросы?http://twitter.com/abdullin