.Net Microservices The Hardcore Way: туториал от инженеров Microsoft, получаем PROD опыт +14


Для тех кто хочет погрузиться в проектирование .Net микросервисов, Kubernetes, Azure или CI/CD. Команда разработки Microsoft, выпустила несколько электронных книг и материал получился необычный, особенность этих изданий в том, что с разных сторон рассматривается один микросервисный проект PROD grade уровня, спроектированный топовыми инженерами отрасли: https://github.com/dotnet-architecture/eShopOnContainers . Вы можете познакомиться с проектом как DevOps инженер, поучаствовать в роли разработчика или рассмотреть решение как архитектор. В книгах отражаются так же проблемы подобных микросервисных проектов: отказоустойчивость, масштабирование, кэширование, работа с данными etc. Материалам уже несколько лет, они обновляются, выпускаются новые разделы и книги.


eShopOnContainers: https://github.com/dotnet-architecture/eShopOnContainers/wiki/eBooks
eShopOnContainers: https://github.com/dotnet-architecture/eShopOnContainers/wiki/eBooks

Изучая технологию по книгам или документации приходится двигаться постепенно: запускать один микросервис или маленькие приложения, настраивать "простой" CI/CD. Иногда очень полезно увидеть всю картину "реализованного" проекта, и начать знакомство в роли архитектора. Ценность этих "книг" в том что у вас в руках готовая система от опытных инженеров. Проект достаточно приближен к PROD grade уровню, наиболее упрощены UI и бизнес-логика, хотя общий каркас актуален.


eShopOnContainers - Architecture overview
https://github.com/dotnet-architecture/eShopOnContainers
eShopOnContainers - Architecture overview https://github.com/dotnet-architecture/eShopOnContainers

Книги поэтапно рассматривают микросервисную архитектуру, подходы проектирования, фреймворки и имеют отсылки к коду проекта. Каждый раздел заканчивается ссылками на дополнительные материалы. Вы можете открывать любую интересующую вас главу и погружаться в вопросы проектирования, API, DDD и CQRS, SQL и NoSQL, Service Discovery, RabbitMQ, HealthChecks, data-driven CRUD microservice и т.д. А поскольку сам проект деплоится в Azure Kubernetes Service (AKS) или Local Kubernetes, то очень интересно работать, когда у вас открыт IDE с кодом проекта, сервисы развернуты в облаке, открыт Lens (The Kubernetes IDE) который отражает статус контейнеров в Kubernetes а само приложение доступно для всей сети Интернет.

Creating a simple data-driven CRUD microservice:
https://docs.microsoft.com/en-ca/dotnet/architecture/microservices/multi-container-microservice-net-applications/data-driven-crud-microservice
Creating a simple data-driven CRUD microservice: https://docs.microsoft.com/en-ca/dotnet/architecture/microservices/multi-container-microservice-net-applications/data-driven-crud-microservice

Некоторые фрагменты кода, подходы, устарели или звучат наивно. Чего стоит заявление, в одной из книг, "Docker становится стандартом отрасли". Не нужно огорчаться или боятся встретив такие фрагменты, в реальной проектной жизни вы увидите решения или код еще старее. В отрасли, принято критиковать "несовершенные" или устаревшие решения, тем не менее, в развитых или сложных проектах они всегда будут.

Можно не пытаться осмыслить все содержимое, вот шаги которые рекомендую выполнить:

  1. Зарегистрировать Azure Free Tier: https://azure.microsoft.com/en-us/free/ или подготовить локальный энвайрмент: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Local-Kubernetes

  2. Задеплоить приложение в Azure Kubernetes Service (AKS): https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS) или локально.

  3. Подключиться к сервисам Kubernetes используя Lens: https://docs.k8slens.dev/main/catalog/add-cluster/

  4. Налить кофе, открыть электронные книги и погрузиться в код, архитектуру приложения или проектную проблематику исходя из ваших интересов.

Например, если приложение развернуто в Azure, настроен Elastic, включено обнаружение вторжений, и Machine Learning Anomaly Detection, то получаются интересные отчеты Kibana. В сети много шума и ваш выставленный IP могут начать сканировать и пробовать применять известные атаки. Если вам "повезет", атаки могут доходить до уровня данных.

https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/data-sovereignty-per-microservice
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/data-sovereignty-per-microservice

Разработчик может углубляться в cloud-native development или архитектуру и взаимодействие микросеврвисов. Если вы системный администратор и код вам не интересен, у вас в руках целый PROD, приближенный к реальному и с упрощенной бизнес-логикой! Двигаясь по разделам книг вы можете ставить перед собой типовые проектные вопросы: CI/CD (Build Code with GitHub Actions, Deploy Code with GitHub Actions, Azure DevOps Pipelines) познакомиться с Service Mesh, развернуть Elastic Stack или например включить TLS.

Monitoring in Azure Kubernetes Services:
https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/monitoring-azure-kubernetes
Monitoring in Azure Kubernetes Services: https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/monitoring-azure-kubernetes

Некоторые версии PDF странно отформатированы, можно читать книги в онлайн (смотри "View on the web") и там доступен русский язык. К сожалению перевод или машинный или не проходил редактуру, его можно использовать для знакомства в общих чертах.

Когда облачный хайп зашкаливал, выяснилось, что вторым и уверенным номером в облачных сервисах двигается Microsoft с платформой Azure, сейчас спрос на платформу огромен. Работая в роли DevOps мне очень хотелось погрузиться в процесс микросервисной разработки .Net с архитектурной точки зрения. Вся литература начиналась с "объявляем переменную" или "давайте задеплоим сервис Azure". Очень хотелось изучить PROD grade проект который состоит из набора микросервисов, включающий популярные фреймворки и подходы. Таких книг или курсов практически не было (делитесь если вы встречали подобное). Получался разрыв от очень простой литературы до очень сложной.

Даже если у вас совсем мало опыта, пройдите 4 шага выше, подключитесь к сервисам Kubernetes через Lens и наслаждайтесь PROD grade энвайрментом!

https://k8slens.dev/
https://k8slens.dev/

Дополнительные ссылки:

.NET Microservices Architecture Guidance: https://dotnet.microsoft.com/en-us/learn/aspnet/microservices-architecture

Introduction to Lens - The Kubernetes IDE: https://www.youtube.com/watch?v=eeDwdVXattc

Complete Lens Course | The Best Kubernetes IDE for DevOps: https://www.youtube.com/watch?v=VOruC2tQbmw

Deploy Elasticsearch in 3 minutes or less: https://www.elastic.co/cloud/elasticsearch-service/signup




Комментарии (4):

  1. Caraul
    /#24604730

    Все это хорошо, но в России сейчас не очень актуально.

    • telesis
      /#24604774 / +4

      Можно развернуть проект локально без Azure, .Net и микросервисы никуда не денутся!

      • Caraul
        /#24608724 / -2

        Само собой, и k8s есть без Ажуры, а вместо Service Bus и EventHub взять RMQ и Kafka, Azure SQL и CosmosDB заменить на PostgreSQL и что-нибудь из NoSQL и т.д. - но это будет уже совсем другая статья.

        • s207883
          /#24609846

          И что конкретно изменится в ней, кроме названий?
          Статья про архитектуру и взаимодействие компонентов в целом, а не про конкретную реализацию и каждый компонент в отдельности.