Русский
Русский
English
Статистика
Реклама

Microsoft azure

Перевод Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure

08.05.2021 14:13:54 | Автор: admin
Что быстрее ASP.NET Core-приложение, развёрнутое в Docker-контейнере на Linux, или такая же программа, но запущенная на Windows-сервере, учитывая то, что всё это работает в службе приложений Azure? Какая из этих конфигураций предлагает более высокий уровень производительности, и о каком уровне производительности можно говорить?



Недавно меня заинтересовали эти вопросы, после чего я решил сам всё проверить, сделав следующее:

  • Подготовил простое ASP.NET Core-приложение, используя NET Core 2.0 и C#.
  • Развернул один экземпляр этого приложения в службе Standard S1 на Windows-хосте, расположенном в регионе Western Europe.
  • Развернул ещё один экземпляр этого приложения в службе Standard S1 с использованием Linux-хоста (регион Western Europe) и Docker-контейнера.
  • Для создания нагрузки на серверы использовал Apache Benchmark, запросы отправлялись из Варшавы (Польша) с клиентской системы, работающей под управлением Ubuntu 17.04 и подключённой к интернету по Wi-Fi.
  • Повторил испытания, воспользовавшись средством Visual Studio Web Performance Test. Запросы к исследуемым серверам выполнялись из того же города, но в данном случае роль клиента выполнял компьютер, на котором установлена Windows 10, подключённый к интернету через проводную сеть.
  • Проанализировал данные, полученные в ходе тестирования, и сравнил результаты.

В обоих случаях приложение собрано с использованием инструмента командной строки dotnet в конфигурации Release. Хостилось приложение с использованием кросс-платформенного сервера Kestrel и было размещено за прокси-сервером, используемым службами Azure. В распоряжении каждого экземпляра приложения были ресурсы, обеспечиваемые планом обслуживания Standard S1, то есть отдельная виртуальная машина. В ходе выполнения тестов я, кроме того, сравнил производительность ASP.NET Core-приложения, работающего в Docker-контейнере, с производительностью приложений, основанных на других стеках технологий, которые мне доводилось исследовать в последнее время (Go, Python 3.6.2, PyPy 3). В сервере Kestrel используется libuv поэтому мне интересно было сравнить его с uvloop, учитывая то, что последний является обёрткой для libuv и asyncio (это встроенный инструмент Python для создания конкурентного кода). Я думаю, что многие NET-разработчики гордятся скоростью Kestrel и работой, проведённой инженерами Microsoft, но при этом забывают о том, что им стоило бы испытывать чувство благодарности и к libuv С-библиотеке для организации асинхронного ввода-вывода, которая появилась до Kestrel и используется, кроме того, в Node.js и в других подобных проектах. И, кроме того, стоит помнить о том, что, когда перед ASP.NET Core-приложениями находится IIS, нужно принимать во внимание некоторые дополнительные соображения.

Подготовка веб-приложения


Приложение основано на шаблоне веб-проекта, созданного с помощью dotnet. Я специально старался как можно меньше его усложнять. В нём имеется один обработчик, возвращающий ответы двух типов:

  • При получении запроса без параметров сообщение Hello World с отметкой времени.
  • При получении запроса со строковым параметром n, представляющим собой число, находящееся в диапазоне от 1 до 100 ответ с телом размером n Кб.

