Слайды доклада с конференции dotnetconf в апреле 2014 в Челябинске.
Серверная разработка в .NET исторически ассоциируется с Enterprise архитектурами и монолитным кодом, который сложно и дорого поддерживать. Мы поговорим о принципах построения micro-services архитектур, когда достаточно сложная система складывается из небольших приложений в 200-300 строчек кода. Этот подход достаточно часто встречается в Linux среде, но некоторые моменты довольно успешно переносятся и в сторону .NET
2. Обо мне
• До 2014 - .NET Tech Lead в lokad.com
• C 2014 - разработчик в HappyPancake
• Блог - abdullin.com / twitter.com/abdullin
• Подкасты
• BeingTheWorst.com
• DistributedPodcast.com
• Happy Friday : RD.HappyPancake.com
• Я еще только учусь
3. План
• Что такое micro-services?
• Опыт применения в .NET компании
• Опыт применения в !.NET компании
23. Где узнать больше?
• 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
25. Lokad.com
• Основана в 2008 в Париже
• BigData аналитика для
торговых сетей
• ~6 разработчиков
• ~5 продуктов
• ~15 git repositories
• .NET & Windows Azure
39. Lokad Hub 2011
• 5 bounded contexts
• Event Sourcing rules
• Команда обожает Views
• Быстрые итерации
• Работает как локально так и
в Azure
• Про проект написали в
Microsoft P&P CQRS Journey
40. Проблемы
• Все еще монолит
• Плохая производительность
• Функционал повторяется в
других системах
• Building blocks все
усложняют
• Команда ругается
41. Решение
• Разбить все на компоненты
• Пусть компоненты общаются по HTTP
• Дизайн каждого компонента - это его дело
• Компоненты должны быть простыми
49. Плюшки
• Fiddler + wrk + weighttp
• Авто-генерируемая документация
• Полная статистика
• Разработчикам очень просто начать работать
• Апгрейды без отключений
52. HappyPancake.com
• Крупнейшая сеть знакомств в
Швеции
• Каждый 10-й швед в сети
• Норвегия и Финляндия
• Бесплатная, доход за счет
рекламы
• С 2014г - 3 разработчика
54. Проблемы
• ASP.NET + SQL
• Бизнес-логика - сами знаете
где
• Плохо масштабируется
• Сложно разрабатывать
55. Требования
• Простая архитектура из небольших компонентов
• 99% запросов (без кэша) - быстрее 25ms
• при 25000 запросов в секунду
• в виртуализированной среде
• Linux
• event-sourcing (для аналитики)
59. Design
• Вся логика - в одном сервере
• Несколько экземпляров сервера за load balancer
• Сервер состоит из компонентов
• FoundationDB кластер для хранения
• Event-driven design + CQRS + Domain-driven
design