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

Для тех кто хочет погрузиться в проектирование .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-microserviceCreating 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-microservicehttps://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-kubernetesMonitoring 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

© Habrahabr.ru