app.Run(async (context) =>{var request = context.Request;var s = request.Query["s"];if (string.IsNullOrEmpty(s)) {// возврат простого Hello Worldvar now = DateTime.UtcNow;await context.Response.WriteAsync($"Hello World, from ASP.NET Core and Net Core 2.0! {now.ToString("yyyy-MM-dd HH:mm:ss.FFF")}");return;}// {...}});

Развёртывание приложения на Windows-машине


Для развёртывания проекта на Windows-машине я быстро создал проект в VSTS (Visual Studio Team Services), настроил службы с использованием шаблонов ARM, собрал и развернул приложение с применением задач VSTS.


Настройка проекта


Работа с Windows-проектом в Microsoft Azure

В этом GitHub-репозитории вы можете найти код приложения и ARM-шаблоны.

Развёртывание приложения на Linux-машине с использованием Docker-контейнеров


Образ Docker был подготовлен и опубликован с использованием того же подхода, о котором я уже писал, рассказывая о запуске образов Docker в Azure. Так как я уже об этом рассказывал, повторяться тут я не буду. Единственное, на что я хочу обратить ваше внимание это то, что в одной группе ресурсов Azure нельзя смешивать планы служб приложений, рассчитанные на Linux и Windows. Поэтому для каждого из вариантов приложения я создал собственную группу ресурсов.


Работа с Linux-проектом в Microsoft Azure

Код приложения и файлы для создания образов Docker можно найти в этом репозитории.

Тестирование приложений с использованием Apache Benchmark


Мне нравится утилита Apache Benchmark (ab). Ей удобно пользоваться и она выдаёт результаты, применимые при практической оценке производительности систем, такие, как количество запросов в секунду (Requests Per Second, RPS), время ответа на разных перцентилях (например сведения о том, что 95% запросов обрабатывается в пределах n мс, а 5% в пределах m мс, и так далее). Эта утилита идеально подходит для исследования производительности отдельных методов. Я выполнил несколько групп тестов, каждую в разное время дня. План испытаний выглядел так:
Сценарий Конфигурация
Hello World 5000 запросов, 150 одновременных пользователей
Ответ с телом в 1 Кб 5000 запросов, 150 одновременных пользователей
Ответ с телом в 10 Кб 2000 запросов, 150 одновременных пользователей
Ответ с телом в 100 Кб 2000 запросов, 150 одновременных пользователей

# пример командыab -n 5000 -c 150 -l http://linuxaspcorehelloworld-dev-westeurope-webapp.azurewebsites.net/

Выходные данные ab выглядят примерно так:

This is ApacheBench, Version 2.3 <$Revision: 1757674 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking linuxaspcorehelloworld-dev-westeurope-webapp.azurewebsites.net (be patient)Server Software:    KestrelServer Hostname:    linuxaspcorehelloworld-dev-westeurope-webapp.azurewebsites.netServer Port:      80Document Path:     /Document Length:    72 bytesConcurrency Level:   150Time taken for tests:  22.369 secondsComplete requests:   5000Failed requests:    0Keep-Alive requests:  0Total transferred:   1699416 bytesHTML transferred:    359416 bytesRequests per second:  223.53 [#/sec] (mean)Time per request:    671.065 [ms] (mean)Time per request:    4.474 [ms] (mean, across all concurrent requests)Transfer rate:     74.19 [Kbytes/sec] receivedConnection Times (ms)min mean[+/-sd] median  maxConnect:    40 489 289.9  425  3813Processing:  42 170 227.6  109  3303Waiting:    41 153 152.9  105  2035Total:    106 659 359.2  553  4175Percentage of the requests served within a certain time (ms)50%  55366%  65075%  75080%  78690%  94895%  103698%  128299%  1918100%  4175 (longest request)

И, наконец, я собрал результаты воедино с использованием Python-скрипта, после чего посчитал средние показатели по всем тестам и построил графики двух видов:

  • Количество запросов в секунду (Requests per seconds, RPS), обработанных сервером.
  • 95-й перцентиль времени ответа, другими словами показатель, отвечающий на вопрос о том, в пределах какого количества миллисекунд будет дан ответ на 95% запросов.

Анализ результатов, полученных с помощью Apache Benchmark


В ходе выполнения тестовых сценариев Hello World и Ответ с телом в 1 Кб на серверы было отправлено около 250 тысяч запросов. Их количество для сценариев, в которых применялись ответы с телом размером 10 Кб и 100 Кб, находилось в районе 110 70 тысяч запросов. Эти показатели не выражены в точных цифрах, так как иногда инфраструктура Azure закрывает соединения (connection reset by peer), но количество проанализированных запросов, всё равно, является достаточно большим. Не обращайте особого внимания на абсолютные значения, приводимые ниже: они имеют смысл лишь в плане сравнения друг с другом, так как они зависят и от клиента, и от сервера. Результаты, показанные в следующей таблице, получены с использованием клиента, подключённого к интернету по Wi-Fi-сети.
Хост Сценарий RPS (среднее значение) 95% запросов выполнено в пределах мс
Linux Hello World 232,61 1103,64
Linux Ответ с телом в 1 Кб 228,79 1129,93
Linux Ответ с телом в 10 Кб 117,92 1871,29
Linux Ответ с телом в 100 Кб 17,84 14321,78
Windows Hello World 174,62 1356,8
Windows Ответ с телом в 1 Кб 171,59 1367,23
Windows Ответ с телом в 10 Кб 108,08 2506,95
Windows Ответ с телом в 100 Кб 17,37 16440,27

Эти результаты позволяют сделать вывод о том, что, если тело ответа невелико, приложение, работающее в Docker-контейнере на Linux, гораздо быстрее обрабатывает HTTP-запросы, чем его версия, работающая в среде Windows. Разница между разными вариантами запуска приложения уменьшается по мере роста тела ответа, хотя, всё равно, Linux-вариант оказывается быстрее Windows-варианта. Такой результат может показаться удивительным, так как Windows-сервер, работающий в службе приложений Azure, представляет собой более зрелое решение, нежели Linux-сервер, работающий там же. С другой стороны, виртуализация Docker, в сравнении с другими технологиями виртуализации приложений, не отличается особой требовательностью к системным ресурсам. Возможно, имеются и другие отличия в конфигурациях, позволяющие Linux-хосту работать эффективнее, что особенно заметно при работе с ответами, тела которых невелики.
Сценарий Linux, прирост RPS в сравнении с Windows
Hello World +33,21%
Ответ с телом в 1 Кб +33,33%
Ответ с телом в 10 Кб +9,1%
Ответ с телом в 100 Кб +2,7%

Вот диаграммы, иллюстрирующие вышеприведённые данные.


Запросов в секунду, средний показатель (больше лучше)


Время, в течение которого обрабатываются 95% запросов (меньше лучше)


Время, в течение которого обрабатываются 95% запросов (меньше лучше)

Тестирование приложений с использованием инструментов Visual Studio Web Performance


Вышеописанные испытания производительности были повторены с использованием инструментов Visual Studio Ultimate Web Performance. Клиентская система, в географическом смысле, располагалась там же, где и раньше, но в этот раз она была подключена к интернету по проводной сети. Вот исходный код тестов. В данном случае использовались следующие настройки:

  • Тесты выполнялись по 5 минут.
  • В начале количество пользователей равнялось 50.
  • Каждые 10 секунд количество пользователей увеличивалось на 10.
  • Максимальным количеством пользователей было 150.


Тестирование серверов с помощью Visual Studio Web Performance (оригинал)

Анализ результатов, полученных с помощью Visual Studio Web Performance


Результаты тестов, проведённых с помощью Visual Studio Web Performance, отличаются от тех, что были проведены с помощью Apache Benchmark, но при этом Linux-система показала себя даже лучше, чем прежде. Различия в результатах испытаний можно объяснить следующими фактами:

  • Инструменты VS Web Performance, вероятно, по-другому работают с соединениями.
  • Для выполнения тестов использовались разные клиенты, по-разному подключённые к интернету.

Но, всё равно, допустимо напрямую сравнивать результаты испытаний только тогда, когда они выполнены с использованием одного и того же клиента, с применением одних и тех же инструментов и настроек.
Хост Сценарий RPS (среднее значение) 95% запросов выполнено в пределах мс
Linux Hello World 649 340
Linux Ответ с телом в 1 Кб 622 380
Linux Ответ с телом в 10 Кб 568 370
Linux Ответ с телом в 100 Кб 145 1220
Windows Hello World 391 400
Windows Ответ с телом в 1 Кб 387 420
Windows Ответ с телом в 10 Кб 333 510
Windows Ответ с телом в 100 Кб 108 1560

Вот таблица со сравнением Linux- и Windows-вариантов приложения.
Сценарий Linux, прирост RPS в сравнении с Windows
Hello World +65,98%
Ответ с телом в 1 Кб +60,72%
Ответ с телом в 10 Кб +70,57%
Ответ с телом в 100 Кб +34,26%

Вот визуализация этих данных.


Запросов в секунду, средний показатель (больше лучше)


Время, в течение которого обрабатываются 95% запросов (меньше лучше)

Сравнение с другими стеками технологий в Docker


Я могу провести сравнение Linux+Docker-варианта исследуемого приложения с приложениями, при создании которых использовались другие технологии, испытанные мной за последние дни, лишь используя сценарий Hello, World. Но при этом не могу не отметить, что даже при таком походе производительность Windows-варианта выглядит слишком низкой. Думаю, что стандартная конфигурация Kestrel (например количество потоков) не оптимизирована для планов Standard S1. Например вот средние значения RPS, полученные для других стеков технологий, испытания которых проводились с использованием тех же настроек.
Стек технологий Сценарий Hello World, RPS
Go 1.9.1 net/http ~1000, с пиками в ~1100
Python 3.6.1 uvloop, httptools ~1000, с пиками в ~1200
Python 3.6.1 Sanic, uvloop ~600, с пиками в ~650
PyPy 3, Gunicorn, Gevent, Flask ~600, с пиками в ~650

Эти результаты не снижают ценности ранее выполненных испытаний, в ходе которых одно и то же ASP.NET Core-приложение исследовалось в средах Windows и Linux.

Итоги


Развёртывание проектов в службе приложений Azure с использованием Linux и Docker не ухудшает производительности приложений, что идёт вразрез с тем, чего многие могли бы ожидать, учитывая то, что Windows-хостинг этой платформы представляет собой более зрелое решение. Применение Linux в Azure, на самом деле, выгоднее применения Windows, особенно в тех случаях, когда речь идёт об обработке запросов, предусматривающих отправку ответов, тела которых имеют небольшие размеры.

Чем вы пользуетесь на серверах Linux или Windows?

Подробнее..

Перевод Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure. Продолжение

09.05.2021 14:14:20 | Автор: admin
В моём предыдущем материале речь шла о сравнении производительности ASP.NET Core-приложений, запускаемых в Windows и в среде Linux + Docker, работающих в службе приложений Azure. Эта тема интересна многим поэтому я решил написать продолжение.



Я снова провёл испытания, используя подход, отличающийся от прежнего лучшей воспроизводимостью, такой, который даёт более надёжные результаты. Теперь я генерирую веб-нагрузку на серверы с помощью облачных инструментов Azure Cloud Agents, применяя Visual Studio и VSTS. И, более того, в то время как ранее я выполнял тесты с использованием HTTP, теперь тестирование проводилось с применением HTTPS.

Выполнение тестов в облачной среде


Благодаря отличной работе, проведённой Microsoft, запуск тестов в облаке это очень просто. Делается это с помощью инструментов Visual Studio Web Performance, с использованием учётной записи VSTS. Я провёл по две серии нагрузочных тестов для каждого из следующих сценариев:

  • Ответ, в теле которого содержится текст Hello World и отметка времени.
  • Ответ с телом в 1 Кб.
  • Ответ с телом в 10 Кб.
  • Ответ с телом в 50 Кб.
  • Ответ с телом в 100 Кб.

Вот как были настроены тесты:

  • Тесты выполнялись по 5 минут.
  • В начале количество пользователей равнялось 50.
  • Каждые 10 секунд количество пользователей увеличивалось на 10.
  • Максимальным количеством пользователей было 150.
  • Запросы выполнялись из того же региона (Western Europe), где были развёрнуты исследуемые приложения.


Результаты тестов (оригинал)

Среди выходных данных тестов были сводные показатели, имеющие практическую ценность, отчёты об ошибках и о нарушениях ограничений, касающихся ресурсов, выделенных системам (например слишком большая нагрузка на CPU).


Пример выходных данных теста (оригинал)

Я использовал те же тесты, которые применялись в прошлый раз (найти соответствующий код можно здесь).

Что же у меня получилось теперь?

Анализ результатов


Полученные в этот раз результаты согласуются с теми, которые были получены в прошлый раз, при использовании клиентской системы, подключённой к интернету по проводной сети. А именно, ASP.NET Core-приложение, развёрнутое в Linux с применением Docker-контейнера, оказывается гораздо быстрее, чем оно же, развёрнутое на Windows-хосте (оба варианта работают в рамках соответствующего плана служб приложений). Результаты новых тестов даже сильнее, чем результаты прежних, указывают на превосходство Linux-варианта, особенно при работе с запросами, предусматривающими возврат ответов с более объёмными телами.

Вот сводные результаты испытаний, отражающие количество запросов, обработанных в секунду (RPS).
Сценарий Linux Windows Linux +%
Hello World 646,6 432,85 +49,38%
Ответ с телом в 1 Кб 623,05 431,95 +44,24%
Ответ с телом в 10 Кб 573,6 361,9 +58,5%
Ответ с телом в 50 Кб 415,5 210,05 +97,81%
Ответ с телом в 100 Кб 294,35 143,25 +105,48%

Вот среднее время ответа (мс).
Сценарий Linux Windows Linux +%
Hello World 168,85 242,2 -30,28%
Ответ с телом в 1 Кб 171,25 249,8 -31,45%
Ответ с телом в 10 Кб 184,2 292,7 -37,07%
Ответ с телом в 50 Кб 233,3 542,85 -57,02%
Ответ с телом в 100 Кб 365,05 817,35 -55,34%


Запросов в секунду, средний показатель (больше лучше)


Время, в течение которого обрабатываются 95% запросов (меньше лучше)

Вот .xlsx-файл с результатами тестирования, а вот аналогичный .ods-файл.

В чём Linux показывает себя хуже Windows (и так ли это на самом деле)?


Почти все нагрузочные тесты на Linux-хосте приводили к превышению допустимой нагрузки на процессор (Processor\% Processor Time) с выдачей соответствующих предупреждений. При этом ни один из тестов, проводимых на Windows-хосте, не привёл к появлению подобных предупреждений. Я не вполне уверен в том, что правильно понял документацию по этому показателю производительности, по умолчанию включаемому во все новые нагрузочные тесты, создаваемые в Visual Studio. Если кто-то в этом разбирается буду благодарен за пояснения.

Странные графики, касающиеся производительности и пропускной способности Windows-системы


Я обратил внимание на странную закономерность в графиках VSTS, отражающих производительность и пропускную способность систем в ходе нагрузочного тестирования. В случае с Linux-системами эти графики представляют собой довольно-таки плавные линии. А вот Windows-графики напоминают нечто вроде пил. Вот соответствующие графики для сценария, в котором в теле ответа содержится 10 Кб данных.


Графики производительности и пропускной способности для Linux


Графики производительности и пропускной способности для Windows

Другие графики можно найти здесь. Вот графики (Linux и Windows) для сценария, где в теле ответа содержится 50 Кб данных.

Итоги


В свете моих предыдущих испытаний учитывая полученные здесь результаты, могу сказать, что, с точки зрения производительности, в Azure оправдано использование конфигурации Linux + Docker.

Заключительные замечания


Мне нет никакой выгоды от того, чтобы представить Linux в более выгодном свете, чем Windows. Я опубликовал все исходные коды моих тестов и инструкции, касающиеся воспроизведения тестового окружения. Если кто-то подозревает, что я где-то что-то подкрутил, или сделал что-то неправильно пусть повторит мои тесты и укажет на мою ошибку. И будет неплохо, если кто-нибудь проведёт проверку моих результатов.

Я решил провести эти тесты производительности и опубликовать результаты лишь из-за того, что планирую создать веб-сервис для приложения, написанного мной на Python. Мне было интересно узнать о том, удастся ли мне получить удовлетворительные результаты в среде Azure с использованием Linux-хоста, на котором работает Docker. Для разработки моего сервиса я планирую использовать PyPy 3, Gunicorn, Gevent и Flask. И я полагаю, что проект, основанный на этом стеке технологий, будет работать быстрее аналогичного ASP.NET Core-проекта, использующего сервер Kestrel. Но это уже совсем другая история, и чтобы говорить об этом с уверенностью надо провести соответствующие тесты.

Какими стеками технологий вы пользуетесь для разработки веб-сервисов?

Подробнее..

Update Tuesday Microsoft выпустила апрельские обновления безопасности

14.04.2021 14:22:42 | Автор: admin

Microsoft выпустила плановые обновления безопасности, закрывающие 114 уязвимостей, включая 6 уязвимостей в Microsoft Edge и 4 уязвимости в Exchange Server. 19 уязвимостей были классифицированы как Критические и 88 как Важные. Среди закрытых уязвимостей две были обнародованы публично, а эксплуатация одной из этих уязвимостей была зафиксирована в реальных атаках (0-day).

В данной статье я расскажу о самых главных моментах этого выпуска.

Сводная информация по количеству и типу уязвимостей в соответствующих продуктах приведена на графике.

На следующие уязвимости и обновления безопасности следует обратить особое внимание.

Была закрыта критическая уязвимость удаленного исполнения кода CVE-2021-28329 в компонентах среды исполнения RPC), которой подвержены все поддерживаемые версии Windows и Windows Server. Рейтинг CVSS составил 8.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Апрельские обновления также исправляют важную уязвимость повышения привилегий CVE-2021-28313 в компонентах Windows Diagnostics Hub. Данная уязвимость затрагивает последние версии Windows 10 и Windows Server 20H2, 2004, 1909. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Также была закрыта важная уязвимость повышения привилегий CVE-2021-28347 в компонентах среды исполнения Windows Speech. Уязвимости подвержены все поддерживаемые версии Windows 10. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Устранена важная уязвимость удаленного исполнения кода CVE-2021-27091 в компонентах службы RPC Endpoint Mapper, которая была обнародована публично. Данной уязвимости подвержена только ОС Windows Server 2012. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Также обновления закрывают критическую уязвимость удаленного исполнения кода CVE-2021-27095 в видео-декодере Windows Media, которой подвержены все версии Windows. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Была закрыта важная уязвимость удаленного исполнения кода CVE-2021-28445 в компонентах Windows Network File System (NFS. Данной уязвимости подвержены все ОС Windows кроме Windows 10 и Windows Server 1803. Рейтинг CVSS составил 8.1, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Устранена важная уязвимость удаленного исполнения кода CVE-2021-28451 в приложении Microsoft Excel. Данной уязвимости подвержены Microsoft Office 2019 for Windows/Mac, Microsoft Excel 2013-2016, Microsoft 365 Apps for Enterprise, Microsoft Office Online Server, Microsoft Office Web Apps Server 2013. Рейтинг CVSS составил 7.8, а согласно индексу эксплуатации у атак с использованием данной уязвимости низкий уровень вероятности.

Замыкает команду лидеров апрельского выпуска уязвимость нулевого дня, уже использующуюся в атаках это важная уязвимость повышения привилегий CVE-2021-28310 в компонентах Win32k. Данная уязвимость затрагивает версии Windows 10 и Windows Server 20H2, 2004, 1909, 1809, 1803. Рейтинг CVSS составил 7.8.

Отдельного внимание заслуживают ряд уязвимостей в почтовом сервере Microsoft Exchange. На этот раз затронуты все поддерживаемые версии Exchange Server 2013, 2016, 2019.

Примечание: помимо плановых обновлений в марте был внеплановый выпуск обновлений безопасности для локальных версий Microsoft Exchange Server 2010, 2013, 2016, 2019. Подробности об этом выпуске можно получить в нашем блоге.

Все 4 уязвимости в апрельском выпуске CVE-2021-28480, CVE-2021-28481, CVE-2021-28482, CVE-2021-28483 были классифицированы как Критические, и потенциально позволяют злоумышленнику удаленно выполнить произвольный код на почтовом сервере.

Информация о данных уязвимостях не была обнародована публично и на данный момент не было зафиксировано использование рабочих эксплоитов в реальных атаках. Максимальный рейтинг CVSS среди уязвимостей составил 9.8 из 10 (самый низкий рейтинг 8.8) и согласно индексу эксплуатации у атак с использованием этих уязвимостей высокий уровень вероятности.

Стоит отметить, что для установки обновлений безопасности, необходимо иметь поддерживаемый уровень кумулятивного пакета на ваших почтовых серверах:

  • Exchange Server 2013 CU23

  • Exchange Server 2016 CU19/CU20

  • Exchange Server 2019 CU8/CU9

Все подробности вы можете узнать в блоге команды Microsoft Exchange.

Остальные уязвимости были исправлены в компонентах Microsoft Edge (на движке Chromium), Microsoft Office (приложения и веб-сервисы), SharePoint Server, Visual Studio, VS Code, Azure DevOps Server, Azure Sphere, GitHub Pull Requests and Issues Extension и Maven Java Extension.

Полный список статей базы знаний для соответствующих пакетов обновлений, с которыми связаны потенциальные проблемы при установке приведен в заметках к выпуску.

Также хочу напомнить, что в марте закончилась поддержка старой версии браузера Microsoft Edge (на движке EdgeHTML). При установке апрельского накопительного пакета старый браузер будет заменен новой версией Microsoft Edge на движке Chromium. Подробности - в нашем блоге.

Обновления стека обслуживания

Обновления Servicing Stack Updates (SSU) были выпущены для всех поддерживаемых ОС: Windows 10 версии 1809, 1909, 2004, 20H2 и Windows Server версии 2019, 1909.

А для версий 2004, 20H2 обновления SSU теперь поставляются в едином накопительном пакете вместе с остальными обновлениями. О том, как установить сразу и SSU, и обновления безопасности ОС в одном накопительном пакете, автоматически, соблюдая правильную последовательность, читайте в нашем блоге.

Как всегда самую полную и актуальную информацию об уязвимостях и обновлениях безопасности вы можете найти на нашем портале Security Update Guide. Нам очень интересно узнать ваше мнение о новом портале Security Updates Guide, поэтому мы призываем вас поделиться обратной связью о работе портала через эту форму.

Вы также можете посмотреть запись нашего ежемесячного вебинара "Брифинг по безопасности" с более подробным разбором этого выпуска обновлений безопасности Microsoft.

А для того, чтобы быть в курсе самых актуальных новостей информационной безопасности Microsoft, подписывайтесь на канал https://aka.ms/artsin.


Помните, почти 90% всех уязвимостей уже имели патчи от производителей на момент своего обнародования*, поэтому так важно не просто обновлять ваше ПО, но и делать это своевременно.

Автор: Артём Синицын CISSP, CCSP, MCSE, MC: Azure Security Engineer
старший руководитель программ информационной безопасности в странах Центральной и Восточной Европы
Microsoft

Twitter: https://aka.ms/artsin
YouTube: https://aka.ms/artsinvideo

*Vulnerability Review Report by Flexera

Подробнее..

Microsoft Azure Sentinel доступ к данным Group-IB Threat Intelligencen

29.04.2021 10:23:13 | Автор: admin

Microsoft и Group-IB, международная компания, специализирующаяся на предотвращении кибератак и расследовании высокотехнологичных преступлений, сообщают об успешной интеграции Azure Sentinel, облачного решения дляуправления информационной безопасностью, с системой исследования и атрибуции кибератак Group-IB Threat Intelligence & Attribution (TI&A). Компания Group-IBсталапервым разработчиком, прошедшим интеграцию своей платформы в Azure Sentinel в России и СНГ.

Group-IB Threat Intelligence &Attribution является частью экосистемы высокотехнологичных продуктов Group-IB, предназначенных для сбора данных окиберугрозах иатакующих, проактивного выявления деятельности киберпреступников изащиты сетевой инфраструктуры. Каждый специалист, использующий TI&A, получает доступ ккрупнейшей коллекции данных даркнета, продвинутой модели профилирования хакерских групп, атакже полностью автоматизированному графовому анализу, который засекунды помогает провести корреляцию данных иатрибутировать угрозы доконкретной преступной группы. TI&A объединяет уникальные источники данных и накопленный опыт в расследовании преступлений в сфере высоких технологий и противодействии сложным многоступенчатым атакам по всему миру. Система хранит данные о субъектах угроз, доменах, IP-адресах и инфраструктурах, собранные за 15 лет, в том числе о тех, которые преступники пытались скрыть. Функциональные возможности системы позволяют настраивать ее с учетом специфики угроз не только для конкретной отрасли, но и для конкретной компании в конкретной стране.

Задачей разработчиков Group-IB и Miсrosoft в рамках проекта была загрузка баз знаний Group-IB TI&A в Azure Sentinel для автоматического сканирования и обнаружения соответствующих индикаторов TI в журналах источников данных организации для дальнейшего изучения и анализа.

В рамках реализации этого проекта мы решили задачи по автоматизированной доставке из Group-IB TI&A в Azure Sentinel актуальных индикаторов компрометации для дальнейшего изучения и анализа угроз, подчеркивает Станислав Фесенко, руководитель департамента системных решений Group-IB. Такой подход позволит компаниям увеличить скорость реагирования внутренних команд на потенциальный инцидент и усилить защиту инфраструктуры за счет широких возможностей хантинга для предотвращения киберпреступлений еще на этапе их подготовки.

Microsoft Azure Sentinel это масштабируемое облачное решение для управления информационной безопасностью и событиями безопасности (SIEM), а также для автоматического ответа с помощью оркестрации операций защиты. Azure Sentinel обеспечивает интеллектуальные средства для анализа данных безопасности и аналитику угроз по всему предприятию, предоставляя единое решение для обнаружения предупреждений, видимости угроз, упреждающего поиска и реагирования на угрозы.

Напомним, ранее Forrester Consulting провелаопроссреди компаний, использующих Azure Sentinel, согласно которому, использование Azure Sentinel обеспечивает 201% рентабельности инвестиций за три года.

Подробнее..

Приглашаем на конференцию Microsoft Ignite 24 марта

24.02.2021 10:16:44 | Автор: admin

Приглашаем принять участие в крупнейшей технической международной конференции 2021 годаMicrosoft Igniteсо 2 по 4 марта!

Microsoft Ignite одно из ключевых мероприятий Microsoft пройдет 2-4 марта 2021 года. Сатья Наделла и другие первые лица компании поделятся стратегическим видением и расскажут о важных анонсах в сфере смешанной реальности, искусственного интеллекта, облачных технологий и кибербезопасности. На конференции будут анонсированы новые инструменты для разработчиков, а также технологии и сервисы для развития бизнеса и более продуктивной работы организаций и сотрудников.

Под катом подробности про занятия на эвенте, спикеров, а также про российскую сессию!

Общайтесь

С создателями технологийMicrosoft, которые Вы используете каждый день или собираетесь внедрить. Делитесь опытом, задавайте вопросы и обсуждайте интересующие Вас темы с ведущими ИТ-экспертами, архитекторами и разработчиками из разных уголков мира.

Смотрите

Выступления ТОП-спикеров в области информационных технологий, участвуйте в технических сессиях и получайте индивидуальные онлайн-консультации от экспертов глобального ит-сообщества.

Узнайте

О последних достижениях в области облачных технологий, администрирования инфраструктуры, обеспечения эффективности, совместной работы, безопасности и разработки приложений.

Присоединяйтесь

К российской сессии 4 марта в 10:30 утра по московскому времени. В этом годуMicrosoftи МТС совместно расскажут про интеграцию энергоэффективной сети связи NB IoT, обладающую широким покрытием и способностью проникать в труднодоступные места, и сервис Microsoft IoT Central, обеспечивающий сбор, анализ и визуализацию данных с умных устройств

Наши спикеры

Satya Nadella

CEO, Microsoft Corporation

Jared Spataro

Corporate Vice President, M365, Microsoft Corporation

Mitra Azizirad

Corporate Vice President, AI and Innovation Marketing, Microsoft Corporation

Scott Guthrie

ExecutiveVice President,Cloud and AI Group, Microsoft Corporation

Scott Hanselman

Partner Program Manager, Microsoft Corporation

Специальная российская сессия

В этом году глобальная конференция Microsoft Ignite будет включать специальную российскую сессию, посвященную теме гибридного облака и интернета вещей. В рамках нее ведущий технологический эксперт по интернету вещей Microsoft в РоссииДмитрий Тетерюки руководитель центра разработки устройств и планирования сети Интернета Вещей и М2М в МТСАндрей Плавичрасскажут про партнерство компаний в сфере развития сферы в России, а также обсудят особенности и перспективы локального рынка.

Модератором выступитДенис Кузьминых, руководитель направления облачных сервисов Azure, Microsoft в России. Сессия начнется в 10:30 утра по московскому времени 4 марта. Зарегистрироваться на конференцию Ignite.

Регистрация и подробности. С нетерпением ждем вас на онлайн-конференцииMicrosoftIgniteв марте! Участие бесплатное!

Подробнее..

Бесплатные мероприятия по Azure в марте

04.03.2021 10:11:49 | Автор: admin

Привет, Хабр! Сегодня рассказываем о наших трех крутых мероприятиях для разработчиков в марте, которые связаны с технологиями Microsoft Azure. Среди тем: основы искусственного интеллекта, DevOps с GitHub и основы работы с данными. Ну и без бесплатных возможностей по сдаче сертификационных экзаменов Microsoft как обычно не обойдется. Заглядывайте под кат за подробностями!

1. Основы искусственного интеллекта

9 марта, на английском с субтитрами на русском

Откройте для себя решения, которые можно создавать с помощью ИИ, и службы Azure, которые помогут вам создать эти решения. Присоединяйтесь к бесплатному дню виртуального обучения Microsoft Azure: основы искусственного интеллекта, чтобы изучить основные концепции искусственного интеллекта и узнать, как начать работу с искусственным интеллектом в Azure.

Посетите день виртуального обучения, чтобы:

  • Получить обзор основных концепций и приложений искусственного интеллекта

  • Создавать модели прогнозирования без кода с помощью машинного обучения Azure

  • Узнать больше о диалоговом ИИ, обработке естественного языка и компьютерном зрении в Microsoft Azure

После прохождения этого бесплатного обучения вы сможете бесплатно сдать сертификационный экзамен по основам искусственного интеллекта Microsoft Azure.

Подробности и регистрация.

2. DevOps с GitHub

17-18 марта, на английском с субтитрами на русском

Продвигайте свою карьеру, имея прочный фундамент в DevOps. Посетите это бесплатное обучение под руководством инструктора, предназначенное для разработчиков и ИТ-специалистов. Узнайте, как использовать GitHub для управления рабочими процессами и сокращения времени цикла. Получите пошаговые инструкции по добавлению элементов управления качеством и безопасностью в процесс сборки, а также по улучшению уведомлений и ответов для обеспечения согласованной и повторяемой автоматизации.

Изучите эти темы на мероприятии:

  • Использование GitHub для улучшения совместной работы и производительности команды

  • Интеграция средств контроля безопасности и качества в конвейеры автоматизации, непрерывной интеграции и непрерывной доставки (CI/CD) и среды выполнения

  • Внедрение передовых методов, чтобы помочь удаленным командам разработчиков повысить отказоустойчивость программного обеспечения

Подробности и регистрация.

3. Основы работы с данными

22-23 марта, на русском

Изучите основные концепции баз данных в облачной среде. Присоединяйтесь к нам на мероприятии Microsoft Azure Virtual Training Day: основы данных, чтобы получить базовые знания об облачных сервисах обработки данных. Изучите предложения для работы с реляционными и нереляционными данными, а также решения для аналитики больших данных и современных хранилищ данных в Azure.

Посетите это учебное мероприятие, чтобы:

  • Изучить роли, задачи и обязанности, связанные с управлением данными в облачной среде.

  • Получить основные навыки работы с облачными сервисами данных в Azure, используемыми для обработки реляционных и нереляционных данных, включая подготовку и развертывание реляционных и нереляционных баз данных.

  • Изучить средства обработки данных, используемые при создании решений для аналитики данных, включая Azure Synapse Analytics, Azure Databricks и Azure HDInsight.

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен Основы работы с данными в Microsoft Azureбесплатно.

Подробности и регистрация.

Подробнее..

11 анонсов конференции Microsoft Build для разработчиков

27.05.2021 10:19:54 | Автор: admin

Привет, Хабр! Сегодня, как и обещали*, делимся подборкой самых интересных для разработчиков конференции Microsoft Build 2021. Их получилось 11, но это не значит, что это все. Чтобы узнать еще больше, изучайте сайт конференции.

* пообещали это мы во вчерашней подборке 8 анонсов конференции Microsoft Build 2021, которую подготовила наша бизнес-команда.

1. Представлен Windows Terminal Preview 1.9

Поздравляем с Microsoft Build 2021 и вторым днем рождения Windows Terminal! Этот выпуск представляет версию 1.9 для Windows Terminal Preview и переносит Windows Terminal в версию 1.8. Как всегда, вы можете установить обе сборки из Microsoft Store, а также со страницы выпусков GitHub.

Среди новинок:

  • Дефолтный терминал

  • Quake mode

  • Обновления Cascadia Code

  • Обновления интерфейса настроек

  • Другие улучшения

Подробнее здесь.

2. Представляем Visual Studio 2019 v16.10 и v16.11 Preview 1

Мы рады объявить о выпуске Visual Studio 2019 v16.10 GA и v16.11 preview 1. Этот выпуск делает нашу тему продуктивности и удобства разработчиков общедоступной для пользователей Visual Studio! Мы добавили функции C ++ 20, улучшили интеграцию с Git, улучшили инструменты профилирования и множество функций, повышающих продуктивность.

Подробнее здесь.

3. Представляем .NET 6 Preview 4

Мы рады выпустить .NET 6 Preview 4. Мы почти наполовину закончили выпуск .NET 6. Это хороший момент, чтобы еще раз взглянуть на .NET 6 в полном объеме, как и в первом Preview. Многие функции находятся в близкой к окончательной форме, а другие появятся в ближайшее время, когда основные блоки будут готовы к выпуску. Предварительная версия 4 создает прочную основу для выпуска в ноябре финальной сборки .NET 6 с готовыми функциями и возможностями. Она также готова к тестированию в реальных условиях, если вы еще не пробовали .NET 6 в своей среде.

Говоря о финальном выпуске, у нас теперь запланирована дата! Добавьте в календарь даты с 9 по 11 ноября и .NET Conf 2021. Мы выпустим .NET 6 9-го числа с множеством подробных докладов и демонстраций, которые расскажут вам все, что вы хотите знать о .NET 6.

Подробнее здесь.

4. Представляем .NET MAUI Preview 4

Сегодня мы рады объявить о доступности .NET Multi-platform App UI (.NET MAUI) Preview 4. Каждая предварительная версия представляет больше элементов управления и функций для этого многоплатформенного инструментария, который станет общедоступным в ноябре этого года на .NET Conf. .NET MAUI теперь имеет достаточно блоков для создания функциональных приложений для всех поддерживаемых платформ, новые возможности для поддержки запуска Blazor на настольных компьютерах и впечатляющий прогресс в Visual Studio для поддержки .NET MAUI.

Подробнее здесь.

5. Обновления ASP.NET Core в .NET 6 Preview 4

Версия .NET 6 Preview 4 уже доступна и включает много новых крутых улучшений в ASP.NET Core.

Вот что нового в этой предварительной версии:

  • Добавлены minimal APIs

  • Async streaming

  • HTTP logging middleware

  • Использование Kestrel для профиля запуска по умолчанию в новых проектах

  • IConnectionSocketFeature

  • Илучшенные шаблоны single-page app (SPA)

  • Обновления .NET Hot Reload

  • Ограничения generic type в компонентах Razor

  • Blazor error boundaries

  • Компиляция Blazor WebAssembly ahead-of-time (AOT)

  • Приложения .NET MAUI Blazor

  • Другие улучшения производительности

Подробнее здесь.

6. Представляем Entity Framework Core 6.0 Preview 4: Performance Edition

Группа Entity Framework Core анонсировала четвертый предварительный выпуск EF Core 6.0. Основная тема этого выпуска - производительность.

Что нового:

  • Производительность EF Core 6.0 теперь на 70% выше в стандартном для отрасли тесте TechEmpower Fortunes по сравнению с 5.0.

  • Улучшение производительности полного стека, включая улучшения в тестовом коде, среде выполнения .NET и т. д. Сам EF Core 6.0 на 31% быстрее выполняет запросы.

  • Heap allocations уменьшены на43%.

Подробнее здесь.

7. Представляем .NET Hot Reload для редактирования кода во время выполнения

Рады представить вам возможность горячей перезагрузки .NET в Visual Studio 2019 версии 16.11 (предварительная версия 1) и с помощью инструментария командной строки dotnet watch в .NET 6 (предварительная версия 4). В полной статье коллеги познакомят вас с тем, что такое .NET Hot Reload, как вы можете начать использовать эту функцию, каково наше видение будущих запланированных улучшений и проснят, какой тип редактирования и языки в настоящее время поддерживаются.

Подробнее здесь.

8. SecretManagement Module v1.1.0

Следующая версия SecretManagement 1.1.0 содержит ряд мелких исправлений, а также два значительных изменения, одно из которых потенциально критично для авторов расширений. Для получения дополнительной информации об изменениях в этом выпуске см. документ CHANGELOG. В статье ниже обсуждаются основные изменения, почему они потенциально очень важны и особенно актуальны для владельцев хранилищ расширений, которые могут захотеть протестировать свое хранилище и внести какие-либо изменения, пока эти обновления находятся в состоянии предварительной версии.

Подробнее здесь.

9. Новый бесплатный курс: создание бессерверных приложений с полным стеком в Azure

Независимо от того, новичок вы или опытный в облаке, разработке и SQL, создание и проектирование приложений в облаке стало необходимым навыком для многих ролей. Сегодня мы рады объявить о новом пути обучения, который поможет разработчикам с любым уровнем подготовки научиться быстро и эффективно создавать приложения с помощью Azure. Новый путь обучения - создание бессерверных полнофункциональных приложений в Azure.

Подробнее здесь.

10. .NET Framework May 2021

Выпущена предварительная версия накопительного обновления для .NET Framework за май 2021 года.

Подробнее здесь.

11. Представляем сборку OpenJDK от Microsoft

Объявлена общая доступность сборки OpenJDK от Microsoft, нового бесплатного дистрибутива OpenJDK с открытым исходным кодом, доступного бесплатно для всех, с возможностью развертывания его где угодно. Корпорация Майкрософт активно использует Java, внутри компании работает более 500 000 JVM. Группа разработчиков Java очень гордится тем, что вносит свой вклад в экосистему Java и помогает управлять такими рабочими нагрузками, как LinkedIn, Minecraft и Azure!

Сборка включает двоичные файлы для Java 11, основанные на OpenJDK 11.0.11 + 9 x64 server и настольных средах в macOS, Linux и Windows. Мы также публикуем новый двоичный файл раннего доступа для Java 16 для Linux и Windows на ARM, основанный на последней версии OpenJDK 16.0.1 + 9.

Этот новый выпуск Java 16 уже используется миллионами игроков Minecraft с последней версией Minecraft Java Edition Snapshot 21W19A, которая была обновлена для объединения среды выполнения Java 16 на основе сборки Microsoft OpenJDK.

Посетите страницу, чтобы узнать подробности.

Подробнее здесь.

Подробнее..

4 бесплатных мероприятия по Azure в июне

01.06.2021 10:11:39 | Автор: admin

Привет, Хабр! Сегодня делимся подборкой наших крутых вебинаров и митапов по Azure в Июне. В этот раз их четыре, и один из четырех эвентов может вас заинтересовать, даже если вы не работаете с Azure: встреча разработчиков, работающих с любыми технологиями Microsoft. Присоединяйтесь!

1. Перенос локальной инфраструктуры и данных

7-8 июня, на английском с субтитрами на русском7-8 июня, на английском с субтитрами на русском

Узнайте, как спланировать миграцию в облако для локальных рабочих нагрузок, приложений и баз данных. Посетите это бесплатное обучение под руководством инструктора, предназначенное для ИТ-администраторов, системных инженеров и архитекторов. Получите руководство по оценке и оценке существующей локальной среды и получите представление о том, как переносить, защищать и управлять своими виртуальными машинами, приложениями и данными с помощью служб и инструментов Azure.

Во время мероприятия:

  • Обнаружьте и оцените рабочие нагрузки в своей среде перед миграцией с помощью Azure Migrate и других инструментов.

  • Выберите стратегию миграции, которая лучше всего соответствует вашему бизнесу и техническим потребностям.

  • Перенесите традиционные локальные рабочие нагрузки идентификации Windows Server и защитите от угроз с помощью Azure Active Directory (Azure AD), доменных служб Azure AD, Azure AD Connect и контроллеров домена Windows Server IaaS.

  • Перенесите свои локальные вычислительные нагрузки Windows Server в Azure, включая физические серверы и виртуальные машины, работающие на VMware или Windows Server Hyper-V.

  • Изучите службы баз данных SQL Azure, включая миграцию рабочих нагрузок SQL в SQL Azure, а также способы выполнения миграции в оперативном и автономном режиме.

Подробности и регистрация.

2. Основы ИИ

8 июня, на русском8 июня, на русском

Откройте для себя решения, которые можно создавать с помощью ИИ, и сервисы Azure, помогающие в разработке этих решений. Присоединяйтесь к нам на бесплатном мероприятии Microsoft Azure Virtual Training Day: основы ИИ, чтобы получить общее представление о том, что такое ИИ, и узнать, как начать работу с ИИ в Azure.

Посетите виртуальное обучающее мероприятие, чтобы:

  • Изучить основные концепции и области применения ИИ.

  • Создать прогнозные модели, не требующие написания программного кода, с помощью сервиса машинного обучения Azure.

  • Подробнее узнать о разговорном ИИ, обработке естественного языка и компьютерном зрении в Microsoft Azure.

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен по основам Microsoft Azure AIбесплатно.

Вот, что мы вам предлагаем:

  • Введение

  • Введение в ИИ

  • Машинное обучение

  • Перерыв 10минут

  • Компьютерное зрение

  • Перерыв 10минут

  • Обработка естественного языка

  • Виртуальный собеседник

  • Завершающий сеанс вопросов и ответов

Подробности и регистрация.

3. Microsoft Developers Meetup

16 июня, на русском16 июня, на русском

Приглашаем Вас принять участие в онлайн мероприятии Microsoft Developers Meetup, посвященное технологиям в области процессов разработки и сопровождения ПО.

На мероприятии вы узнаете от лучших экспертов в области разработки о том, какие технологии предлагает GitHub и Microsoft для разработчиков и DevOpsa. Специалисты и архитекторы Microsoft покажут, как размещать в Azure приложения с использованием контейнеров, а также какие возможности имеет предлагает GitHub для обеспечения безопасной и эффективной работы команд.

Партнёры Microsoft поделятся своим опытом и практикой реализации проектов трансформации процессов разработки и улучшения качества кода. Мероприятие ориентировано на разработчиков и руководителей разработки, а также ИТ-специалистов, специалистов по безопасности и ИТ-менеджеров, которые участвуют в процессе разработки программного обеспечения, а также занимаются выведением программных продуктов на рынок.

Программа

10:00 - 10:10

Opening

10:10 - 10:30

Microsoft Dev platform roadmap and Build news Microsoft

10:30 - 11:00

AppDev on Azure + Industry case DataArt

11:00 - 11:30

GitHub news and roadmap Microsoft

11:30 - 12:00

DevOps with GitHub Actions + Industry case Softline

12:00 - 12:30

Secure DevOps and Supply chain + build updates Microsoft

12:30 - 13:00

Secure Development on Azure + Industry case AwaraIT

Подробности и регистрация: регистрация приостановлена.

4. Основы Microsoft Azure

21-22 июня, на русском21-22 июня, на русском

Чтобы представить будущее, вам необходимо понять, какие возможности перед вами и вашей организацией открывает облако сегодня. В рамках этого вводного курса День виртуального обучения Microsoft Azure: основы рассказывается о концепциях, моделях и сервисах облачных вычислений. Рассматриваются такие темы, как публичное, частное и гибридное облако, а также инфраструктура как услуга (IaaS), платформа как услуга (PaaS) и программное обеспечение как услуга (SaaS).

Во время обучения вы узнаете, как:

  • начать работать с Azure;

  • интегрировать Azure с существующими сетями;

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

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен по основам Microsoft Azureбесплатно.

Подробности и регистрация.

Подробнее..

Регистрация на Microsoft Build 2021 уже началась

19.05.2021 10:20:52 | Автор: admin

Учитесь. Общайтесь. Пишите код.

Конференция Build ключевое событие года для Microsoft. На мероприятии выступают первые лица компании, в том числе, ее глава Сатья Наделла. Это 48 часов погружения в технологические инновации и общения с глобальным технологическим сообществом. Регистрация на конференцию бесплатна.

Что вас ждет

В течение двух дней вас будут ждать:

  • Технические доклады

  • Серии вопросов и ответов с экспертами

  • Обучающие мероприятия Learn Live

  • Общение с участниками из вашего локального сообщества (Local Connections)

Вы также сможете записаться на индивидуальную консультацию во время мероприятия, чтобы получить ответы на интересующие вас технические вопросы.

Бесплатная регистрация необходима для участия в мероприятиях Microsoft Build, даже если вы уже регистрировались на прошлые мероприятия.

Подробности и регистрация.

Загляните в будущее технологий,
присоединяйтесь к Microsoft Build!

Подробнее..

13 облачных учебных ресурсов для .NET-разработчиков

30.03.2021 10:05:43 | Автор: admin

Сегодня пользователи требуют оперативности, новейших и лучших функций и нулевого времени простоя своих приложений. Компании быстро осваивают возможности облака, чтобы удовлетворить потребности пользователей, повысить масштабируемость и доступность приложений. Однако для того, чтобы полностью использовать облако и оптимизировать экономию средств, приложения должны разрабатываться с учетом облачности. Это означает не только изменение способа создания приложений, но и изменение практики разработки в организации для принятия этого архитектурного стиля, ориентированного на облачные вычисления.

Команда .NET собрала коллекцию бесплатных ресурсов, чтобы помочь вам ускорить процесс разработки облачных приложений. Независимо от того, модернизируете ли вы свое приложение или создаете что-то новое, у нас есть рекомендации, которые помогут вам принять решение. Эти руководства актуальны и включают новейшие и лучшие облачные функции платформы .NET.

  • 3 ресурса с гайдами

  • сайт с учебными модулями

  • 8 книг

  • ресурс с примерами архитектуры

Все это под катом!

Начало работы с облачными приложениями .NET

Если вы новичок, начните создавать простые микросервисы с помощью веб-API ASP.NET, Docker и разверните их в Azure Kubernetes Services (AKS).

Практические модули обучения Microsoft

У Microsoft есть бесплатная онлайн-платформа для обучения под названием Microsoft Learn. Вы можете получить больше навыков с помощью контента, который в то же время веселый, управляемый, практический, интерактивный и соответствует вашей роли и целям. Мы создали серию модулей, которые помогут вам научиться создавать микросервисы .NET с облачными технологиями, такими как Docker, Container Registry, Kubernetes, Helm и многими другими. Единственная программа, которая вам понадобится на вашем компьютере для запуска этого модуля, - это браузер. Вся магия выполняется за кулисами с помощью Azure CLI, поэтому вы можете полностью сосредоточиться на обучении и забыть про проблемы с инфраструктурой.

Попробуйте их сейчас!

Бесплатные электронные книги по архитектуре

Dapr для .NET разработчиков

Форматы:PDF|Read online

Руководство для разработчиков .NET по пониманию и использованию всей мощи распределенной среды выполнения приложений Microsoft с открытым исходным кодом (Darp). Dapr помогает решать проблемы, возникающие при создании микросервисов, и делает ваш код независимым от платформы.

Cloud-native

Форматы:PDF|Read online

В этом руководстве определяется разработка приложений для облачных вычислений, вводится пример приложения, созданного с использованием принципов работы с облачными технологиями, и рассматриваются темы, общие для большинства облачных приложений. Аудитория этого руководства - это в основном лица, принимающие решения, разработчики, руководители разработчиков и архитекторы.

.NET микросервисы

Форматы:PDF|Read online

Мы написали это руководство для разработчиков и архитекторов решений, которые плохо знакомы с разработкой приложений на основе Docker и архитектурой на основе микросервисов. В этой книге рассматриваются такие шаблоны, как Domain-Driven Design(DDD), Command Query Responsibility Segregation (CQRS), Database per service, API Composition.

Бессерверные приложения

Форматы:PDF|Read online

В этом руководстве основное внимание уделяется облачной разработке приложений, использующих бессерверные технологии. В книге подчеркиваются преимущества и раскрываются потенциальные недостатки разработки бессерверных приложений, а также дается обзор бессерверных архитектур.

DevOps: жизненный цикл приложения Docker

Форматы:PDF|Read online

Это руководство содержит общие сведения о Azure DevOps для реализации конвейеров CI/CD, охватывает реестр контейнеров Azure (ACR) и службы Azure Kubernetes (AKS) для развертывания.

Модернизация существующих приложений .NET

ASP.NET Core gRPC для WCF-разработчиков

Форматы:PDF|Read online

Мы написали это руководство для разработчиков, работающих в .NET Framework или .NET Core, которые ранее использовали WCF и стремятся перенести свои приложения в современную среду RPC для .NET 5. В целом, если вы обновляете или рассматриваете возможность обновления до. NET 5, и вы хотите использовать встроенные инструменты gRPC, это руководство поможет.

Миграция приложений .NET в Azure

Форматы:PDF|Read online

В этом руководстве основное внимание уделяется начальной модернизации существующих веб-приложений или сервис-ориентированных приложений Microsoft .NET Framework. Это означает перенос рабочей нагрузки в новую или более современную среду без значительного изменения кода приложения и базовой архитектуры. Кроме того, ознакомьтесь с другими ресурсами по миграции на странице Migrate your .NET app to Azure.

Перенос существующих приложений ASP.NET на .NET Core

Форматы:PDF|Read online

В этом руководстве представлены высокоуровневые стратегии миграции существующих приложений, написанных для ASP.NET MVC и веб-API (.NET Framework 4.x), в .NET Core. В нем также рассматриваются стратегии миграции больших решений на примере проекта.

Примеры архитектуры

eShopOnContainers - один из наших популярных эталонных образцов микросервисов. Это кроссплатформенное контейнерное приложение, работающее на платформе .NET 5. Ознакомьтесь с этим примером для подробной реализации некоторых шаблонов микросервисов, таких как CQRS, DDD, Database per service, API Composition. Не забудьте проверить другие примеры, в том числе "Модернизация ваших приложений .NET" здесь.

Подробнее..

Наш новый партнерский проект Cloud Studio

11.05.2021 10:09:42 | Автор: admin
Новая платформаWPP, разработанная на основеMicrosoftAzure, обеспечит более тесное сотрудничество между творческими командами, где бы они ни находилисьНовая платформаWPP, разработанная на основеMicrosoftAzure, обеспечит более тесное сотрудничество между творческими командами, где бы они ни находились

WPP и Microsoft объявили о партнерских отношениях для преобразования производства творческого контента, и первым шагом станет запуск Cloud Studio инновационной облачной платформы, которая позволяет творческим командам из глобальной сети WPP проводить кампании для клиентов из любой точки мира.

Cloud Studio первая в рекламной индустрии специализированная платформа для виртуального производства, которая вооружает творческих людей технологиями для совместной работы и предоставления клиентам убедительных результатов, за счет переноса процессов создания, выпуска и редактирования контента с локальных компьютеров в облако.

В течение следующих трех лет WPP развернет Cloud Studio для 5000 сотрудников по всей своей сети, а особенно в творческом подразделении WPP Hogarth, что даст возможность обращаться к производственным инструментам и службам со стандартных подключенных к Интернету устройств через Azure без необходимости использовать традиционное или специализированное физическое оборудование. В долгосрочной перспективе WPP планирует более широкое распространение платформы с потенциальным развертыванием до 25 000 пользователей.

Цифровые технологии стремительно меняют индустрию СМИ и рекламы, в том числе способ производства контента, сказал Сатья Наделла, генеральный директор Microsoft. Вместе с WPP мы применим возможности масштабируемой интеллектуальной инфраструктуры Azure, чтобы поддержать производство контента следующего поколения, обеспечить гибкость и создать условия для сотрудничества и творчества тысячам сотрудников WPP, где бы они ни находились.

Технологии вот что движет творчеством WPP. Они позволяют нам воплощать наши замыслы, находить новые идеи и применять новаторские методы работы. Пандемия показала, что команды WPP могут успешно сотрудничать и предоставлять клиентам потрясающие результаты, при этом находясь друг от друга физически далеко, сказал Марк Рид (Mark Read), генеральный директор WPP. Партнерство с Microsoft для работы над Cloud Studio это следующий шаг на нашем пути к тому, чтобы вооружить творческие команды новейшими передовыми производственными инструментами и привлекать лучших специалистов, независимо от того, где они находятся.

Cloud Studio позволяет WPP в полной мере влиться в сегодняшний новый мир гибридных рабочих сред, обеспечивая при этом непрерывность бизнеса и условия для решения задач клиентов из разных команд и стран. Например, платформа увеличит эффективность совместной работы и производства, облегчив доступ и повысив прозрачность контента за счет расширенной индексации метаданных, выполняемой с помощью искусственного интеллекта Azure в центре, доступном из любого места и в любое время. Эта интеллектуальная категоризация контента позволит WPP дать командам инструменты для контроля версий, исключить дублирование контента и предоставить творческим работникам, живущим в разных странах и часовых поясах, доступ к нужным ресурсам для нужного продукта или рынка.

Кроме этого, Cloud Studio, в соответствии с более широкой повесткой WPP в области устойчивого развития, поможет выполнить недавновзятые обязательства: обеспечить максимальную эффективность и минимизировать энергопотребление, сократив потребности творческих групп в традиционных производственных студиях для доставки крупномасштабного высококачественного маркетингового контента. Способы использования платформой контента и поиска цифровых активов также помогут сократить потери материалов и задействовать ресурсы, оставшиеся от предыдущих проектов. Обе компании WPP и Microsoft взяли на себя амбициозные обязательства в отношении устойчивого развития и уже сотрудничали в этом направлении.

Сервисы Azure обеспечат основу для Cloud Studio, включая использование вычислительных ресурсов и хранилища Azure для более быстрой и эффективной передачи контента в руки творческих профессионалов. Azure позволит WPP увеличивать и уменьшать объемы хранилища в зависимости от потребностей, меняющихся с началом и завершением новых клиентских проектов, и при этом сократит расходы за счет использования более экономичного облачного хранилища после архивации проекта. Azure DevOps и GitHub позволят WPP при необходимости быстро подготовить новые экземпляры Cloud Studio. Наконец, чтобы творческие специалисты могли работать где угодно, WPP будет использовать передовые устройства Surface, включая Surface Pro 7, Surface Go 2, Surface Book 3 и Surface Duo.

Повышение производительности и доступности

WPP и Microsoft имеют давние отношения, не ограниченные виртуальным производством, что позволяет создавать технологические решения, помогающие WPP улучшать взаимодействие с сотрудниками и клиентами. Например, благодаря Microsoft Teams 100 000 сотрудников WPP смогли беспрепятственно перейти на гибридную рабочую среду за последние 18 месяцев, что улучшило совместную работу и общение внутри компании и с клиентами. Кроме того, недавно WPP с помощью Microsoft сделала свою творческую продукцию более инклюзивной и доступной для людей с ограниченными возможностями, создав решение, котороеиспользует сервисы Azure AI, чтобы внедрять проверку доступности и инклюзивности в работу клиентов по мере ее создания.

Подробнее..

8 анонсов конференции Microsoft Build 2021

26.05.2021 10:15:20 | Автор: admin

В рамках глобальной технологической конференции Miсrosoft Build 2021, которая проходит с 25 по 27 мая в онлайн-формате, компания продемонстрировала новые решения для разработчиков, а также совместно с партнерами анонсировала инициативу в области устойчивого развития.

Это 8 анонсов конференции Microsoft Build, которые подобрала наша бизнес-команда. Ну а подборку от команды разработки ждите завтра!

Главные новости:

  • Анонспервого продуктаMicrosoftна базе GPT-3.Одна из самых мощных моделей естественного языка в мире GPT-3 от OpenAI будет интегрирована в платформу для low-code разработки Microsoft Power Apps. Благодаря искусственному интеллекту пользователи теперь смогут создавать приложения без глубоких знаний кода или формул, используя диалоговые команды. GPT-3 работает в облаке Microsoft Azure, а для ее дообучения был использован сервис Azure Machine Learning. Интеграция станет одним из первых применений модели в решении прикладных бизнес-задач.

  • ЗапускФонда экологичного ПОGreenSoftwareFoundation.Учредители фонда Microsoft, GitHub, Accenture и ThoughtWorks при поддержке Linux Foundation намерены приложить усилия к популяризации экологичного подхода к разработке ПО, для того чтобы компании ИТ-сектора могли внести свой вклад в снижение уровня углеродных выбросов. Также они будут инициировать создание отраслевых стандартов и стимулировать инновационные разработки в данной области в сотрудничестве с некоммерческими и научными организациями.

  • ЗапусксервисовAzure Applied AI.Новая категория сервисов позволит разработчикам существенно ускорить создание решений на базе ИИ для распространенных бизнес-сценариев, таких как обработка документов, обслуживание клиентов, извлечение информации из материалов и т.д.

  • ИнтеграцияAzure Security CenterиGitHub.Функция позволит отслеживать результаты сканирования контейнеров, полученные с помощью GitHub Actions. Благодаря этому команды SecOps (Security Operations) смогут быстрее реагировать и оповещать о проблемах, что обеспечит более продуктивную коллаборацию между ними и разработчиками.

  • Возможностьзапускать сервисыAzureна базеKubernetesв любом месте с помощьюAzureArc.Теперь у разработчиков появилась возможность запускать различные службы приложений Azure (Azure App Service, Azure Functions, Azure Logic Apps, Azure API Management, Azure Event Grid) где угодно включая облака от разных производителей, таких как Amazon и Google, локальные серверы и устройства граничных вычислений.

  • Новые возможностидля разработчиков вMicrosoftTeams. Нововведения позволят разработчикам реализовывать еще больше сценариев использования Teams. Например, выступление нескольких спикеров одновременно, автоматизация различных функций во встречах с помощью API (к примеру, ее начала и окончания), создание собственных фонов для режима Together mode, а также доступ к аудио и видеопотокам в режиме реального времени для расшифровки, перевода, ведения заметок и многого другого.

  • РасширениеVisual StudioдляPower Platform.Оно позволит разработчикам использовать знакомые инструменты Visual Code в платформе Power Platform. Это откроет новые возможности для совместной работы разработчиков и сотрудников из бизнес-подразделений.

  • Поддержкаприложений графического интерфейса пользователя (GUI) Linux в подсистеме Windows для Linux (WSL).WSL позволяет пользователям запускать свои любимые инструменты, утилиты и приложения Linux. Теперь она также включает поддержку приложений GUI. Они работают из коробки, что позволяет тестировать, разрабатывать и запускать полноценные приложения Linux GUI на устройстве под управлением Windows без настройки традиционной виртуальной машины.

Подробнее..

CICD для Dynamics CRM на базе Azure DevOps

11.02.2021 18:04:31 | Автор: admin

image


В прошлом году на митапе "Dynamics 365 & Power Platform meetup Moscow 25 февраля 2020" я рассказывал про то как мы выстроили пайплайн непрерывной поставки CI/CD на базе GitLab CI для Microsoft Dynamics CRM.


В этой статье я расскажу и покажу как построить CI-часть пайплайна непрерывной поставки расширения функциональности Microsoft Dynamics CRM на базе Azure DevOps.


Я давно уже не заглядывал в Azure и на новогодних праздниках наконец-то появилось время в нем "поковыряться". :-) Соответственно, ничего сложного в данной статье я описывать не буду и если у вас уже есть построенный пайплайн в Azure DevOps то вы, скорее всего, ничего нового здесь не найдете. Однако, если вы чувствуете потребность в автоматизации выноса но не знаете с чего начать то эта статья как раз для вас.


Я буду использовать облачный сервис Azure DevOps Service т.к. развернуть локально и настроить не успел но, локально должно работать точно также. Начинается все, естественно, с репозитория. Для Azure Devops Pipelines можно использовать разные репозитории, Azure Repos Git, Bitbucket Cloud, GitHub, просто Git и Subversion но я, для удобства, остановлюсь на Azure Repos Git чтобы все было в одном проекте который я оставлю в публичном доступе здесь https://dev.azure.com/ZhukoffPublic/CRMCICD/.


Microsoft Dynamics CRM это CRM система на базе технологий ASP.NET, которое теперь входит в семейство Dynamics 365, которую можно расширять путем написания плагинов на C# для бэковой части и JScript для фронтальной.

Для демонстрационных целей я создал 4 проекта (вы их можете клонировать из моего репозитория):


  • Plugins плагины CRM. В нашем случае плагином который переопределяет формирование полного имени.
  • Plugins.Tests юнит-тесты для плагинов.
  • Solution кастомизации CRM. В нашем случае это сущность Контакт и основная форма для него.
  • WebResources вебресурсы CRM. В нашем случае это скрипт на форме Контакта который выводит нотификацию если не заполнен телефон.

Таким образом мы покроем основные элементы расширения MS Dynamics CRM.


Для автоматизации я буду использовать SparkleXrm написанный небезызвестным Scott Durow. Описание возможностей можно почитать здесь Simple, No fuss, Dynamics 365 Deployment Task Runner как пользовать можно посмотреть на его канале в YouTube. Также у него есть видеокурс на PaktPub Designing and Building Custom Apps using Dynamics 365 где он подробнейшим образом рассказывает что и как использовать и даже описывает как создать пайплайн на тот момент это был еще VSTS. Я выбрал spkl потому что он уже написан и сам проект в открытом доступе на GitHub, что позволяет сделать доработки самому если что-то не устраивает. Это вариант, конечно, не без недостатков, о них я расскажу позже.


Будем считать, что проект у нас есть и что он, конечно, собирается и деплоится из командной строки с помощью spkl. У меня это виртуальная машина установленной MS CRM 365 (9.0), Visual Studio, SDK, XRMToolBox и пр., короче, все в одном.


Сам пайплайн делится на две основные части, CI непрерывная интеграция (Continuous Integration) т.е. когда код непрерывно интегрируется в ветке репозитория и CD которая может быть реализована как непрерывная поставка (Continuous Delivery) или непрерывное развертывание (Continuous Deployment).


Мы начнем, конечно, с CI и думать сейчас как делать CD вовсе необязательно.


CI/CD Pipeline


Подготовительные работы


Создаем проект CRMCICD в Azure DevOps.



Клонируем репозиторий и заливаем наш проект.



Теперь создадим сам пайплайн, для этого нам нужно перейти в секцию Pipelines, жмем Create Pipeline, выбираем репозиторий Azure Repos Git далее выбираем наш репозиторий CRMCICD далее выбираем Starter Pipeline и получаем следующую картину.



Это и есть пайплайн, YAML код в файле azure-pipelines.yml который исполняется агентом в каком-то окружении, windows или linux например. Он должен состоять минимум из трех секций:


  • trigger: триггер для запуска пайплайна, в данном случае это -main, т.е. по коммиту в ветку main.
  • pool: окружение где будет выполняться пайплайн, в данном случае образ ubuntu в облаке Azure.
  • steps: сами действия которые должны быть выполнены.

Если сохранить пайплайн в таком виде то он будет запускаться на каждый коммит в ветку main. Поэтому ставим trigger: none и сохраняем так пока его не настроим и не отладим.


Наш CI будет состоять из 2 этапов:


  • Сборка проекта и решения
  • Развертывание на локальную среду

2-й шаг не обязателен но я его добавил чтобы был пример развертывания на локальную среду с помощью spkl, полезно сразу получить то, что только что залили в main ветку.


Сборка проекта и решения


Первым делом меняем агента на windows т.к. linux нас никак не устроит.
vmImage: 'windows-latest'


Добавляем переменные для удобства.


variables:  solution: '**/*.sln'  buildPlatform: 'Any CPU'  buildConfiguration: 'Debug'

Добавляем следующие шаги:


steps:# Установка NuGet- task: NuGetToolInstaller@1  displayName: 'Install NuGet tool'# Восстановление пакетов NuGet для проекта- task: NuGetCommand@2  displayName: 'Restore NuGet packages'  inputs:    restoreSolution: '$(solution)'# Сборка- task: VSBuild@1  displayName: Buld  inputs:    solution: '$(solution)'    platform: '$(buildPlatform)'    configuration: '$(buildConfiguration)'# Прогон юнит-тестов- task: VSTest@2  displayName: 'Run Unit Tests'  inputs:    platform: '$(buildPlatform)'    configuration: '$(buildConfiguration)'# Публикация собранной dll-ки в хранилище артефактов- task: CopyFiles@2  displayName: 'Copy plugins dll'  inputs:    SourceFolder: '$(Build.SourcesDirectory)\CRMCICD\Plugins\bin\Debug\'    Contents: 'CRMCI.*.dll'    targetFolder: '$(Build.StagingDirectory)/plugins'- publish: '$(Build.StagingDirectory)/plugins'  displayName: 'Publish plugins dll as an artifact'  artifact: plugins

Где $(xxx) это обращение к переменным которые я объявил сам или встроенным, подробнее смотреть тут Use predefined variables а описание что и в каких папках лежит можно посмотреть тут Understanding the directory structure created by Azure DevOps tasks.


И будьте внимательны, это YAML и один лишний или недостающий пробел может все поломать.

Сохраняем и запускаем пайп руками, кнопка Run pipeline справа вверху.



В следующем окне ничего не меняя просто жмем Run.



В результате чего попадаем на страницу конкретного экземпляра пайплайна который мы только что запустили и который стоит в очереди на исполнение где-то в недрах Azure DevOps. Он состоит из одной джобы (Job).



Если кликнуть на джобу то попадем на страницу с логами выполнения каждой задачи где увидим их статус и время выполнения.



Если у кого-то не получилось можете взять версию пайпа из репозитория, коммит eb2a1465


Первое, что мне не нравится это версия пайпа, #20210129.1. Давайте сделаем свою, я обычно использую 4 цифры, где первые две это версия CRM а вторые 2 версия моих доработок, первая цифра это номер релиза а вторая номер сборки, например, 9.0.1.0. Данный подход позволяет иметь уникальный номер даже если одно и тоже решение делается для разных версий CRM. Получилось почти семантическое версионирование (подробнее см. https://semver.org/lang/ru/).


Итак, чтобы получить такой номер версии добавляем в пайп в секцию с переменными еще 3.


crmmajor: 9crmminor: 0rel: 1

И, между variables и steps добавляем следующую строчку


name: $(crmmajor).$(crmminor).$(rel).$(BuildID) 

Таким образом мы переопределили номер версии пайпа и, соответственно, сборки. Переменная BuildID уникальна в рамках пайплайна и инкрементируется каждый раз когда запускается пайп.


Сохраняем и запускаем пайп. Теперь видим нашу версию в заголовке Jobs in run #9.0.1.7. Однако, наша новая версия не сохранилась ни в dll-ке с плагинами ни в решении.


Чтобы это исправить необходим PowerShell скрипт который лежит в папке CRMCI/Solution/BuildScripts/update-build-versions.ps1 это доработанный скрипт с сайта документации Microsoft по Azure DevOps Example: Version your assemblies, который меняет версию на текущую версию пайпа во всех dll и XML-файле решения CRM в проекте Solution.


Добавим его запуск перед сборкой проекта.


- task: PowerShell@2  displayName: 'Update version'  inputs:    filePath: '$(Build.SourcesDirectory)\CRMCI\Solution\BuildScripts\update-build-versions.ps1'    arguments: 'BUILD_BUILDNUMBER $(Build.BuildNumber) BUILD_SOURCESDIRECTORY $(Build.SourcesDirectory)'

Сохраняем и запускаем пайп. Проверяем, что в dll с плагинами, которая сохранилась в артефакты стоит правильная версия.
Теперь добавим сборку солюшена CRM, которая будет состоять из 2 задач, сама сборка и публикация солюшена в хранилище артефактов.


# Сборка решения CRM- task: CmdLine@2  displayName: 'Pack CRM Solution'  inputs:      script: |        dir        @echo off        set package_root=..\..\        REM Find the spkl in the package folder (irrespective of version)        For /R %package_root% %%G IN (spkl.exe) do (            IF EXIST "%%G" (set spkl_path=%%G            goto :continue)            )        :continue        REM spkl instrument [path] [connection-string] [/p:release]        "%spkl_path%" pack "$(Build.SourcesDirectory)\CRMCI\Solution\spkl.json" ""        exit /b %ERRORLEVEL%# Публикация решения CRM- task: CopyFiles@2  displayName: 'Copy CRM Solution'  inputs:      SourceFolder: '$(Build.SourcesDirectory)\CRMCI\Solution\'      Contents: 'CICDDemo_*.zip'      TargetFolder: '$(Build.StagingDirectory)/solutions'- publish: '$(Build.StagingDirectory)/solutions'  displayName: 'Publish solution as an artifact'  artifact: solutions

Сохраняем и запускаем пайп, проверяем, что помимо dll в артефактах еще появилось решение. Версия пайпа на текущий момент в коммите 647dae37.


В моем решении только кастомизации. Если захотите добавить плагины то придется добавить еще одну задачу на копирование dll в папку решения т.к. чтобы плагины добавились в решение необходимо чтобы они были в определенном месте и сам файл был без точек в имени, поэтому пришлось использовать PShell а не CopyFiles, пример ниже.


- task: PowerShell@2  displayName: 'Copy CRMCI.Plugins.dll в папку решения'  inputs:    targetType: 'inline'    script: 'Copy-Item  -Path $(System.ArtifactsDirectory)\plugins\CRMCI.Plugins.dll  -Destination $(Build.SourcesDirectory)\CRMCI\Solution\package\PluginAssemblies\CRMCIPlugins-766F0C7B-4B44-EB11-A812-0022489AC434\CRMCIPlugins.dll -verbose'    errorActionPreference: 'silentlyContinue'

Последний параметр errorActionPreference говорит о том, что при ошибке тихо продолжать работу и не останавливать пайп.


Если вы используете TypeScript или webpack или что-то подобное то необходимо добавить еще и сборку скриптов. В случае со spkl их тоже придется подкладывать в рабочую папку. :-(

В итоге мы получили пайп результат работы которого лежит в артефактах в виде dll с плагинами и солюшена CRM которые можно будет использовать для развертывания на среды в рамках CD для чего в AzureDevOps сделаны отдельные пайплайны Release pipelines. О них я расскажу в следующий раз.


Развертывание на локальную среду


Т.к. развертывание на локальную среду подразумевает доступ к локальной CRM то облачный агент нам не подойдет. Нужно настраивать свой. Как это сделать можно почитать тут Self-hosted Windows agents и тут How to create and configure Azure DevOps Pipelines Agent. Перед тем как устанавливать сам агент установите необходимое ПО, минимально это следующее:



В итоге, после установки и настройки агента, мы должны увидеть в настройках что он виден и запущен. У меня он в пуле Default.



Т.к. это отдельный этап и он должен выполняться на другом агенте то разобьем наш пайп на этапы, все что мы уже сделали это будет первый этап а деплой это второй. Для этого мы разобьем наш пайп на этапы (stages), которые в свою очередь состоят из джобов (jobs) которые в свою очередь уже состоят из уже знакомых нам тасков (tasks).


Здесь надо отметить, что для каждой джобы указывается агент (pool), что позволяет выполнять разные джобы на разных агентах специально заточенных под конкретную работу и экономить ресурсы дорогих агентов.

Если в этапе есть несколько джобов то они запустятся одновременно, это где-то полезно а где-то нет. Если нужно последовательное выполнение джобов то либо разнесите их по разным этапам либо проставьте условие dependsOn, подробнее тут Specify conditions.

Также, в пайпе можно перезапускать "упавшие" джобы а не конкретные такси. Учитывайте это при построении пайпа.

Структура следующая:


stages:- stage: Build  displayName: 'Build solution'  jobs:    - job: Build      displayName: 'Build job'      pool: 'Custom'      steps:      - task: NuGetToolInstaller@1        displayName: 'Install NuGet tool'- stage: Deploy  displayName: 'Deploy local'  jobs:    - job: Deploy      displayName: 'Deploy job'      pool: 'Custom'      steps:      - task: NuGetToolInstaller@1        displayName: 'Install NuGet tool'

Однако, есть и минусы, которые надо учитывать, т.к.джоба запускается на новом агенте то рабочее пространство очищается, заново выкачиваются исходники и всего того, что было сделано на предыдущем шаге не будет, т.е. у каждой джобы, если нужен ее результат работы, обязательно необходимо сохранять его в артефакты. Для того чтобы использовать файлы из предыдущих шагов есть шаг загрузки артефактов, который мы как раз используем для получения плагинов.


Наш файл будет выглядеть так, коммит 97f91fec


trigger: nonepool:  vmImage: 'windows-latest'variables:  solution: '**/*.sln'  buildPlatform: 'Any CPU'  buildConfiguration: 'Debug'  crmmajor: 9  crmminor: 0  rel: 1name: $(crmmajor).$(crmminor).$(rel).$(BuildID)stages:- stage: Build  displayName: 'Build solution'  jobs:    - job: Build      displayName: 'Build job'      pool: 'Default'      steps:      # Установка NuGet      - task: NuGetToolInstaller@1        displayName: 'Install NuGet tool'      # Восстановление пакетов NuGet для проекта      - task: NuGetCommand@2        displayName: 'Restore NuGet packages'        inputs:          restoreSolution: '$(solution)'      # Обновление версии      - task: PowerShell@2        displayName: 'Update version'        inputs:          filePath: '$(Build.SourcesDirectory)\CRMCI\Solution\BuildScripts\update-build-versions.ps1'          arguments: 'BUILD_BUILDNUMBER $(Build.BuildNumber) BUILD_SOURCESDIRECTORY $(Build.SourcesDirectory)'      # Сборка      - task: VSBuild@1        displayName: Buld        inputs:          solution: '$(solution)'          platform: '$(buildPlatform)'          configuration: '$(buildConfiguration)'      # Прогон юнит-тестов      - task: VSTest@2        displayName: 'Run Unit Tests'        inputs:          platform: '$(buildPlatform)'          configuration: '$(buildConfiguration)'      # Публикация собранной dll-ки в хранилище артефактов      - task: CopyFiles@2        displayName: 'Publish plugins dll to artifacts'        inputs:          SourceFolder: '$(Build.SourcesDirectory)\CRMCI\Plugins\bin\Debug\'          Contents: 'CRMCI*.dll'          targetFolder: '$(Build.StagingDirectory)/plugins'      - publish: '$(Build.StagingDirectory)/plugins'        displayName: 'Publish plugins dll as an artifact'        artifact: plugins      # Сборка решения CRM      - task: CmdLine@2        displayName: 'Pack CRM Solution'        inputs:            script: |              dir              @echo off              set package_root=..\..\              REM Find the spkl in the package folder (irrespective of version)              For /R %package_root% %%G IN (spkl.exe) do (                  IF EXIST "%%G" (set spkl_path=%%G                  goto :continue)                  )              :continue              REM spkl instrument [path] [connection-string] [/p:release]              "%spkl_path%" pack "$(Build.SourcesDirectory)\CRMCI\Solution\spkl.json" ""              exit /b %ERRORLEVEL%      # Публикация решения CRM      - task: CopyFiles@2        displayName: 'Copy CRM Solution'        inputs:            SourceFolder: '$(Build.SourcesDirectory)\CRMCI\Solution\'            Contents: 'CICDDemo_*.zip'            TargetFolder: '$(Build.StagingDirectory)/solutions'      - publish: '$(Build.StagingDirectory)/solutions'        displayName: 'Publish solution as an artifact'        artifact: solutions- stage: Deploy  displayName: 'Deploy local'  jobs:    - job: Deploy      displayName: 'Deploy job'      pool: 'Default'      steps:      - task: NuGetToolInstaller@1        displayName: 'Install NuGet tool'

На странице пайплайна мы теперь видим два этапа.



Далее разберем таски второго этапа.
Первые две это восстановление NuGet пакетов чтобы у нас был доступен spkl.


Здесь, конечно, хорошо бы оптимизировать и закачивать только spkl т.к. остальное нам не нужно.

  # Установка NuGet  - task: NuGetToolInstaller@1    displayName: 'Install NuGet tool'  # Восстановление пакетов NuGet для проекта  - task: NuGetCommand@2    displayName: 'Restore NuGet packages'    inputs:      restoreSolution: '$(solution)'

Дальше начинаются костыли. :-) Т.к. я не нашел в spkl возможность импорта решения отдельно, там есть только совмещенный шаг сборки решения и его импорта import, который и придется использовать. Поэтому придется еще раз сделать обновление версии.


  # Обновление версии  - task: PowerShell@2    displayName: 'Update version'    inputs:      filePath: '$(Build.SourcesDirectory)\CRMCI\Solution\BuildScripts\update-build-versions.ps1'      arguments: 'BUILD_BUILDNUMBER $(Build.BuildNumber) BUILD_SOURCESDIRECTORY $(Build.SourcesDirectory)'

Теперь собираем и импортируем решение. Для этого нам понадобится строка подключения к CRM, которую мы сохраним в переменные пайпа под именем connstr-local. Кнопку добавления переменных можно найти на странице редактирования пайпа.



  # Импорт решения CRM  - task: CmdLine@2    displayName: 'Deploy solution'    inputs:      script: |        @echo off        set package_root=..\..\        For /R %package_root% %%G IN (spkl.exe) do (          IF EXIST "%%G" (set spkl_path=%%G          goto :continue)          )        :continue        @echo Using '%spkl_path%'         "%spkl_path%" import "$(Build.SourcesDirectory)\CRMCI\Solution\spkl.json" "$(connstr-local)"        if errorlevel 1 (        echo Error Code=%errorlevel%        exit /b %errorlevel%        )

По хорошему, надо скачивать решение собранное на предыдущем этапе и импортировать его, это можно сделать с помощью PowerShell или написать консольку.

Дальше мы скачиваем собранную dll-ку с плагинами и подкладываем туда где она должна оказаться если бы мы собирали решение т.к. я не нашел способа явно параметром указать откуда брать dll при импорте плагинов. Опять костыль. :-)


  # Скачивание плагинов  - task: DownloadPipelineArtifact@2    displayName: 'Download plugins artifacts'    inputs:      buildType: 'specific'      project: 'b44552ad-1d85-4c3b-834b-5109b4c9c2b4'      definition: '1'      buildVersionToDownload: 'latest'      artifactName: 'plugins'      targetPath: '$(System.ArtifactsDirectory)/plugins'  # Копируем dll  - task: CopyFiles@2    displayName: 'Copy plugins dll'    inputs:      SourceFolder: '$(System.ArtifactsDirectory)\plugins'      Contents: '*.dll'      TargetFolder: '$(Build.SourcesDirectory)\CRMCI\Plugins\bin\Debug\'      OverWrite: true

Следующий шаг это импорт плагинов, в том числе и шагов.


  # Импорт плагинов  - task: CmdLine@2    displayName: 'Deploy plugins'    inputs:      script: |        @echo off        set package_root=..\..\        For /R %package_root% %%G IN (spkl.exe) do (          IF EXIST "%%G" (set spkl_path=%%G          goto :continue)          )        :continue        @echo Using '%spkl_path%'         "%spkl_path%" plugins "$(Build.SourcesDirectory)\CRMCI\Plugins\spkl.json" "$(connstr-local)"        if errorlevel 1 (        echo Error Code=%errorlevel%        exit /b %errorlevel%        )

Ну и последним шагом будет импорт веб-ресурсов. Тут spkl просто берет файлы из проекта и публикует их согласно маппингу в spkl.json.


  # Импорт веб-ресурсов  - task: CmdLine@2    displayName: 'Deploy web-resources'    inputs:      script: |        @echo off        set package_root=..\..\        For /R %package_root% %%G IN (spkl.exe) do (          IF EXIST "%%G" (set spkl_path=%%G          goto :continue)          )        :continue        @echo Using '%spkl_path%'         "%spkl_path%" webresources "$(Build.SourcesDirectory)\CRMCI\\WebResources\spkl.json" "$(connstr-local)"        if errorlevel 1 (        echo Error Code=%errorlevel%        exit /b %errorlevel%        )

Вот, собственно, и все. Теперь можно вернуть триггер на срабатывание по коммиту в ветке main.


trigger:- main

Но это не совсем то, что нам нужно т.к. пайп будет вызываться на изменение любого файла, в том числе, самого файла azure-pipelines.yml что не всегда удобно. Поэтому, в секцию trigger можно добавить исключения по ветке, тегу или по маске. Я добавил следующее.


trigger:  branches:    include:    - main  paths:    include:    - '*'    exclude:    - 'azure-pipelines.yml'    - '*.md'

Также если в комментарии к коммиту присутствует одно из следующих словосочетаний то он не запустится:


  • [skip ci] or [ci skip]
  • skip-checks: true or skip-checks:true
  • [skip azurepipelines] or [azurepipelines skip]
  • [skip azpipelines] or [azpipelines skip]
  • [skip azp] or [azp skip]

Подробнее смотрите здесь CI triggers


Первая часть закончена, CI построен и даже немного больше. Тут, есть конечно, куда развиваться, например, добавить статический анализ кода (кому интересно см. лабу Подключение SonarCloud к AzureDevops) или автотесты.


В следующей статье расскажу про релизные пайплайны и CD.

a2-ia.png)
Подробнее..

Перевод Как я получил несколько сертификатов по облачным технологиям за 9 месяцев

10.02.2021 10:11:22 | Автор: admin

Айдар присоединился к EPAM Anywhere в качестве DevOps-инженера полтора года назад, и за это время прошел несколько программ сертификации, какое-то время был на бенче, сменил два проекта, а сейчас работает в двух проектных группах.

Айдар стремится стать экспертом по облачным технологиям, поэтому он посвящает много времени изучению сервисов AWS, Azure и GCP. Теперь Айдар уже является одним из самых сертифицированных профессионалов EPAM.

Простая мотивирующая история с полезными ссылками.

Почему облачные технологии?

Ты присоединился к EPAM Anywhere в качестве DevOps инженера. Почему ты решил развиваться в облачных технологиях?

Как и многие коллеги из моей области, я начал свою карьеру в ИТ в качестве системного администратора, а затем постепенно переходил к методологиям DevOps.

Работая над одним из предыдущих проектов, я заинтересовался облачными технологиями и занялся самообразованием. Я понял, что изучение облачных технологий и всех связанных с ними услуг может стать правильным следующим шагом для моего карьерного роста. И эта экспертиза, я думаю, будет востребована в ИТ-индустрии ещё долгое время. Поэтому я старался использовать каждую возможность, чтобы глубоко погрузиться в облачные технологии.

Когда я присоединился к EPAM Anywhere, у меня был небольшой опыт работы с облачными технологиями и несколько сертификатов в моем портфолио, с одной стороны, и сильное профессиональное стремление стать экспертом по облачным технологиям с другой.

Первые шаги в облаке

Первой платформой, которую я изучал, была Amazon Web Services. Это был основной поставщик облачных услуг на рынке в то время. Когда я начал работать с ним, я обнаружил, что моих практических навыков недостаточно для реализации даже несложных функций, поскольку мои знания были в основном теоретическими. Однако постепенно я повышал свои навыки, занимаясь крупными проектами. Мое правило не сдаваться и продолжать попытки, потому что построение карьеры в ИТ это всегда непрерывное обучение и сотрудничество.

Часть сертификатов ты получил самостоятельно, а остальные через EPAM Global Certification, верно?

Да, так и есть. Я предполагал, что один сертификат это всего лишь отправная точка длинного пути. Образование никогда не заканчивается, независимо от предмета. Все отрасли, особенно информационные технологии, развиваются; следовательно, каждый ИТ-специалист может постоянно расти и совершенствовать свои знания, чтобы соответствовать ожиданиям рынка и быть востребованным. Чем раньше вы это осознаете, тем лучше. Более опытные коллеги вдохновили меня двигаться дальше и уделять больше времени самообразованию.

В результате я прошел сертификацию AWS Cloud Practitioner и AWS Developer (Associate) до работы в EPAM, потом, будучи в EPAM, успешно сдал экзамен на AWS DevOps Engineer (Professional).

Помимо программы сертификации AWS, я принял участие в программе сертификации Microsoft Azure для сотрудников EPAM и прошел четыре сертификации: Azure Fundamentals; Azure Developer (Associate) и после небольшого перерыва архитектор решений Azure (Azure Solutions Architect Expert). Недавно я сертифицировался на Azure Data Scientist Associate.

От сертификатов AWS и Microsoft Azure до Google Cloud

Почему ты решил получить сертификат Google Cloud?

На то было несколько причин. У меня было желание попасть на проект с облачными технологиями и профессионально развиваться в этом стеке. Какое-то время я был на бенче и искал новые проекты, я просматривал открытые вакансии в EPAM и понял, что получить новую роль на проекте мне поможет опыт в облачных технологиях.

Затем я прочитал историю успеха о нашем коллеге, который получил ряд профессиональных сертификатов GCP, благодаря чему попал на новый интересный проект. Думаю, это послужило толчком для меня, я подал заявку на ещё одну сертификацию GCP и получил сертификат GCP Cloud Engineer (Associate).

Но это еще не конец истории. Поскольку я был на волне самообразования, я также решил изучить Kubernetes и, наконец, сдал экзамен на Kubernetes Application Developer (CKAD).

Сколько сертификатов сейчас в твоём портфолио?

Девять завершенных программ, но я продолжаю обучение.

Что, по-твоему, является самой сложной частью процесса сертификации и как с ней справиться?

Во-первых, важно понимать процесс: с чего начать подготовку, какие этапы, каковы сроки для каждого этапа, какие учебные ресурсы следует изучить и так далее. Очень важным аспектом является организационная часть, так как придется управлять своим личным расписанием и планировать свою рабочую нагрузку в соответствии с ним.

Мне повезло, так как я участвовал в очень полезной сессии по сертификации GCP с нашими коллегами из EPAM, и я знал некоторые нюансы этого процесса. Например, я знал, что перед экзаменом мне нужно пройти определенные курсы на Coursera, затем пройти внутреннюю программу обучения и только после этого перейти к основному этапу подготовки.

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

В EPAM ещё есть возможность присоединиться к внутренним программам наставничества, которые предоставляют все необходимые ресурсы для подготовки к экзамену (учебные материалы, полезные ссылки и обзоры реальных случаев). Я бы также посоветовал присоединиться к дополнительным онлайн-сеансам под руководством наставников, чтобы получить более профессиональные идеи и советы.

Секреты успеха: ключевые принципы, которые помогут получить желаемые сертификаты

Ты гуру сертификации и профессиональный мотиватор для многих коллег. В чем твой секрет? Как управлять своим рабочим временем, чтобы сбалансировать проектную и непроектную деятельность?

Навыки тайм-менеджмента и планирования играют решающую роль, и это не так сложно, как вы думаете. С этим справится любой. Начните со стратегического планирования, а затем откалибруйте шаги. Правило простое: если вы не ставите цели и не стремитесь к их достижению, вы рискуете потратить месяцы и даже годы на второстепенные задачи.

Также очень выгодно соответствовать ритму программы, в которой вы участвуете. Например, в одно время мне потребовалось 9 месяцев, чтобы завершить свои программы сертификации Azure, GCP и Kubernetes я сдавал экзамены каждые шесть недель.

Подводя итог, можно сказать, что успешная сдача сертификационного экзамена состоит из трех составляющих, независимо от предмета:

  • Мотивация, основанная на понимании преимуществ, которые сертификация даст для профессионального роста.

  • Продуманный стратегический план развития вашей карьеры на предстоящий период: 5 лет, 3 года, 1 год или меньше.

  • План подготовки (желательно разработанный заранее) и график точных шагов в краткосрочной перспективе. Это действительно важно, если вам нужно выполнять несколько задач параллельно.

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

Тем, кто все ещё сомневается, с чего начать изучение облачных технологий, я бы порекомендовал начать с основных принципов работы с облаком, которые описывают, что такое облако и ключевые принципы работы с ним. Затем вы можете решить, какое облако лучше соответствует вашим амбициям.

Двигайтесь вперед и никогда не останавливайтесь на пути к своей мечте!

Подробнее..

Искусственный интеллект и рентген помогают распознавать многие проявления COVID-19

24.03.2021 10:15:26 | Автор: admin

Технология Lunit помогает врачам во многих странах выявлять болезнь, распределять пациентов и контролировать их лечение.

Цифровой диагностический инструмент, который использует искусственный интеллект и облачные вычисления для точного считывания огромного количества рентгеновских снимков грудной клетки, получая результат быстрее, чем рентгенолог, помогает врачам выявлять болезнь, распределять пациентов с COVID-19 и контролировать их лечение.

Южнокорейский рентгенолог Кю-мок Ли говорит, что средства быстрого анализаLunit INSIGHT CXRпозволяют быстро идентифицировать то, что он называет многими обличиями COVID-19, а это дает возможность ускорить лечение пациентов и ограничить передачу инфекции.

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

Медицинский работник использует технологию Lunit в Бразилии. Фото: LunitМедицинский работник использует технологию Lunit в Бразилии. Фото: Lunit

Поэтому больницы, скрининговые центры и клиники во многих странах при обследовании пациентов с подозрением на COVID-19 все чаще обращаются к помощи искусственного интеллекта для быстрого и точного анализа рентгеновских снимков груди.

Алгоритмы Lunit обучены анализировать рентгеновские снимки и изначально могли обнаруживать признаки 10 основных заболеваний грудной клетки, включая рак, с точностью 97-99%.

Когда разразилась пандемия, разработчики быстро адаптировали технологию для распознавания признаков COVID-19, включая пневмонию, которая часто возникает у инфицированных пациентов.

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

Ли со своей командой рентгенологов присоединился к борьбе с COVID-19 около года назад, когда первая волна накрыла Сеул.

Сначала они работали на базе импровизированного общественного лечебного центра при крупной городской больнице, где число заболевших росло лавинообразно. В разгар эпидемии тысячи людей ежедневно сдавали мазки и проходили тестирование.

Тогда, как и сейчас, врачам требовались точные и быстрые способы выявления инфицированных пациентов и определения стадии заболевания, чтобы принимать решения об изоляции и лечении.

Пациенты с подозрением на COVID-19 могут иметь самые разные симптомы различной интенсивности. У некоторых есть характерные признаки, такие как кашель, жар, утомляемость, ломота и боли. У одних заболевание проходит в легкой форме, у других в тяжелой, у третьих совсем бессимптомно.

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

Кроме Южной Кореи, эту технологию стали применять в Таиланде, Индонезии, Мексике, Италии и Франции. В тяжело пострадавшей Бразилии крупная группа медучреждений использует это решение для анализа рентгеновских снимков грудной клетки пациентов с легким течением COVID-19. Медики могут быстрее и эффективнее распределять пациентов, когда заболевших много, а рентгенологов мало.

(Изображение: Lunit)(Изображение: Lunit)

Рентгеновские снимки могут быть только черно-белыми, поэтому некоторые повреждения не заметны человеческому глазу. Преимущество решения Lunit в том, что пораженные участки выделяются ярким цветом.

Технология Lunit помогает не только врачам экспертам в чтении рентгеновских изображений, но и тем, у кого нет обширных знаний в области рентгенологии. Это оказалось ценным во время пандемии.

В борьбе с COVID-19 участвуют врачи из разных областей, таких как ортопедия, психиатрия и семейная медицина. Они не изучали рентгенологию, поэтому их умение читать рентгеновские снимки ограничено, говорит Ли.

Рентгеновские снимки могут быть только черно-белыми, поэтому некоторые повреждения не заметны человеческому глазу. Преимущество решения Lunit в том, что пораженные участки выделяются ярким цветом, что делает их более заметными.

Это помогает медперсоналу принимать обоснованные решения. Но судьба пациента находится не только в руках искусственного интеллекта. Выявленные технологией случаи отслеживаются, а результаты дважды проверяются врачами.

Ли говорит, что масштаб обработки и точность технологии Lunit помогают разгрузить занятых рентгенологов.

Рентгеновский снимок это сжатая двухмерная визуализация трехмерных структур человеческого тела. Органы и структуры на снимках неизбежно накладываются друг на друга, из-за чего человеческий глаз может не заметить нарушения, сказал он.

Реальность, с которой сталкиваются рентгенологи, особенно в Корее, такова, что невозможно тратить много времени на изучение каждого снимка, поскольку их сотни и тысячи каждый день.

Рентгенолог использует технологию Lunit в больнице Сеульского национального университета в Южной Корее. Фото: LunitРентгенолог использует технологию Lunit в больнице Сеульского национального университета в Южной Корее. Фото: Lunit

Используя облачные вычислительные мощности Microsoft Azure, технология Lunit создает тепловые карты, на которых показаны обнаруженные поражения. Она также ранжирует аномалии, оценивая вероятность того, что обнаруженное поражение требует внимания рентгенолога.

Даже опытные специалисты из-за напряжения могут упускать важные детали. Ли вспоминает недавний случай, когда алгоритмы Lunit обнаружили связанное с COVID-19 поражение в легком пациента, которое не заметили врачи.

Если бы оно осталось незамеченным и его не лечили, болезнь у этого пациента перешла бы в гораздо более серьезную форму и потребовалась госпитализация. Поражение обнаружили на ранней стадии, и это в корне изменило ситуацию, говорит Ли.

По словам Ли, рентгенография грудной клетки по-прежнему лишь дополняет более точное, но гораздо более медленноетестирование полимеразной цепной реакциина COVID. Но решение Lunit помогло остановить вспышку.

Программное обеспечение Lunit постоянно совершенствуется, с его помощью проанализировано уже более 6,5 млн рентгеновских снимков грудной клетки в более чем 80 странах.

Данные, собранные при постановке диагнозов, используются также для исследований и обучения. Конфиденциальность пациента защищена, поскольку вся информация, по которой можно идентифицировать его, удаляется.

Технология Lunit получила признание благодаря исследованиям, опубликованным в крупных рецензируемых журналах, таких как Radiology, Lancet Digital Health, JAMA Network Open, Clinical Infectious Diseases и других.

Обеспечивая более точную, эффективную и своевременную диагностику заболеваний грудной клетки,LunitINSIGHTCXRпомогает снизить нагрузку на медицинских специалистов, чтобы они могли принести больше пользы пациентам.

Компания Lunit была основана в 2013 году, чтобы сделать медицину, основанную на искусственном интеллекте и данных, новым стандартом лечения.

В первую очередь мы сосредоточены на борьбе с раком, одной из основных причин смерти во всем мире, говорит генеральный директор Lunit Брэндон Су Мы разрабатываем решения на основе искусственного интеллекта для точной диагностики и лечения, чтобы ставить пациентам правильный диагноз по разумной цене и подбирать подходящее лечение.

Обеспечивая более точную, эффективную и своевременную диагностику заболеваний грудной клетки, Lunit INSIGHT CXR помогает снизить нагрузку на медицинских специалистов. Благодаря этому они могут принести больше пользы пациентам не только в сложных обстоятельствах, таких как нынешняя пандемия, но и в обычной клинической работе.

Тем временем компания добилась значительных успехов в диагностике других заболеваний с помощью искусственного интеллекта. Например, согласно недавним исследованиям, другое решение, которое называетсяLunit INSIGHT MMG, не уступает среднему рентгенологу в точности обнаружения рака груди при маммографии.

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

Подробнее..

Учебный день Microsoft основы работы с данными

09.03.2021 10:13:46 | Автор: admin

22 марта и 23 марта, 11.00-14.20 (GMT+3)

Изучите основные концепции баз данных в облачной среде. Присоединяйтесь к нам на мероприятии Microsoft Azure Virtual Training Day: основы данных, чтобы получить базовые знания об облачных сервисах обработки данных. Изучите предложения для работы с реляционными и нереляционными данными, а также решения для аналитики больших данных и современных хранилищ данных в Azure.

Подробности и регистрация.

Посетите это учебное мероприятие, чтобы:

  • Изучить роли, задачи и обязанности, связанные с управлением данными в облачной среде.

  • Получить основные навыки работы с облачными сервисами данных в Azure, используемыми для обработки реляционных и нереляционных данных, включая подготовку и развертывание реляционных и нереляционных баз данных.

  • Изучить средства обработки данных, используемые при создании решений для аналитики данных, включая Azure Synapse Analytics, Azure Databricks и Azure HDInsight.

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен Основы работы с данными в Microsoft Azureбесплатно.

Вот, что мы вам предлагаем:

Часть 1

Часть 2

Введение

Введение

Изучите основные концепции данных

Изучите нереляционные данные в Azure (сегмент 1 из 2)

Перерыв 10минут

Перерыв 10минут

Изучите реляционные данные в Azure (сегмент 1 из 2)

Изучите нереляционные данные в Azure (сегмент 2 из 2)

Перерыв 10минут

Перерыв 10минут

Изучите реляционные данные в Azure (сегмент 2 из 2)

Изучите средства аналитики современных хранилищ данных в Azure

Завершающий сеанс вопросов и ответов

Завершающий сеанс вопросов и ответов

Подробности и регистрация.

Подробнее..

2 крутых вебинара по Microsoft Azure в апреле

15.04.2021 10:21:55 | Автор: admin

Привет, Хабр! Сегодня у нас последняя в этом месяце подборка крутых мероприятий. В этот раз по Azure. Заглядывайте под кат!

1. День виртуального обучения Microsoft Azure: основы

19-20 апреля, на русском19-20 апреля, на русском

Чтобы представить будущее, вам необходимо понять, какие возможности перед вами и вашей организацией открывает облако сегодня. В рамках этого вводного курса День виртуального обучения Microsoft Azure: основы рассказывается о концепциях, моделях и сервисах облачных вычислений. Рассматриваются такие темы, как публичное, частное и гибридное облако, а также инфраструктура как услуга (IaaS), платформа как услуга (PaaS) и программное обеспечение как услуга (SaaS).

Во время обучения вы узнаете, как:

  • начать работать с Azure;

  • интегрировать Azure с существующими сетями;

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

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен по основам Microsoft Azureбесплатно.

Подробности и регистрация.

2. DevOps с GitHub

21-22 апреля, с субтитрами на русском21-22 апреля, с субтитрами на русском

Продвигайте свою карьеру, имея прочный фундамент в DevOps. Посетите это бесплатное обучение под руководством инструктора, предназначенное для разработчиков и ИТ-специалистов. Узнайте, как использовать GitHub для управления рабочими процессами и сокращения времени цикла. Получите пошаговые инструкции по добавлению элементов управления качеством и безопасностью в процесс сборки, а также по улучшению уведомлений и ответов для обеспечения согласованной и повторяемой автоматизации.

Изучите эти темы на мероприятии:

  • Использование GitHub для улучшения совместной работы и производительности команды

  • Интеграция средств контроля безопасности и качества в конвейеры автоматизации, непрерывной интеграции и непрерывной доставки (CI / CD) и среды выполнения

  • Внедрение передовых методов, чтобы помочь удаленным командам разработчиков повысить отказоустойчивость программного обеспечения

Подробности и регистрация.

Подробнее..

2 крутых Azure-вебинара второй половины мая

12.05.2021 10:23:58 | Автор: admin

Привет, Хабр! В этот раз у нас немного разбитый анонс мероприятий месяца (в начале мая рассказали про ранние мероприятия точечно, теперь делаем небольшую подборку), все из-за праздников. В этой статье у нас 2 эвента: один полностью на русском, второй с субтитрами. Заглядывайте под кат!

1. Взаимодействие DevOps и GitHub

19-20 мая, на английском с субтитрами на русском19-20 мая, на английском с субтитрами на русском

Продвигайте свою карьеру, имея прочный фундамент в DevOps. Посетите это бесплатное обучение под руководством инструктора, предназначенное для разработчиков и ИТ-специалистов. Узнайте, как использовать GitHub для управления рабочими процессами и сокращения времени цикла. Получите пошаговые инструкции по добавлению элементов управления качеством и безопасностью в процесс сборки, а также по улучшению уведомлений и ответов для обеспечения согласованной и повторяемой автоматизации.

Изучите эти темы на мероприятии:

  • Использование GitHub для улучшения совместной работы и производительности команды.

  • Интеграция средств контроля безопасности и качества в конвейеры автоматизации, непрерывной интеграции и непрерывной доставки (CI / CD) и среды выполнения.

  • Внедрение передовых методов, чтобы помочь удаленным командам разработчиков повысить отказоустойчивость программного обеспечения.

Подробности и регистрация.

2. Основы работы с данными

24-25 мая, на русском24-25 мая, на русском

Изучите основные концепции баз данных в облачной среде. Присоединяйтесь к нам на мероприятии Microsoft Azure Virtual Training Day: основы данных, чтобы получить базовые знания об облачных сервисах обработки данных. Изучите предложения для работы с реляционными и нереляционными данными, а также решения для аналитики больших данных и современных хранилищ данных в Azure.

Посетите это учебное мероприятие, чтобы:

  • Изучить роли, задачи и обязанности, связанные с управлением данными в облачной среде.

  • Получить основные навыки работы с облачными сервисами данных в Azure, используемыми для обработки реляционных и нереляционных данных, включая подготовку и развертывание реляционных и нереляционных баз данных.

  • Изучить средства обработки данных, используемые при создании решений для аналитики данных, включая Azure Synapse Analytics, Azure Databricks и Azure HDInsight.

После завершения этого бесплатного обучающего курса вы сможете сдатьсертификационный экзамен Основы работы с данными в Microsoft Azureбесплатно.

Подробности и регистрация.

Подробнее..

Как мы построили гибридное облако и сняли с ручника разработку

25.05.2021 10:11:06 | Автор: admin

Любому бизнесу, особенно крупному, хочется максимально оптимизировать внутренние процессы. В частности, те, которые касаются ИТ. Довольно часто мы встречаем ситуации, когда сугубо цифровые задачи в силу устаревших регламентов или страха сломать работающую систему решаются по старинке, вручную.

Ингосстрах обратилась к нам со следующей задачей: из-за огромного количества ручных операций параметр time-to-market их цифровых продуктов в некоторых случаях был достаточно высоким. Это не устраивало никого: ни разработчиков, ни тестировщиков, ни бизнес. Требовалось как можно сильнее сократить time-to-market, не стесняясь в ресурсах и средствах.

Слабым звеном оказался процесс подготовки инфраструктуры для разработки и тестирования. Cоздание парочки виртуальных машин и нескольких сервисов могло затянуться на долгие недели. При этом компания уже несколько лет внедряет практики DevOps, то есть гибкость, непрерывность доставки приложений для неё чрезвычайно важны.

Кроме того, заказчику было важно сохранить возможность использования и собственных (локальных) ресурсов, и Microsoft Azure. А вишенка на торте (о которой мы еще поговорим далее) создать функционал для оценки стоимости всех используемых ресурсов. Это было необходимо, чтобы группы разработки могли планировать внутренние бюджеты на ИТ и действовать более эффективно.

Подготовка к проекту

Первым делом мы изучили потребности заказчика. Необходимо было понять, какие ресурсы (приложения, ОС и пр.) используются компанией, как они настраиваются и для чего служат. Чаще всего мы встречаемся с полуручными-полуавтоматическими сценариями: ВМ разворачиваются из шаблона и настраиваются вручную. В ряде случаев заказчики используют скрипты автоматизации настройки, чтобы получить на выходе полностью функциональную ОС, иногда даже с готовым набором ПО. В Ингосстрахе было и то, и другое.

Выбор решения: open source против корпораций

После обследования, еще до подготовки окончательного ТЗ, мы составили для заказчика проектное решение. Требовалось согласовать его со службой безопасности а это процесс не из легких. Много времени ушло на то, чтобы убедить суровых безопасников в том, что облако не угрожает существующей инфраструктуре. Мы нарисовали схемы обмена трафиком, сетевого взаимодействия. Описали, как всё это будет защищаться и контролироваться. Скажем прямо, пришлось попотеть. Изначально мы предложили заказчику два возможных подхода:

  • open source или OpenStack с последующей доработкой;

  • сугубо коммерческое решение от VMware.

Первое предложение отсеклось сразу же. OpenStack это как набор для моделирования: гибко, интересно, но требует определенной сноровки. Иначе заляпаешь стол краской и склеишь пальцы, а модель будет больше похожа не на вертолет Apache, а на пластмассовый комочек.

Иными словами, проект на OpenStack сопряжен с большими усилиями, не лишен риска, а по итогу вынудил бы заказчика выращивать собственных специалистов или прибегать к услугам партнеров в части поддержки/администрирования проекта.

Популярное вендорское решение можно сравнить с фирменным Lego: есть продукт, есть качественная поддержка производителя. Компоненты совместимы между собой и конечная функциональность не вызывает вопросов.

Как строился гибрид

На первом этапе инфраструктура не очень большая, но это компенсируется количеством работающих на ней сервисов. Здесь мы развернули все необходимое для облака, в том числе ряд продуктов vRealize: Automation, Operations Manager, Log Insight и NSX-T для сети.

Позже сюда добавился NSX Cloud: он позволяет удобно управлять сетями в публичных облаках, в том числе и в Azure, через NSX. Мы подключили подписку заказчика Azure к vRealize Automation и vRealize Operations Manager последнее нужно, чтобы отслеживать потребление ресурсов.

Общая архитектура гибридного облака

Чтобы обеспечить повышенный уровень сетевой и информационной безопасности, мы использовали CheckPoint. Файрвол заказчика интегрирован с облаком сразу в трех точках. Трафик инспектируется:

  • между виртуальными машинами;

  • на выходе из облака;

  • на входе в сеть заказчика.

На стороне облака развернуты виртуальные аплайнсы для инспекции трафика.

Что касается связанности сегментов облака и локальных машин здесь существует два глобальных варианта. Первый оверлейные сети через NSX. Этим путем мы пойти не смогли, так как между площадкой заказчика и Azure стоит VPN от CheckPoint.

Второй вариант подразумевает, что трафик между облаком и локальной площадкой будет идти через упомянутый выше VPN. При этом трафик внутри локальной площадки и внутри облака (по умолчанию) ходит через оверлейные сети. Если локальной виртуальной машине нужно отправить трафик в облако, он посылается по VPN и снова оказывается в оверлей-сети, но уже на стороне Azure.

Если говорить о компонентах vRealize, у заказчика задействовано всё. Каждый компонент выполняет собственную функцию.

  • Automation оркестрация и автоматизация, плюс портал самообслуживания;

  • Operations Manager помимо мониторинга сервисов и использования ресурсов, он осуществляет постбиллинг, определяет стоимость потребленных ресурсов в рамках проекта или конкретного сервиса.

  • Log Insight собирает логи/журналы со всех компонентов инфраструктуры и передает логи аудита и аутентификации пользователей всем системам заказчика. Вход-выход, изменения конфигурационных параметров эти данные агрегируются в Log Insight, обрабатываются, очищаются и передаются в SIEM службы безопасности.

В облаке присутствует не только vRealize, но и Ansible для реализации подхода инфраструктура как код. Ansible для первичной настройки ОС, добавления нужных пользователей, установки ПО и настройки всех сервисов. Помимо повышения гибкости и колоссальных возможностей по глубокой настройке ОС и приложений, а также интеграции с другими подсистемами заказчика, Ansible позволяет разделить процессы создания и настройки ВМ. Что позволяет использовать наработки (плейбуки) для разных задач, в том числе, на прямую не связанных с облаком. Или разделить между специалистами или даже отделами задачи по сопровождению облака и автоматизации управления инфраструктурой, как это происходит в Ингосстрах.

Сервисы

Сервисы это очень немалый пласт нашей работы. В разработке участвовали преимущественно наши специалисты, но в некоторых ситуациях подключались и сотрудники VMware. Заказчик приобретал часы их работы, чтобы мы могли совместно писать и отлаживать сервисы.

Каталог сервисов облака

Надо сказать, кое-что стало для нас серьезным челленджем: во время написания ТЗ актуальной была версия vRealize Automation 7.6. К моменту, когда пришло время приступать к работе, появилась новая версия 8.

Минутка истории: вплоть до седьмой версии vRealize Automation развивался так же, как и любой другой продукт. Одни функции добавлялись, другие переходили в статус deprecated и заменялись более совершенными. Фактически, это решение VMware еще в 2012 году приобрела у компании DynamicOps и развивала его под своим брендом. 8-я версия vRA это не логическое продолжение старой версии, а принципиально новый внутри продукт. Да, он стал функциональнее и гибче, но часть функций, присутствовавших в 7.6, попросту исчезла.

Заказчик хотел внедрять именно новую версию. Это вполне логично: использовать продукт, который скоро станет end of life не очень хорошая затея. Но это вызвало массу проблем. Нам пришлось принять на себя некоторые риски, дорабатывать и дописывать недостающие модули своими силами.

Биллинг

Первый серьезный модуль, с которым была проблема, это биллинг. Перед нами стояла задача получить прозрачные системы пред- и постбиллинга.

Когда пользователь заказывает услугу из каталога из каталога самообслуживания, есть возможность увидеть её примерную стоимость в день, месяц и т.д. Проблема в том, что эти функции работают только для локальной площадки. Текущая версия vRA не дает этого функционала в публичном облаке. Обещается, что в одном из будущих обновлений этот функционал добавят, но пока что его даже в road map нет.

Заказчику было важно, чтобы пользователь при заказе мог оценить бюджет. Как раз здесь нам очень пригодился опыт команды VMware: вместе с ними мы разработали модуль, который осуществляет предбиллинг и постбиллинг.

Предбиллинг позволяет в момент заказа сервиса рассчитать стоимость ресурсов (это может быть ВМ, MS SQL Server и т.п.) как на локальной площадке, так и в облаке. Изначально vRA не позволял делать расчеты для Azure. Конечно, можно было бы докупить SaaS-продукт CloudHealth, который позволяет считать постбиллинг для Azure. Однако он все равно не обеспечивает функционал предбиллинга, да и по бюджету уже не проходил. Пришлось дописывать.

По просьбе заказчика мы реализовали сразу три варианта расчета в одной и той же форме отображается стоимость в день, месяц и год. Постбиллинг для Azure также был невозможен.

Мы сделали так, чтобы можно было рассчитывать не только базовые вещи а-ля IaaS, но и произвольные.

Биллинг работает по двум классическим схемам: Pay-as-You-Go и prepaid.

Еще важный момент с точки зрения инженерной эстетики, о котором хотелось бы сказать, все должно быть единообразно. Поэтому совместно с VMware мы написали единый дашборд и единый механизм пред- и постбиллинга при заказе ресурсов.

Лирическое отступление: с точки зрения читателя вся эта история может выглядеть как пришли, сделали, протестировали, ушли. На самом деле, всё куда интереснее. Облако живет и развивается итеративно. Сначала реализуется самый важный функционал в случае с Ингосстрах это эффективное развертывание виртуальных машин. Затем прочие нужные и полезные вещи. Аппетит приходит во время еды это как раз про облако. Поэтому классические для сейлзов формулы заложим на разработку сто дней, авось, уложимся это уже дурной тон.

Следующие на очереди стандартные для облаков сервисы.

IaaS

Здесь речь идет о развертывании ВМ с определенными ОС и набором базовых настроек. В наборе заказчика присутствуют и различные версии Windows Server, и Linux (CentOS и RedHat).

Используемые версии Windows Server 2019, 2016 и 2012 R2. Часть систем заказчика до сих пор работают в 2012 R2. Это вызвало некоторые накладки: в Azure готовых образов этой ОС нет, т.к. Microsoft больше ее не поддерживает. Пришлось загружать свой образ. Так как речь идет о гибридной модели, сервисы предоставляются зеркально: можно создавать их как внутри локальной площадки, так и в Azure. При заказе пользователь сам определяет площадку размещения.

Дополнительно была реализована автоматическая регистрация в DNS. Соответственно, сразу после создания виртуальная машина становится доступна по DNS-имени.

Что касается развертывания машин здесь возможны два подхода:

  • пользователь сам определяет параметры ВМ CPU, RAM, дисковое пространство;

  • предварительно заданные конфигурации, между которыми может выбирать пользователь.

После обсуждения с заказчиком мы пришли к выводу, что использование заготовленных конфигураций удобнее. Во-первых, можно четче спланировать инфраструктуру. Мы четко знаем, что можно создать 10 машин типа А или, например 5 машин типа Б. Если давать пользователю полную свободу выбора, никакой стандартизации не выйдет. В конфигурации Ингосстраха изменить можно только объем дискового пространства: есть нижняя граница, есть верхняя, есть размер по умолчанию. Единственный нюанс в Azure минимальный объем диска составляет 127 Гб. Соответственно, и на vSphere нам пришлось в целях унификации сделать такой же нижний порог.

Кроме того, по выбору пользователя ОС может быть просто создана, либо сразу же введена в домен корпоративный или произвольный. Это тоже момент автоматизации: не приходится дергать администраторов.

Форма заказа сервиса IaaS

У заказчика в облаке есть три контура безопасности, каждый со своим уровнем защиты: test, dev и prod. Соответственно, тот или иной сервис размещается в своем контуре по выбору заказчика, независимо от того, локальная ли это площадка или Azure.

PaaS

Переходим к PaaS, здесь тоже немало интересных моментов. В основе PaaS лежит IaaS, используются заранее подготовленные ОС. Все Windows-сервисы (SQL, Active Directory, IIS) могут быть развернуты в любой версии этой ОС, которая требуется пользователю. Кроме, разве что, Exchange.

Основная заточка сделана под версию 2012: более свежие версии включают новый функционал, но из соображений обратной совместимости ничего из legacy не удаляется. А если бы мы ориентировались на 2019, не исключено, что пришлось бы писать разные скрипты под разные типы ОС.

Веб-сервер как услуга

Заказчик использует IIS от Microsoft. Он представлен в нескольких вариантах, в том числе есть версия с балансировкой, которая автоматически настраивается на NSX.

Чтобы сильно не углубляться, выделим следующие конфигурации, доступные пользователям:

  • одноузловая конфигурация сервис с IIS.

  • ферма множество веб-серверов IIS.

Пользователь может создать сразу множество серверов IIS и обеспечить балансировку подключений на базе NSX. Можно использовать стандартные порты, можно переопределить их вручную. Всё взаимодействие происходит в веб-интерфейсе.

Active Directory

AD разворачивается как отдельный сервис. Например, пользователь хочет поэкспериментировать. Продуктивный домен для этого использовать запрещено. Зато можно создать собственный домен и хулиганить, как хочешь. Прод не пострадает.

Сервис можно развернуть в двух вариантах:

  • standalone одноузловая конфигурация, когда контроллер домена и DNS совмещены;

  • отказоустойчивая конфигурация два контроллера домена, между которыми в рамках развертывания настроена репликация (и самого домена, и DNS-зон).

СУБД как сервис

  • MS SQL Server можно развернуть по двум типам: standalone и кластерная конфигурация always on, от 2 до 4 узлов. Присутствует возможность выбора версий. Под разные версии СУБД написаны разные скрипты установки.

Exchange как сервис

У заказчика была развернута продуктивная среда Exchange. Для тестовых целей требовалось создать еще одну игрушечную инсталляцию в облаке, конфигурационно идентичную оригинальной, но с меньшим объемом ресурсов.

Казалось бы, зачем нужна вторая почтовая система в рамках облака? У заказчика была конкретная цель тестировать актуальную конфигурацию на предмет установки обновлений, масштабирования и прочих изменений. Мы сделали фактически полную (с точки зрения конфигурации) копию боевой почтовой системы. Важный момент продуктив работал на базе сразу 2-х ЦОДов. Мы сымитировали и это.

Часть дизайна сервиса Exchange

Автоматизация предоставления сервисов

Кроме того, в инфраструктуре присутствует несколько дополнительных сервисов, которые дублируют административный функционал vRealize Automation, но уже для конечных пользователей.

К примеру, чтобы определить область, где пользователь может развертывать ВМ, администратор должен создать проект, назначить ресурсы и выдать пользователю доступы. Заказчику хотелось разгрузить руки администраторов и позволить пользователям через портал самообслуживания самостоятельно создавать проекты. Чтобы не выдавать права администратора направо и налево, необходим был сервис, который перед созданием проекта запрашивал бы аппрув. Пользователи ограничены квотами на количество ВМ, vCPU, RAM и дисковое пространство.

Всего для этой цели используется 4 связанных сервиса:

  • создание проектной области;

  • изменение можно добавлять облачные ресурсы к локальным или увеличивать их пул;

  • удаление если проект больше не нужен, его можно удалить в целях экономии средств;

  • архивация временная деактивация проекта и перенос его на самые бюджетные ресурсы.

Всем, кто задумывается о собственном облаке

В заключение хотелось бы поделиться некоторыми мыслями по итогам проекта:

  • Внедрение частного или гибридного облака это итеративный процесс, в ходе которого всегда возникают мысли, что что-то можно сделать лучше/удобнее.

  • Коммерческий продукт (в нашем случае VMware) это отличная возможность для коммерческих заказчиков быстро увидеть первые результаты от внедрения облака без взращивания собственной экспертизы в течение многих лет.

  • Облако позволяет существенно оптимизировать ИТ-процессы в компании за счет их понимания, переосмысления, описания и только потом уже автоматизации.

  • С облаком можно вести прозрачный учет потребления ресурсов и затрат на них, а также упростить планирование и масштабирование инфраструктуры.

  • Автоматизация, инструменты самообслуживания, возможности интеграции через API позволяют существенно оптимизировать процессы предоставления ресурсов ИТ-инфраструктуры и, как следствие, сократить time-to-market ИТ-продуктов компании как для внутреннего, так и для внешнего потребления.

На этом все! Если у вас есть какие-то вопросы, буду рад пообщаться в комментариях.

Подробнее..

Личный кабинет адаптации сотрудника на Microsoft Power Platform и Microsoft Teams

21.02.2021 02:04:48 | Автор: admin
Всем привет! В одной из прошлых статей я рассказывал, как мы автоматизировали один процесс адаптации сотрудников в компании с использованием платформы Microsoft 365, возможностей Microsoft Power Platform и технологии чат ботов. Сегодня я расскажу о реализации приложения личного кабинета для системы адаптации персонала на базе Microsoft Power Apps и Power Automate. Посмотрим как можно организовать подобное приложение и какие возможности получится в него заложить в рамках общей системы адаптации персонала.

Итак, как мы помним из прошлой статьи, у нас с Вами есть сайт SharePoint Online со списками и библиотеками, для системы адаптации, форма на PowerApps, поток обработки данных на Power Automate и отчеты Power BI. Самое время добавить личный кабинет, в котором сотрудник и/или руководитель видели бы свои задачи на период адаптации и могли их выполнить, осуществив определенные действия.



Создание PowerApps приложения личного кабинета адаптации


Начинаем работу и в первую очередь переходим на страницу редактора Microsoft PowerApps и создаем новое приложение.



Далее, внутри редактора создаем первый экран. Изначально планируем что в приложении будет возможность отображения разных вариантов личных кабинетов в зависимости от принадлежности пользователя к той или иной роли. Чуть позже мы адаптируем данный механизм и сделаем автоматическое определение роли пользователя при открытии приложения, но начнем с экрана авторизации.



На данном экране располагаем две кнопки входа в личный кабинет. Одна ведет на личный кабинет сотрудника, вторая на личный кабинет руководителя. В зависимости от принадлежности пользователя к той или иной группе, кнопка Войти как руководитель может отображаться заблокированной, в случае если текущий пользователь не является руководителем. Далее делаем следующий экран. Это будет экран сотрудника, где будут отображаться основные данные о собственном профиле, а также перечень мероприятий, который необходимо пройти в период испытательного срока.



Как можно заметить, визуально данный экран разбит на две основные области: верхняя область с основными сведениями о себе и нижняя область с запланированными мероприятиями. Мероприятия отображаются с помощью визуального компонента Галерея, все остальные объекты это кнопки и текстовые области. Также на экране отображается кнопка Help для перехода на страницу справочных сведений и кнопки перехода к файлам чек-листа и задач на испытательный срок, о которых расскажу немного позже.

Для новичка экран готов, здесь у него есть максимум необходимой информации на испытательный срок. Теперь перейдем к созданию экрана руководителя, с ним будет немного сложнее, потому что руководитель должен иметь возможность выполнять свои задачи в рамках личного кабинета.

Итак, делаем первый экран личного кабинета руководителя. На нем руководитель должен видеть перечень своих новичков и иметь возможность посмотреть основные сведения по ним.



На данном экране руководитель может посмотреть основные сведения по своим сотрудникам, а также перейти к справочной информации с помощью кнопки Help. Помимо этого, есть возможность поиска информации и плюс ко всему можно попасть на дополнительный экран с задачами по выбранному сотруднику, нажав кнопку Задачи.



На этом экране руководитель может увидеть свои задачи на период испытательного срока по выбранному сотруднику, а также выполнить различные операции. В рамках данной системы заложено два действия Загрузить файл (для чек-листа и задач на испытательный срок соответственно) и Отметить мероприятие выполненным. Каждое из действий вызывает свой вариант диалогового окна, например кнопка Загрузить файл вызывает вот такое окно:



При этом все остальные кнопки блокируются и нет возможности осуществить какую-либо еще операцию до тех пор, пока либо не будет приложен файл, либо не закроем данное окно. Кнопка Подтвердить изначально заблокирована, но становится активной, как только указан добавляемый файл.



Второй вариант операции это Отметить выполненным и диалог выглядит следующим образом:



Что происходит при нажатии на кнопку Подтвердить? Всё очень просто осуществляется запуск Power Automate потока с пробросом ключевых параметров.



В зависимости от этих параметров в Power Automate потоке мы понимаем, что именно нам нужно сделать и какую информацию сохранить. То есть для загрузки файла и для отметки о выполнении используется один и тот же поток, но с разными входными параметрами.



Причем, после того как файл чек-листа или задач на испытательный срок добавлен и загружен, кнопка моментально трансформируется из кнопки загрузки в кнопку просмотра загруженного файла.



Личный кабинет руководителя готов. И остался еще один вариант личного кабинета, так называемая суперпозиция, когда новичок является руководителем и у него могут быть такие же новички на испытательном сроке. Объединяем два экрана и делаем небольшое меню навигации.



С помощью меню навигации можно моментально переключаться между экраном новичка и экраном руководителя.



Кстати, почтовый адрес тоже кликабельный и позволяет сразу же вызвать создание нового письма новичку.



Помните, в самом начале я говорил, что чуть позже мы займемся первым экраном авторизации и, может быть полностью откажемся от него? Настало это время. Этот экран и правда не очень нужен, если мы можем автоматически проверять текущего пользователя и вычислять к какой роли он относится. Идем в событие OnStart нашего приложения и пишем проверки.



В зависимости от того является наш пользователь сотрудником, руководителем или два-в-одном мы сразу же при запуске приложения перенаправляем пользователя на нужный экран минуя экран авторизации внутри приложения. Приложение готово. Осталось встроить его в Microsoft Teams.



В заключение хочу сказать, что Microsoft Power Platform обладает обширным набором возможностей, которые помогают создать приложения для ваших целей не только с точки зрения функциональности, но и дает возможности для применения определенных дизайнерских элементов, позволяющих сделать интерфейс приятным и красивым. В следующих статьях разберем еще больше различных решений на базе Microsoft Power Platform. Всем хорошего дня и спасибо за внимание!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru