ݺߣ

ݺߣShare a Scribd company logo
Ринат Абдуллин
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 компании
Архитектура в .NET
N-Layered Architecture
Micro-services, Упрощаем монолитные приложения
А в другой галактике
Micro-services holy wars raged
Micro-services, Упрощаем монолитные приложения
Fred George
https://twitter.com/fgeorge52
Computer Anarchist
James Lewis
https://twitter.com/boicy
Consultant at ThoughtWorks
Stefan Tilkov
https://twitter.com/stilkov
CEO at InnoQ
Martin Fowler
https://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 - это лишь результат
Micro-services, Упрощаем монолитные приложения
Как разбить монолит?
“Protective ܲ”
Разбить
непросто
Методики
• 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 2008
ASP.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 2011
Lokad.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

More Related Content

Micro-services, Упрощаем монолитные приложения