Создание реальных облачных приложений с помощью AzureBuilding Real-World Cloud Apps with Azure

Майк Уоссон, Рик Андерсон (, том Dykstra)by Mike Wasson, Rick Anderson, Tom Dykstra

Скачивание решения ИТ-проекта или Загрузка электронной книгиDownload Fix It Project or Download E-book

В этой электронной книге описывается подход, основанный на шаблонах, для создания реальных облачных решений.This e-book walks you through a patterns-based approach to building real-world cloud solutions. Шаблоны применяются к процессу разработки, а также к методикам архитектуры и программирования.The patterns apply to the development process as well as to architecture and coding practices.

Содержимое основано на презентации, разработанной Скотт Гатри (, и доставляется ИТ-специалистом на конференции для норвежских разработчиков (NDC) в июне 2013 (часть 1, часть 2) и в Microsoft Tech Ed австралии в сентябре, 2013 (часть 1, часть 2).The content is based on a presentation developed by Scott Guthrie and delivered by him at the Norwegian Developers Conference (NDC) in June of 2013 (part 1, part 2), and at Microsoft Tech Ed Australia in September, 2013 (part 1, part 2). Многие другие были обновлены и дополнены содержимым при переходе из видео в письменную форму.Many others updated and augmented the content while transitioning it from video to written form.

Целевая аудиторияIntended Audience

Разработчикам, которые интересуются разработкой для облака, в том числе переходим в облако или не знакомы с разработкой в облаке, будет представлен краткий обзор наиболее важных концепций и рекомендаций, которые необходимо знать.Developers who are curious about developing for the cloud, considering a move to the cloud, or are new to cloud development will find here a concise overview of the most important concepts and practices they need to know. Основные понятия показаны в конкретных примерах, а в каждой главе содержатся ссылки на другие ресурсы для получения более подробных сведений.The concepts are illustrated with concrete examples, and each chapter links to other resources for more in-depth information. Примеры и ссылки на дополнительные ресурсы предназначены для Microsoft Frameworks and Services, но эти принципы также применяются и к другим платформам веб-разработки и облачным средам.The examples and the links to additional resources are for Microsoft frameworks and services, but the principles illustrated apply to other web development frameworks and cloud environments as well.

Разработчики, которые уже разрабатывают для облака, могут найти здесь идеи, которые помогут сделать их более успешными.Developers who are already developing for the cloud may find ideas here that will help make them more successful. Каждую главу серии можно читать независимо друг от друга, чтобы можно было выбирать интересующие вас темы.Each chapter in the series can be read independently, so you can pick and choose topics that you're interested in.

Все, кто наблюдался с Скотт Гатри (для создания реальных облачных приложений с помощью презентации Azure и хочет получить дополнительные сведения и обновленную информацию, найдет это здесь.Anyone who watched Scott Guthrie's Building Real World Cloud Apps with Azure presentation and wants more details and updated information will find that here.

Шаблоны разработки в облакеCloud development patterns

В этой электронной книге объясняется, как тринадцать рекомендованные шаблоны для разработки в облаке.This e-book explains thirteen recommended patterns for cloud development. "Шаблон" используется здесь в широком смысле, что означает рекомендуемый способ сделать следующее: как лучше всего разрабатывать, проектировать и программировать облачные приложения."Pattern" is used here in a broad sense to mean a recommended way to do things: how best to go about developing, designing, and coding cloud apps. Это ключевые шаблоны, которые помогут Вам «попадать в «смолу успеха», если вы их проберете.These are key patterns which will help you "fall into the pit of success" if you follow them.

  • Автоматизируйте все.Automate everything.

    • Используйте скрипты для повышения эффективности и снижения числа ошибок в повторяющихся процессах.Use scripts to maximize efficiency and minimize errors in repetitive processes.
    • Демонстрация. сценарии управления Azure.Demo: Azure management scripts.
  • Система управления версиями.Source control.

    • Настройка структуры ветвления в системе управления версиями для упрощения рабочего процесса DevOps.Set up branching structure in source control to facilitate DevOps workflow.
    • Демонстрация: Добавление скриптов в систему управления версиями.Demo: add scripts to source control.
    • Демонстрация: Обеспечьте защиту конфиденциальных данных от системы управления версиями.Demo: keep sensitive data out of source control.
    • Демонстрация. использование Git в Visual Studio.Demo: use Git in Visual Studio.
  • Непрерывная интеграция и доставка.Continuous integration and delivery.

    • Автоматизируйте сборку и развертывание с каждым возвратом системы управления версиями.Automate build and deployment with each source control check-in.
  • Рекомендации по веб-разработке.Web development best practices.

    • Сохранение состояния веб-уровня.Keep web tier stateless.
    • Демонстрация: масштабирование и автоматическое масштабирование в веб-приложениях в службе приложений Azure.Demo: scaling and auto-scaling in Web Apps in Azure App Service.
    • Избегайте состояния сеанса.Avoid session state.
    • Используйте CDN с откатом, если сеть CDN недоступна.Use a CDN with a fallback when the CDN is unavailable.
    • Используйте асинхронную модель программирования.Use asynchronous programming model.
    • Демонстрация: async в ASP.NET MVC и Entity Framework.Demo: async in ASP.NET MVC and Entity Framework.
  • Единый вход.Single sign-on.

    • Введение в Azure Active Directory.Introduction to Azure Active Directory.
    • Демонстрация. Создание приложения ASP.NET, использующего Azure Active Directory.Demo: create an ASP.NET app that uses Azure Active Directory.
  • Варианты хранения данных.Data storage options.

    • Типы хранилищ данных.Types of data stores.
    • Выбор правильного хранилища данных.How to choose the right data store.
    • Демонстрация: база данных SQL Azure.Demo: Azure SQL Database.
  • Стратегии секционирования данных.Data partitioning strategies.

    • Секционирование данных по вертикали, горизонтали или обоим, чтобы упростить масштабирование реляционной базы данных.Partition data vertically, horizontally, or both to facilitate scaling a relational database.
  • Неструктурированное хранилище BLOB-объектов.Unstructured blob storage.

    • Храните файлы в облаке с помощью службы BLOB-объектов.Store files in the cloud by using the blob service.
    • Демонстрация. Использование хранилища BLOB-объектов в приложении Fix ИТ.Demo: using blob storage in the Fix It app.
  • Разработайте, чтобы выдерживать сбои.Design to survive failures.

    • Типы сбоев.Types of failures.
    • Область сбоя.Failure Scope.
    • Основные сведения об SLA.Understanding SLAs.
  • Мониторинг и данные телеметрии.Monitoring and telemetry.

    • Почему необходимо купить приложение телеметрии и написать собственный код для инструментирования приложения.Why you should both buy a telemetry app and write your own code to instrument your app.
    • Демонстрация: новые Relic для AzureDemo: New Relic for Azure
    • Демонстрация. Регистрация кода в приложении Fix ИТ.Demo: logging code in the Fix It app.
    • Демонстрация. внедрение зависимостей в приложение Fix ИТ.Demo: dependency injection in the Fix It app.
    • Демонстрация. Встроенная поддержка ведения журнала в Azure.Demo: built-in logging support in Azure.
  • Обработка временных сбоев.Transient fault handling.

    • Используйте интеллектуальную логику повтора и возврата, чтобы уменьшить влияние временных сбоев.Use smart retry/back-off logic to mitigate the effect of transient failures.
    • Демонстрация. повторное или обратное отключение в Entity Framework 6.Demo: retry/back-off in Entity Framework 6.
  • Распределенное кэширование.Distributed caching.

    • Повышение масштабируемости и снижение затрат на транзакции базы данных за счет использования распределенного кэширования.Improve scalability and reduce database transaction costs by using distributed caching.
  • Рабочий шаблон, ориентированный на очередь.Queue-centric work pattern.

    • Обеспечение высокой доступности и повышение масштабируемости благодаря слабо связанным веб-и рабочим уровням.Enable high availability and improve scalability by loosely coupling web and worker tiers.
    • Демонстрация. очереди службы хранилища Azure в приложении Fix ИТ.Demo: Azure storage queues in the Fix It app.
  • Дополнительные шаблоны и рекомендации для облачных приложений.More cloud app patterns and guidance.

  • Приложение. Пример приложения для устранения проблемAppendix: The Fix It Sample Application

    • Известные проблемыKnown Issues
    • РекомендацииBest Practices
    • Загрузка, сборка, запуск и развертывание.How to download, build, run, and deploy.

Эти шаблоны применяются ко всем облачным средам, но мы продемонстрируем их с помощью примеров на основе технологий и служб Майкрософт, таких как Visual Studio, Team Foundation Service, ASP.NET и Azure.These patterns apply to all cloud environments, but we'll illustrate them by using examples based on Microsoft technologies and services, such as Visual Studio, Team Foundation Service, ASP.NET, and Azure.

В этой оставшейся части главы представлен пример приложения Fix it и веб-приложения в облачной среде службы приложений Azure, в которой выполняется приложение для устранения проблем.This remainder of this chapter introduces the Fix It sample application and the Web Apps in Azure App Service cloud environment that the Fix It app runs in.

Пример приложения Fix ИТThe Fix it sample application

Большинство снимков экрана и примеров кода, приведенных в этой электронной книге, основаны на приложении Fix ИТ, первоначально разработанном Скотт Гатри ( , чтобы продемонстрировать Рекомендуемые шаблоны и методики разработки облачных приложений.Most of the screen shots and code examples shown in this e-book are based on the Fix It app originally developed by Scott Guthrie to demonstrate recommended cloud app development patterns and practices.

Домашняя страница исправления ИТ-приложения

Пример приложения — это простая система билетов рабочих элементов.The sample app is a simple work item ticketing system. Если вам нужно что-то исправить, вы создаете билет и назначаете его пользователю, а другие пользователи могут войти в систему и просмотреть назначенные им билеты и пометить билеты как завершенные после завершения работы.When you need something fixed, you create a ticket and assign it to someone, and others can log in and see the tickets assigned to them and mark tickets as completed when the work is done.

Это стандартный веб-проект Visual Studio.It's a standard Visual Studio web project. Он основан на ASP.NET MVC и использует базу данных SQL Server.It is built on ASP.NET MVC and uses a SQL Server database. Он может выполняться локально в IIS Express и может быть развернут на веб-сайте Azure для запуска в облаке.It can run locally in IIS Express and can be deployed to a Azure Web Site to run in the cloud. Для входа можно использовать проверку подлинности с помощью форм и локальную базу данных или поставщика социальных сетей, например Google.You can log in using forms authentication and a local database or by using a social provider such as Google. (В дальнейшем мы также покажем, как войти в систему с помощью Active Directory учетной записи организации.)(Later we'll also show how to log in with an Active Directory organizational account.)

Страница входа

После входа вы можете создать билет, назначить его пользователю и отправить картину того, что вы хотите исправить.Once you're logged in you can create a ticket, assign it to someone, and upload a picture of what you want to get fixed.

Создание задачи решения ИТ

Задача создания решения для ИТ

Вы можете отслеживать ход выполнения созданных рабочих элементов, просматривать сведения о билетах и помечать их как завершенные.You can track the progress of work items you created, see tickets assigned to you, view ticket details, and mark items as completed.

Это очень простое приложение с точки зрения возможностей, но вы узнаете, как создать его, чтобы он мог масштабироваться до миллионов пользователей и будет устойчивым к таким возможностям, как сбои баз данных и разрывы подключений.This is a very simple app from a feature perspective, but you'll see how to build it so that it can scale to millions of users and will be resilient to things like database failures and connection terminations. Вы также узнаете, как создать автоматизированный и гибкий рабочий процесс разработки, который позволит вам быстро и лучше повысить эффективность и улучшить работу приложения.You'll also see how to create an automated and agile development workflow, which enables you to start simple and make the app better and better by iterating the development cycle efficiently and quickly.

Веб-приложения в службе приложений AzureWeb Apps in Azure App Service

Облачная среда, используемая для решения проблем ИТ-приложения, — это служба Azure, которая вызывает веб-сайты.The cloud environment used for the Fix It application is a service of Azure that we call Web Sites. Эта служба позволяет разместить собственное веб-приложение в Azure без необходимости создавать виртуальные машины и обновлять их, устанавливать и настраивать службы IIS и т. д. Мы разместите сайт на наших виртуальных машинах и автоматически предпредоставите резервное копирование и восстановление, а также другие службы.This service is a way that you can host your own web app in Azure without having to create VMs and keep them updated, install and configure IIS, etc. We host your site on our VMs and automatically provide backup and recovery and other services for you. Служба веб-сайтов работает с ASP.NET, Node. js, PHP и Python.The Web Sites service works with ASP.NET, Node.js, PHP, and Python. Она позволяет быстро развертывать с помощью Visual Studio, веб-развертывание, FTP, Git или TFS.It enables you to deploy very quickly using Visual Studio, Web Deploy, FTP, Git, or TFS. Обычно это всего несколько секунд между моментом запуска развертывания и тем временем, когда обновление будет доступно через Интернет.It's usually just a few seconds between the time you start a deployment and the time your update is available over the Internet. Все это можно начать, и вы можете увеличивать масштаб по мере роста трафика.It's all free to get started, and you can scale up as your traffic grows.

В фоновом режиме веб-приложения в службе приложений Azure предоставляют множество архитектурных компонентов и функций, которые вам пришлось бы создавать, если вы собираетесь разместить веб-сайт с помощью IIS на собственных виртуальных машинах.Behind the scenes, Web Apps in Azure App Service provides a lot of architectural components and features that you'd have to build yourself if you were going to host a web site using IIS on your own VMs. Один из компонентов — это конечная точка развертывания, которая автоматически настраивает IIS и устанавливает приложение на столько виртуальных машин, сколько требуется для запуска сайта.One component is a deployment end point that automatically configures IIS and installs your application on as many VMs as you want to run your site on.

Служба развертывания

Когда пользователь обращается к веб-сайту, он не попадает в виртуальные машины IIS напрямую, они проходят через подсистемы балансировки нагрузки для запросов приложений (ARR) .When a user hits the web site, they don't hit the IIS VMs directly, they go through Application Request Routing (ARR) load balancers. Их можно использовать с собственными серверами, но преимущество здесь в том, что они настроены автоматически.You can use these with your own servers, but the advantage here is that they're set up for you automatically. Они используют интеллектуальную эвристику, учитывающую такие факторы, как сходство сеансов, глубина очереди в IIS и загрузка ЦП на каждом компьютере, чтобы направить трафик на виртуальные машины, на которых размещается веб-сайт.They use a smart heuristic that takes into account factors such as session affinity, queue depth in IIS, and CPU usage on each machine to direct traffic to the VMs that host your web site.

Балансировщик нагрузки ARR

Если компьютер выходит из строя, Azure автоматически извлекает его из ротации, запускает новый экземпляр виртуальной машины и начинает направление трафика на новый экземпляр — все без времени простоя для приложения.If a machine goes down, Azure automatically pulls it from the rotation, spins up a new VM instance, and starts directing traffic to the new instance -- all with no down time for your application.

Автоматическое восстановление после сбоя компьютера

Все это происходит автоматически.All of this takes place automatically. Вам нужно всего лишь создать веб-сайт и развернуть в нем приложение, используя Windows PowerShell, Visual Studio или портал управления Azure.All you need to do is create a web site and deploy your application to it, using Windows PowerShell, Visual Studio, or the Azure management portal.

Краткое и простое руководство, в котором показано, как создать веб-приложение в Visual Studio и развернуть его на веб-сайте Azure, см. в статье Начало работы с Azure и ASP.NET.For a quick and easy step-by-step tutorial that shows how to create a web application in Visual Studio and deploy it to a Azure Web Site, see Get started with Azure and ASP.NET.

СводкаSummary

В этом вводе представлен список разделов, которые будут рассмотрены в книге, снимки экрана примера приложения и краткий обзор веб-приложений в облачной среде службы приложений Azure.This introduction has provided a list of topics the book will cover, screenshots of the sample application, and a brief overview of the Web Apps in Azure App Service cloud environment. Одно из замечательных преимуществ разработки приложений в и в облаке заключается в том, что можно легко автоматизировать повторяющиеся задачи разработки, такие как создание тестовой среды и развертывание в нем кода.One of the great advantages of developing apps in and for the cloud is that it's easy to automate repetitive development tasks such as creating a test environment and deploying your code to it. Как это сделать, тема в следующей главе.How to do that is the subject of the next chapter.

РесурсыResources

Дополнительные сведения о темах, описанных в этой главе, см. в следующих ресурсах.For more information about the topics covered in this chapter, see the following resources.

Документация.Documentation:

Видеоролики:Videos: