*Текстът е предоставен от VSG Bulgaria
Здравейте и добре дошли в част 3 от оптимизацията ни.
Какво изградихме до сега:
В част 1 https://stage2.dev.bg/digest/vsg-bulgaria-devops-automation-dc03/ :
a. Създадохме frontend и backend проект
b. Автоматизирахме билд процесите и създадохме артифакти за разпространение
c. Създадохме тест проект и автоматизирахме тестването на всяка промяна на кода
d. Автоматизирахме публикуването към сървъри на проектите при релийз
e. Автоматизирахме сканирането за уязвимости в проектите
В част 2 https://stage2.dev.bg/digest/vsg-bulgaria-devops-automation-part-2-dc03/
a. Добавихме версия на проектите ни в билд процесите
b. Създадохме докер имиджи на проектите ни и ги публикувахме в докер регистри
c. Автоматизирахме релийз процесите и генерираме файл с всички промени от версия до версия
В част 3
a. Ще създадем статус проект, който следи всяка секунда, дали приложенията ни работят като добавим HealthChecks
b. Ще създадем docker-compose за разпространение на цялата ни инфраструктура
c. Ще добавим Application Insights в Azure за пълно следене на приложенията ни
В тази статия ще разгледаме как да реализираме пълна DevOps автоматизация за .NET приложения, разположени в Azure. Ще се съсредоточим върху четири ключови стъпки, които ще повишат устойчивостта, мониторинга и ефективността на нашите приложения.
Стъпка 1 – Създаване на Статус Проект с HealthChecks
В тази стъпка от нашия път към безплатна DevOps автоматизация, ще се фокусираме върху създаването на статус проект, който ще ни позволи да следим в реално време работата на нашите приложения. Използвайки .NET за програмиране, ще интегрираме HealthChecks, които ще ни предоставят ценна информация за здравето на нашите системи.
Целта на този статус проект е да осигури непрекъсната обратна връзка за състоянието на всички компоненти на приложенията, като по този начин гарантира високо ниво на надеждност и достъпност.
Интегриране на HealthChecks:
Добавяне на HealthChecks във всеки проект:
• Използваме пакета AspNetCore.HealthChecks.UI.Client за всеки отделен проект в нашата инфраструктура.
• Това ще ни позволи да следим основните параметри на всяко приложение като време за отговор, състояние на ресурсите и други важни метрики.
За да интегрираме Health Checks, трябва да модифицираме Startup.cs файла в нашия .NET проект.
С това ако отворим нашия АПИ проект ще видим:
Създаване на главния ‘Статус Проект’:
• За главния статус проект интегрираме пакета AspNetCore.HealthChecks.UI.
• Този проект ще агрегира и визуализира данните от всички HealthChecks, извършвани в различните приложения.
• Той ще предостави централизиран интерфейс, където можем да видим обобщена информация за състоянието на цялата ни инфраструктура.
За „Статус проекта“ отваряме Visual Studio и създаваме нов „ASP.NET Core Web App (Razor Pages) “, след което в Startup.cs файла добавяме:
И след това използваме с:
Този код ще създаде endpoint /health, който връща статуса на здравето на приложението, и UI на адрес /hc-ui, където може да се види подробна информация.
Конфигурация и настройка:
• Конфигурираме HealthChecks да изпращат данни на статус проекта.
• Настройваме периодичността на проверките, така че да получаваме информация в реално време.
Тестване и валидация:
• След приключване на настройките, провеждаме тестове, за да се уверим, че статус проектът коректно отразява състоянието на приложенията.
• Проверяваме дали всички компоненти на инфраструктурата са правилно интегрирани и дали данните се визуализират коректно.
Създаването на ефективен статус проект с HealthChecks е ключова стъпка в постигането на целите ни за автоматизация на DevOps процесите. Тази стъпка не само улеснява мониторинга и управлението на приложенията, но и подобрява надеждността и достъпността на нашата система.
Следващите стъпки ще продължат да разширяват нашата стратегия за автоматизация, като включват още инструменти и практики за оптимизация на DevOps процесите.
Стъпка 2: Създаване на Docker Compose за разпространение на инфраструктурата
Втората стъпка в процеса на DevOps автоматизацията включва използването на Docker Compose за разпространение на вашата инфраструктура. Docker Compose улеснява дефинирането и стартирането на многоконтейнерни Docker приложения, като ви позволява да използвате YAML файл за конфигуриране на услугите, мрежите и томовете.
Създаване на Dockerfile за всеки микросервис:
За всяко приложение във вашата инфраструктура, създайте Dockerfile, който описва как да се създаде Docker образ за съответното приложение. Това включва копиране на изходния код, инсталиране на зависимостите, и настройка на средата за изпълнение.
За целта Visual Studio има интеграция, която лесно прави всичко това за нас:
Конфигуриране на Docker Compose файл:
Създайте docker-compose.yml файл в корена на проекта. Този файл трябва да дефинира услугите (всеки микросервис или компонент), техните конфигурации, зависимости, и как те взаимодействат помежду си.
Примерна структура на docker-compose.yml:
След това натискаме десен бутон на “docker-compose” проекта, избираме “Set as startup” и стартираме цялата ни инфраструктура от приложения в докер:
Когато сте готови, можете да мигрирате и разпространите вашата инфраструктура в Azure, използвайки Azure Container Instances или Azure Kubernetes Service, за да управлявате контейнерите в облака.
Създаването на Docker Compose файл значително улеснява разпространението и мениджмънта на множество контейнери, осигурявайки гъвкавост и ефективност при разработката и разпространението на комплексни приложения. В комбинация с Azure, това предоставя мощна платформа за създаване, разпространение и управление на вашите микросервиси и приложения.
Стъпка 3: Добавяне на Application Insights в Azure за пълно следене на приложенията
Третата стъпка в нашата стратегия за DevOps автоматизация включва интегрирането на Application Insights от Azure, което предоставя мощни инструменти за мониторинг и анализ на вашите приложения. Application Insights е услуга за управление на производителността на приложенията, която ви позволява да наблюдавате на живо функционирането и използването на вашето приложение.
Създаване на ресурс на Application Insights:
На първо място, трябва да създадете ресурс на Application Insights в Azure портала. Това ще ви предостави ключ за инструментация, който ще използвате за конфигуриране на вашите приложения.
Добавяне на Application Insights към .NET проекта:
Във вашия .NET проект, добавете NuGet пакета Microsoft.ApplicationInsights.AspNetCore. След това, интегрирайте Application Insights във вашето приложение, като използвате ключа за инструментация.
Пример за добавяне в Startup.cs:
След като Application Insights е интегриран и конфигуриран, можете да използвате Azure портала за анализиране на събраните данни. Това включва преглед на производителността, откриване на проблеми, анализ на трафика и потребителското поведение.
Интеграцията на Application Insights предоставя дълбоки инсайти за вашите приложения и улеснява откриването на проблеми, оптимизирането на производителността и разбирането на потребителското поведение. Това е ключов компонент в стратегията за облак-базирана DevOps автоматизация, който осигурява важни данни за управление и подобрение на вашите приложения.
Заключение: Овладяване на DevOps автоматизацията с .NET и Azure
В тази статия, ние разгледахме ключовите стъпки за реализиране на пълна DevOps автоматизация за .NET приложения в Azure. От създаването на статус проекти с Health Checks, през изграждането на контейнеризирани инфраструктури с Docker Compose, до интеграцията на Application Insights за мониторинг и анализ. Всяка стъпка допринася за постигането на повишена устойчивост, ефективност и видимост на вашите приложения.
С фокуса върху .NET и Azure, можем да видим как технологиите на Microsoft предоставят цялостна и скалируема платформа за DevOps практики. Ползите от тази интеграция са многобройни – от лесната настройка и управление, до възможността за бързо разпространение и надежден мониторинг.
Освен техническите аспекти, успехът в DevOps културата също изисква промяна в мисленето и сътрудничеството между разработчици, оперативни екипи и бизнес стейкхолдъри. Подобен цялостен подход към автоматизацията в DevOps не само подобрява техническата ефективност, но и води до по-бърза доставка на стойност за клиентите и по-устойчив растеж на бизнеса.
Надяваме се, че тази статия ви е предоставила ценни инсайти и насоки за вашия DevOps път с .NET и Azure. В крайна сметка най-важното е да продължите да експериментирате, да се учите и да оптимизирате вашите процеси, за да отговорите на непрекъснато променящите се изисквания на съвременната софтуерна разработка!