- PVSM.RU - https://www.pvsm.ru -

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

Для тех кто хочет погрузиться в проектирование .Net микросервисов, Kubernetes, Azure или CI/CD. Команда разработки Microsoft, выпустила несколько электронных книг [1] и материал получился необычный, особенность этих изданий в том, что с разных сторон рассматривается один микросервисный проект PROD grade уровня, спроектированный топовыми инженерами отрасли: https://github.com/dotnet-architecture/eShopOnContainers [2] . Вы можете познакомиться с проектом как 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 overviewhttps://github.com/dotnet-architecture/eShopOnContainers
eShopOnContainers - Architecture overview
https://github.com/dotnet-architecture/eShopOnContainers

Книги поэтапно рассматривают микросервисную архитектуру, подходы проектирования, фреймворки и имеют отсылки к коду проекта. Каждый раздел заканчивается ссылками на дополнительные материалы. Вы можете открывать любую интересующую вас главу и погружаться в вопросы проектирования, API [3], DDD и CQRS [4], SQL и NoSQL [5], Service Discovery, RabbitMQ [6], HealthChecks [7], data-driven CRUD microservice [8] и т.д. А поскольку сам проект деплоится в Azure Kubernetes Service (AKS) [9] или Local Kubernetes [10], то очень интересно работать, когда у вас открыт IDE с кодом проекта, сервисы развернуты в облаке, открыт Lens (The Kubernetes IDE [11]) который отражает статус контейнеров в 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/ [12] или подготовить локальный энвайрмент: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Local-Kubernetes [10]

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

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

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

Например, если приложение развернуто в 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 [14] или архитектуру [15] и взаимодействие микросеврвисов. Если вы системный администратор и код вам не интересен, у вас в руках целый PROD, приближенный к реальному и с упрощенной бизнес-логикой! Двигаясь по разделам книг вы можете ставить перед собой типовые проектные вопросы: CI/CD (Build Code with GitHub Actions [16], Deploy Code with GitHub Actions [17], Azure DevOps Pipelines [18]) познакомиться с Service Mesh [19], развернуть Elastic Stack [20] или например включить TLS [21].

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 [22]") и там доступен русский язык. К сожалению перевод или машинный или не проходил редактуру, его можно использовать для знакомства в общих чертах.

Когда облачный хайп зашкаливал, выяснилось, что вторым и уверенным номером в облачных сервисах двигается 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 [22]

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

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

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

Автор: Alex Fedorov

Источник [26]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/377704

Ссылки в тексте:

[1] электронных книг: https://github.com/dotnet-architecture/eShopOnContainers/wiki/eBooks

[2] https://github.com/dotnet-architecture/eShopOnContainers: https://github.com/dotnet-architecture/eShopOnContainers

[3] API: https://github.com/dotnet-architecture/eShopOnContainers/wiki/API-gateways

[4] DDD и CQRS: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Simplified-CQRS-and-DDD

[5] SQL и NoSQL: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure

[6] RabbitMQ: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/rabbitmq-event-bus-development-test-environment

[7] HealthChecks: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Using-HealthChecks

[8] data-driven CRUD microservice: https://docs.microsoft.com/en-ca/dotnet/architecture/microservices/multi-container-microservice-net-applications/data-driven-crud-microservice

[9] Azure Kubernetes Service (AKS): https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)

[10] Local Kubernetes: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Local-Kubernetes

[11] The Kubernetes IDE: https://k8slens.dev/

[12] https://azure.microsoft.com/en-us/free/: https://azure.microsoft.com/en-us/free/

[13] https://docs.k8slens.dev/main/catalog/add-cluster/: https://docs.k8slens.dev/main/catalog/add-cluster/

[14] cloud-native development: https://docs.microsoft.com/en-us/learn/modules/microservices-aspnet-core

[15] архитектуру: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Explore-the-code

[16] Build Code with GitHub Actions: https://github.com/dotnet-architecture/eShopOnContainers/wiki/GitHub-Actions

[17] Deploy Code with GitHub Actions: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deployment-With-GitHub-Actions

[18] Azure DevOps Pipelines: https://github.com/dotnet-architecture/eShopOnContainers/wiki/Azure-DevOps-pipelines

[19] Service Mesh: https://docs.microsoft.com/ru-ru/dotnet/architecture/cloud-native/resilient-communications

[20] Elastic Stack: https://github.com/dotnet-architecture/eShopOnContainers/wiki/ELK-Stack

[21] включить TLS: https://github.com/dotnet-architecture/eShopOnContainers/wiki/AKS-TLS

[22] View on the web: https://dotnet.microsoft.com/en-us/learn/aspnet/microservices-architecture

[23] https://www.youtube.com/watch?v=eeDwdVXattc: https://www.youtube.com/watch?v=eeDwdVXattc

[24] https://www.youtube.com/watch?v=VOruC2tQbmw: https://www.youtube.com/watch?v=VOruC2tQbmw

[25] https://www.elastic.co/cloud/elasticsearch-service/signup: https://www.elastic.co/cloud/elasticsearch-service/signup

[26] Источник: https://habr.com/ru/post/681172/?utm_source=habrahabr&utm_medium=rss&utm_campaign=681172