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

Сергей Огородников "Практика построения сервисов на основе ViennaNET"

Сергей Огородников "Практика построения сервисов на основе ViennaNET"

При разработке микросервисов одним из челленджей является создание универсальной базы (платформы) для быстрой и эффективно разработки сервисов. Сообщество .NET разработчиков Райффайзенбанка разработало и внедрило в компании такую платформу. В этом году мы сделали следующий шаг – дали нашей платформе название ViennaNET вывели её в open source. В данном докладе представлен обзор библиотек, входящих в нашу платформу, а также в режиме live coding продемонстрировано её использование.

Ceecdee9ee77b63d81100be62b7e1090?s=128

DotNetRu

June 11, 2020
Tweet

Transcript

  1. Практика построения сервисов на основе ViennaNET Сергей Огородников, старший разработчик

  2. О докладчике 2 Сергей Огородников Профессионально разрабатывает на C# с

    2005 года, пришёл в .NET за пару месяцев до того, как подвезли generics. Сейчас работает старшим разработчиком в Райффайзенбанке в команде, занимающейся разработкой продуктов для HR. Интересуется DDD, software architecture, разработкой анализаторов кода, немного ФП.
  3. Содержание 3 1. Сложности разработки микросервисов 2. Цели создания фреймворка

    ViennaNET 3. Обзор возможностей ViennaNET 4. Пример WebAPI сервиса 5. Добавим CRQS, Domain 6. Кратко о других возможностях – очереди, HttpClient, саги, валидация…
  4. Сложности разработки микросервисов 4 • Один сервис – один репозиторий

    • Реализация стандартов • Enterprise – интеграции, специфическое ПО • Повторение кода • Экспертиза концентрируется по командам
  5. История ViennaNET 5 • Разные проекты в разных репозиториях •

    Выделение общего инфраструктурного кода в отдельный репо • Доработка InnerSource, использование сообществом Константин Густов «Как вырастить open source в банке» https://www.youtube.com/watch?v=_mKyZDS9v4k
  6. Основные цели ViennaNET 6 • Разработчик пишет бизнес, а не

    инфру • Инфра должна соответствовать внутренним стандартам • Инфра должна быть гибкой и развиваемой • Аккумуляция экспертизы сообщества
  7. Основные возможности ViennaNET 7 Модульность Архитектура и тактические паттерны DDD

    Конфигурируемость Логирование и аудит Наблюдаемость и метрики Авторизация Транзакционность Адаптеры к внешним источникам CQRS & event sourcing
  8. OpenSource 8 https://github.com/Raiffeisen-DGTL/ViennaNET

  9. OpenSource 9 https://www.nuget.org/packages?q=ViennaNET

  10. ViennaNET.WebApi 10 Слои: 1. Базовые библиотеки (ViennaNET.WebApi, ViennaNET.Logging, ViennaNET.CallContext, ViennaNET.Security.Jwt,

    …) 2. Конфигураторы (ViennaNET.WebApi.Configurators.Diagnostic, ViennaNET.WebApi.Configurators.HttpClients.Jwt) 3. Runners (ViennaNET.WebApi.Runners.BaseKestrel, ViennaNET.WebApi.Runners.BaseHttpSys)
  11. ViennaNET.WebApi 11

  12. ViennaNET.WebApi.Configurators.* 12

  13. ViennaNET.WebApi.Runners.* 13

  14. We need new microservice! 14

  15. Live: BaseKestrelRunner 15

  16. Onion architecture 16

  17. ViennaNET.Mediator 17

  18. ViennaNET.Orm 18 1. Поддержка DDD 2. Паттерн Repository 3. Паттерн

    UnitOfWork 4. Под капотом – NHibernate, есть возможность добавить реализацию на EF Core 5. Наличие 5 драйверов разных БД 6. Тестируемость
  19. ViennaNET.Orm 19

  20. Live: IEntityRepository 20

  21. ViennaNET.Messaging 21

  22. ViennaNET.Messaging 22

  23. Другие возможности ViennaNET 23 • Валидация • EventSourcing, Саги •

    Enterprise фичи • Кэш (Redis) • Утилиты
  24. ViennaNET ждёт вашего фидбэка 24 • https://github.com/sergeyo/ViennaNET.Example • https://habr.com/ru/company/raiffeisenbank/blog/494830/ •

    Проект с историей, в проде в нескольких проектах • Используется около 60% .NET команд Райффайзенбанка • Готов к фидбэку сообщества, ждём pull request
  25. Спасибо за внимание! Sergey.Ogorodnikov@raiffeisen.ru raiffeisen.ru Буду рад ответить на Ваши

    вопросы!