Microsoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
13. DDD in Real Life
Ну у нас агрегат рут из одного
баундед контекста ссылается
на ентити, которая относится к
другому контексту, и мы
добавили антикорапшн лейер,
а потом...
Какой баундед
контекст?!? Вы же
разрабатываете сайт –
визитку!!!
В-И-З-И-Т-К-У!!!
Вам даже база
данных не нужна!!
17. Nest Models Into Controllers
[Route("api/[controller]")]
public class SampleDataController : Controller
{
[HttpGet("[action]")]
public IEnumerable<WeatherForecast> WeatherForecasts()
{
// ....
}
public class WeatherForecast
{
// ... fields
}
}
18. Nest AutoMapper Profiles Into Models
public class AccountViewModel
{
// ... properties
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Account, AccountViewModel>();
}
}
}
19. Магия
Просто не учите физику в школе,
и вся ваша жизнь
будет наполнена чудесами и
волшебством
25. Проблемы / особенности ARM
Не всегда работает с первого раза, возможны
конфликты, нужно повторять
Дефолтные шаблоны могут быть дорогими, но их
можно оптимизировать
27. Из студии, правой кнопкой
Быстро
Нельзя быть уверенным, что имено залилось
(поменял код, не вкомитил / не пушнул)
Нельзя воспроизвести
28. CI / CD Сервер
Унифицирует процесс сборки и развертывания
Скрипты предпочтительнее, чем UI инструменты
Можно воспроизвести с любого места
Быстрый старт для новичков
39. Не храним с кодом
Все берем из конфига .NET Core
Явки / пароли можем генерить в ARM и сразу
передавать
Можем добавить Azure Key Vault для секретов
Можем переконфигурить на лету через app settings
Нужно следить за очередностью добавления
configuration sources
40. How to Add Key Vault
private static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(b =>
{
var configurationRoot = b.Build();
var vaultName = configurationRoot["Vault:Name"];
if (!String.IsNullOrEmpty(vaultName))
{
b.AddAzureKeyVault(
$"https://{vaultName}.vault.azure.net/",
configurationRoot["Vault:AppId"],
configurationRoot["Vault:Secret"]);
}
})
....
46. Application Insights
Мониторинг и клиентов и сервисов
Бесплатное (до определенный пределов)
Интеграция с популярными логгерами
Интеграция со студией
56. Консоль вместо UI
Студия тормозит
Портал глючит
Можно выбирать Powershell или azure cli
Скрипт можно всегда сохранить и переиспользовать
или поделиться